Skip to content

Commit 73ef9e6

Browse files
Hante MeulemanKalle Valo
authored andcommitted
brcmfmac: keep ARP and ND offload enabled during WOWL
Currently ARP and ND (IPv6 Neigbor Discovery) offload get disabled on entering suspend. However when firmwares support the wowl_cap iovar then these offload routines can be kept enabled as they will work during WOWL as well. Reviewed-by: Arend Van Spriel <[email protected]> Reviewed-by: Franky (Zhenhui) Lin <[email protected]> Reviewed-by: Pieter-Paul Giesberts <[email protected]> Signed-off-by: Hante Meuleman <[email protected]> Signed-off-by: Arend van Spriel <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 8ea56be commit 73ef9e6

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3556,7 +3556,8 @@ static s32 brcmf_cfg80211_resume(struct wiphy *wiphy)
35563556
brcmf_report_wowl_wakeind(wiphy, ifp);
35573557
brcmf_fil_iovar_int_set(ifp, "wowl_clear", 0);
35583558
brcmf_config_wowl_pattern(ifp, "clr", NULL, 0, NULL, 0);
3559-
brcmf_configure_arp_nd_offload(ifp, true);
3559+
if (!brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL_ARP_ND))
3560+
brcmf_configure_arp_nd_offload(ifp, true);
35603561
brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM,
35613562
cfg->wowl.pre_pmmode);
35623563
cfg->wowl.active = false;
@@ -3580,7 +3581,8 @@ static void brcmf_configure_wowl(struct brcmf_cfg80211_info *cfg,
35803581

35813582
brcmf_dbg(TRACE, "Suspend, wowl config.\n");
35823583

3583-
brcmf_configure_arp_nd_offload(ifp, false);
3584+
if (!brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL_ARP_ND))
3585+
brcmf_configure_arp_nd_offload(ifp, false);
35843586
brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_PM, &cfg->wowl.pre_pmmode);
35853587
brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, PM_MAX);
35863588

drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
147147
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_WOWL)) {
148148
err = brcmf_fil_iovar_int_get(ifp, "wowl_cap", &wowl_cap);
149149
if (!err) {
150+
ifp->drvr->feat_flags |= BIT(BRCMF_FEAT_WOWL_ARP_ND);
150151
if (wowl_cap & BRCMF_WOWL_PFN_FOUND)
151152
ifp->drvr->feat_flags |=
152153
BIT(BRCMF_FEAT_WOWL_ND);

drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* SCAN_RANDOM_MAC: Random MAC during (net detect) scheduled scan.
3030
* WOWL_ND: WOWL net detect (PNO)
3131
* WOWL_GTK: (WOWL) GTK rekeying offload
32+
* WOWL_ARP_ND: ARP and Neighbor Discovery offload support during WOWL.
3233
*/
3334
#define BRCMF_FEAT_LIST \
3435
BRCMF_FEAT_DEF(MBSS) \
@@ -40,7 +41,8 @@
4041
BRCMF_FEAT_DEF(TDLS) \
4142
BRCMF_FEAT_DEF(SCAN_RANDOM_MAC) \
4243
BRCMF_FEAT_DEF(WOWL_ND) \
43-
BRCMF_FEAT_DEF(WOWL_GTK)
44+
BRCMF_FEAT_DEF(WOWL_GTK) \
45+
BRCMF_FEAT_DEF(WOWL_ARP_ND)
4446

4547
/*
4648
* Quirks:

0 commit comments

Comments
 (0)