summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkensun <kensun@google.com>2024-01-11 02:28:06 +0000
committerKen Sun <kensun@google.com>2024-01-15 09:34:06 +0000
commitb11d6f92ebb550d35212aa6b33ba7bbee5ab0d01 (patch)
treefb52decf953e6f0776bd1625de779db47f8a97ac
parente39001af454196ee29dabe2ed8dc8dfdb2ccd20d (diff)
downloadbcm4398-android-gs-shusky-5.15-android14-qpr2.tar.gz
In b/318892842, we found that APF update always failed because of this change. Long term fix is to enable WLAN FW to overwrite APF program. For 24Q1, since it's already in cut off stage, we revert this change to restore APF overwrite function. Bug: 318892842 Test: Regression test passed Change-Id: I261d5448b63008abaebe42505ce0f46890d6bf87 Signed-off-by: Ken Sun <kensun@google.com>
-rw-r--r--dhd_linux.c16
-rw-r--r--wl_cfg80211.c8
2 files changed, 16 insertions, 8 deletions
diff --git a/dhd_linux.c b/dhd_linux.c
index 6df22b0..c257308 100644
--- a/dhd_linux.c
+++ b/dhd_linux.c
@@ -2509,6 +2509,9 @@ static int dhd_set_suspend(int value, dhd_pub_t *dhd)
*/
dhd_enable_packet_filter(1, dhd);
#endif /* PKT_FILTER_SUPPORT */
+#ifdef APF
+ dhd_dev_apf_enable_filter(dhd_linux_get_primary_netdev(dhd));
+#endif /* APF */
#ifdef ARP_OFFLOAD_SUPPORT
if (dhd->arpoe_enable) {
dhd_arp_offload_enable(dhd, TRUE);
@@ -2607,6 +2610,9 @@ static int dhd_set_suspend(int value, dhd_pub_t *dhd)
/* disable pkt filter */
dhd_enable_packet_filter(0, dhd);
#endif /* PKT_FILTER_SUPPORT */
+#ifdef APF
+ dhd_dev_apf_disable_filter(dhd_linux_get_primary_netdev(dhd));
+#endif /* APF */
#ifdef PASS_ALL_MCAST_PKTS
allmulti = 1;
for (i = 0; i < DHD_MAX_IFS; i++) {
@@ -17858,6 +17864,16 @@ dhd_dev_apf_add_filter(struct net_device *ndev, u8* program,
DHD_APF_LOCK(ndev);
+ /* delete, if filter already exists */
+ if (dhdp->apf_set) {
+ ret = _dhd_apf_delete_filter(ndev, PKT_FILTER_APF_ID);
+ if (unlikely(ret)) {
+ DHD_ERROR(("%s: Failed to delete APF filter\n", __FUNCTION__));
+ goto exit;
+ }
+ dhdp->apf_set = FALSE;
+ }
+
ret = _dhd_apf_add_filter(ndev, PKT_FILTER_APF_ID, program, program_len);
if (ret) {
DHD_ERROR(("%s: Failed to add APF filter\n", __FUNCTION__));
diff --git a/wl_cfg80211.c b/wl_cfg80211.c
index 60cf031..f44c074 100644
--- a/wl_cfg80211.c
+++ b/wl_cfg80211.c
@@ -10092,14 +10092,6 @@ wl_apply_per_sta_conn_suspend_settings(struct bcm_cfg80211 *cfg,
}
}
#endif /* CONFIG_SILENT_ROAM */
-
-#ifdef APF
- if (suspend) {
- dhd_dev_apf_enable_filter(dev);
- } else {
- dhd_dev_apf_disable_filter(dev);
- }
-#endif /* APF */
return BCME_OK;
}