diff options
author | kensun <kensun@google.com> | 2024-01-11 02:28:06 +0000 |
---|---|---|
committer | Ken Sun <kensun@google.com> | 2024-01-15 09:34:06 +0000 |
commit | b11d6f92ebb550d35212aa6b33ba7bbee5ab0d01 (patch) | |
tree | fb52decf953e6f0776bd1625de779db47f8a97ac | |
parent | e39001af454196ee29dabe2ed8dc8dfdb2ccd20d (diff) | |
download | bcm4398-android-gs-shusky-5.15-android14-qpr2.tar.gz |
Revert APF change from pa/2664258android-u-qpr2-beta-3.1_r0.8android-14.0.0_r0.77android-14.0.0_r0.67android-14.0.0_r0.57android-gs-shusky-5.15-android14-qpr2-betaandroid-gs-shusky-5.15-android14-qpr2
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.c | 16 | ||||
-rw-r--r-- | wl_cfg80211.c | 8 |
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; } |