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>
This commit is contained in:
parent
c6989fd55c
commit
53e3a80d80
@ -3257,6 +3257,28 @@ static int brcmf_start_internal_escan(struct brcmf_if *ifp,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct brcmf_pno_net_info_le *
|
||||||
|
brcmf_get_netinfo_array(struct brcmf_pno_scanresults_le *pfn_v1)
|
||||||
|
{
|
||||||
|
struct brcmf_pno_scanresults_v2_le *pfn_v2;
|
||||||
|
struct brcmf_pno_net_info_le *netinfo;
|
||||||
|
|
||||||
|
switch (pfn_v1->version) {
|
||||||
|
default:
|
||||||
|
WARN_ON(1);
|
||||||
|
/* fall-thru */
|
||||||
|
case cpu_to_le32(1):
|
||||||
|
netinfo = (struct brcmf_pno_net_info_le *)(pfn_v1 + 1);
|
||||||
|
break;
|
||||||
|
case cpu_to_le32(2):
|
||||||
|
pfn_v2 = (struct brcmf_pno_scanresults_v2_le *)pfn_v1;
|
||||||
|
netinfo = (struct brcmf_pno_net_info_le *)(pfn_v2 + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return netinfo;
|
||||||
|
}
|
||||||
|
|
||||||
/* PFN result doesn't have all the info which are required by the supplicant
|
/* PFN result doesn't have all the info which are required by the supplicant
|
||||||
* (For e.g IEs) Do a target Escan so that sched scan results are reported
|
* (For e.g IEs) Do a target Escan so that sched scan results are reported
|
||||||
* via wl_inform_single_bss in the required format. Escan does require the
|
* 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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
data += sizeof(struct brcmf_pno_scanresults_le);
|
data += sizeof(struct brcmf_pno_scanresults_le);
|
||||||
netinfo_start = (struct brcmf_pno_net_info_le *)data;
|
netinfo_start = brcmf_get_netinfo_array(pfn_result);
|
||||||
|
|
||||||
for (i = 0; i < result_count; i++) {
|
for (i = 0; i < result_count; i++) {
|
||||||
netinfo = &netinfo_start[i];
|
netinfo = &netinfo_start[i];
|
||||||
|
@ -785,6 +785,13 @@ struct brcmf_pno_scanresults_le {
|
|||||||
__le32 count;
|
__le32 count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct brcmf_pno_scanresults_v2_le {
|
||||||
|
__le32 version;
|
||||||
|
__le32 status;
|
||||||
|
__le32 count;
|
||||||
|
__le32 scan_ch_bucket;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct brcmf_pno_macaddr_le - to configure PNO macaddr randomization.
|
* struct brcmf_pno_macaddr_le - to configure PNO macaddr randomization.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user