Skip to content

Commit 53e3a80

Browse files
Arend Van SprielKalle Valo
authored andcommitted
brcmfmac: fix scheduled scan result handling for newer chips
The scan results for scheduled scan as retrieved from the device have changed. A field has been added which is not needed. However, the appended info is. Luckily they are versioned so check that to find out the location of the appended data. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
1 parent c6989fd commit 53e3a80

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3257,6 +3257,28 @@ static int brcmf_start_internal_escan(struct brcmf_if *ifp,
32573257
return 0;
32583258
}
32593259

3260+
static struct brcmf_pno_net_info_le *
3261+
brcmf_get_netinfo_array(struct brcmf_pno_scanresults_le *pfn_v1)
3262+
{
3263+
struct brcmf_pno_scanresults_v2_le *pfn_v2;
3264+
struct brcmf_pno_net_info_le *netinfo;
3265+
3266+
switch (pfn_v1->version) {
3267+
default:
3268+
WARN_ON(1);
3269+
/* fall-thru */
3270+
case cpu_to_le32(1):
3271+
netinfo = (struct brcmf_pno_net_info_le *)(pfn_v1 + 1);
3272+
break;
3273+
case cpu_to_le32(2):
3274+
pfn_v2 = (struct brcmf_pno_scanresults_v2_le *)pfn_v1;
3275+
netinfo = (struct brcmf_pno_net_info_le *)(pfn_v2 + 1);
3276+
break;
3277+
}
3278+
3279+
return netinfo;
3280+
}
3281+
32603282
/* PFN result doesn't have all the info which are required by the supplicant
32613283
* (For e.g IEs) Do a target Escan so that sched scan results are reported
32623284
* via wl_inform_single_bss in the required format. Escan does require the
@@ -3309,7 +3331,7 @@ brcmf_notify_sched_scan_results(struct brcmf_if *ifp,
33093331
}
33103332

33113333
data += sizeof(struct brcmf_pno_scanresults_le);
3312-
netinfo_start = (struct brcmf_pno_net_info_le *)data;
3334+
netinfo_start = brcmf_get_netinfo_array(pfn_result);
33133335

33143336
for (i = 0; i < result_count; i++) {
33153337
netinfo = &netinfo_start[i];

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,13 @@ struct brcmf_pno_scanresults_le {
785785
__le32 count;
786786
};
787787

788+
struct brcmf_pno_scanresults_v2_le {
789+
__le32 version;
790+
__le32 status;
791+
__le32 count;
792+
__le32 scan_ch_bucket;
793+
};
794+
788795
/**
789796
* struct brcmf_pno_macaddr_le - to configure PNO macaddr randomization.
790797
*

0 commit comments

Comments
 (0)