linux/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-n...

80 lines
2.8 KiB
Diff

From: Jes Sorensen <Jes.Sorensen@redhat.com>
Date: Mon, 9 Jun 2014 15:16:29 +0200
Subject: [050/249] staging: rtl8723au: Do not embed struct wlan_bssid_ex in
struct survey_event
Origin: https://git.kernel.org/linus/246879640e636256326221e70df8e1c3ef84ece0
Instead allocate it separately and reference it from survey_event.
This will allow for us to pass it on later without having to copy it.
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ++++-
drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 9 +++++++--
drivers/staging/rtl8723au/include/rtw_event.h | 2 +-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
index 639dfca..71ff753 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
@@ -640,7 +640,7 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
struct survey_event *survey = (struct survey_event *)pbuf;
- pnetwork = &survey->bss;
+ pnetwork = survey->bss;
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,
("rtw_survey_event_cb23a, ssid=%s\n", pnetwork->Ssid.ssid));
@@ -691,6 +691,9 @@ exit:
spin_unlock_bh(&pmlmepriv->lock);
+ kfree(survey->bss);
+ survey->bss = NULL;
+
return;
}
diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
index 693a1a4..9b6d918 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
@@ -4898,14 +4898,19 @@ void report_survey_event23a(struct rtw_adapter *padapter,
pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header));
+ psurvey_evt->bss = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
+ if (!psurvey_evt->bss) {
+ kfree(pcmd_obj);
+ kfree(pevtcmd);
+ }
- if (collect_bss_info23a(padapter, precv_frame, &psurvey_evt->bss) == _FAIL) {
+ if (collect_bss_info23a(padapter, precv_frame, psurvey_evt->bss) == _FAIL) {
kfree(pcmd_obj);
kfree(pevtcmd);
return;
}
- process_80211d(padapter, &psurvey_evt->bss);
+ process_80211d(padapter, psurvey_evt->bss);
rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj);
diff --git a/drivers/staging/rtl8723au/include/rtw_event.h b/drivers/staging/rtl8723au/include/rtw_event.h
index 807cc83..4557aec 100644
--- a/drivers/staging/rtl8723au/include/rtw_event.h
+++ b/drivers/staging/rtl8723au/include/rtw_event.h
@@ -22,7 +22,7 @@
Used to report a bss has been scanned
*/
struct survey_event {
- struct wlan_bssid_ex bss;
+ struct wlan_bssid_ex *bss;
};
/*