aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Mitsyanko <igor.mitsyanko.os@quantenna.com>2017-10-30 21:04:51 -0400
committerKalle Valo <kvalo@codeaurora.org>2017-11-09 21:30:56 -0500
commit5face518d4467868e7a82a321955236b2bb65bdc (patch)
tree9d9927fd6c93e946f1af7486c2264dcf0dfa9190
parent18b7470f92dfbea3e5ef82cab70edfc559d46735 (diff)
qtnfmac: SCAN results: retreive frame type information from "IE set" TLV
"IE set" TLV carries the same information as qlink_event_scan_result::frame_type. Convert the event to make use of TLV and drop frame_type member. While at it, make qlink_event_scan_result structure alignement-safe. Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/event.c25
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/qlink.h11
2 files changed, 14 insertions, 22 deletions
diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c
index b67a082eed69..4abc6d9ed560 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/event.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/event.c
@@ -252,13 +252,12 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
252 struct cfg80211_bss *bss; 252 struct cfg80211_bss *bss;
253 struct ieee80211_channel *channel; 253 struct ieee80211_channel *channel;
254 struct wiphy *wiphy = priv_to_wiphy(vif->mac); 254 struct wiphy *wiphy = priv_to_wiphy(vif->mac);
255 enum cfg80211_bss_frame_type frame_type; 255 enum cfg80211_bss_frame_type frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
256 size_t payload_len; 256 size_t payload_len;
257 u16 tlv_type; 257 u16 tlv_type;
258 u16 tlv_value_len; 258 u16 tlv_value_len;
259 size_t tlv_full_len; 259 size_t tlv_full_len;
260 const struct qlink_tlv_hdr *tlv; 260 const struct qlink_tlv_hdr *tlv;
261
262 const u8 *ies = NULL; 261 const u8 *ies = NULL;
263 size_t ies_len = 0; 262 size_t ies_len = 0;
264 263
@@ -275,17 +274,6 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
275 return -EINVAL; 274 return -EINVAL;
276 } 275 }
277 276
278 switch (sr->frame_type) {
279 case QLINK_BSS_FTYPE_BEACON:
280 frame_type = CFG80211_BSS_FTYPE_BEACON;
281 break;
282 case QLINK_BSS_FTYPE_PRESP:
283 frame_type = CFG80211_BSS_FTYPE_PRESP;
284 break;
285 default:
286 frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
287 }
288
289 payload_len = len - sizeof(*sr); 277 payload_len = len - sizeof(*sr);
290 tlv = (struct qlink_tlv_hdr *)sr->payload; 278 tlv = (struct qlink_tlv_hdr *)sr->payload;
291 279
@@ -308,6 +296,17 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
308 ie_len = tlv_value_len - 296 ie_len = tlv_value_len -
309 (sizeof(*ie_set) - sizeof(ie_set->hdr)); 297 (sizeof(*ie_set) - sizeof(ie_set->hdr));
310 298
299 switch (ie_set->type) {
300 case QLINK_IE_SET_BEACON_IES:
301 frame_type = CFG80211_BSS_FTYPE_BEACON;
302 break;
303 case QLINK_IE_SET_PROBE_RESP_IES:
304 frame_type = CFG80211_BSS_FTYPE_PRESP;
305 break;
306 default:
307 frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
308 }
309
311 if (ie_len) { 310 if (ie_len) {
312 ies = ie_set->ie_data; 311 ies = ie_set->ie_data;
313 ies_len = ie_len; 312 ies_len = ie_len;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index f491942eb6d0..81effd21075c 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -881,12 +881,6 @@ struct qlink_event_rxmgmt {
881 u8 frame_data[0]; 881 u8 frame_data[0];
882} __packed; 882} __packed;
883 883
884enum qlink_frame_type {
885 QLINK_BSS_FTYPE_UNKNOWN,
886 QLINK_BSS_FTYPE_BEACON,
887 QLINK_BSS_FTYPE_PRESP,
888};
889
890/** 884/**
891 * struct qlink_event_scan_result - data for QLINK_EVENT_SCAN_RESULTS event 885 * struct qlink_event_scan_result - data for QLINK_EVENT_SCAN_RESULTS event
892 * 886 *
@@ -896,7 +890,6 @@ enum qlink_frame_type {
896 * @capab: capabilities field. 890 * @capab: capabilities field.
897 * @bintval: beacon interval announced by discovered BSS. 891 * @bintval: beacon interval announced by discovered BSS.
898 * @signal: signal strength. 892 * @signal: signal strength.
899 * @frame_type: frame type used to get scan result, see &enum qlink_frame_type.
900 * @bssid: BSSID announced by discovered BSS. 893 * @bssid: BSSID announced by discovered BSS.
901 * @ssid_len: length of SSID announced by BSS. 894 * @ssid_len: length of SSID announced by BSS.
902 * @ssid: SSID announced by discovered BSS. 895 * @ssid: SSID announced by discovered BSS.
@@ -909,10 +902,10 @@ struct qlink_event_scan_result {
909 __le16 capab; 902 __le16 capab;
910 __le16 bintval; 903 __le16 bintval;
911 s8 signal; 904 s8 signal;
912 u8 frame_type;
913 u8 bssid[ETH_ALEN];
914 u8 ssid_len; 905 u8 ssid_len;
915 u8 ssid[IEEE80211_MAX_SSID_LEN]; 906 u8 ssid[IEEE80211_MAX_SSID_LEN];
907 u8 bssid[ETH_ALEN];
908 u8 rsvd[2];
916 u8 payload[0]; 909 u8 payload[0];
917} __packed; 910} __packed;
918 911