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>
This commit is contained in:
parent
18b7470f92
commit
5face518d4
|
@ -252,13 +252,12 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
|
|||
struct cfg80211_bss *bss;
|
||||
struct ieee80211_channel *channel;
|
||||
struct wiphy *wiphy = priv_to_wiphy(vif->mac);
|
||||
enum cfg80211_bss_frame_type frame_type;
|
||||
enum cfg80211_bss_frame_type frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
|
||||
size_t payload_len;
|
||||
u16 tlv_type;
|
||||
u16 tlv_value_len;
|
||||
size_t tlv_full_len;
|
||||
const struct qlink_tlv_hdr *tlv;
|
||||
|
||||
const u8 *ies = NULL;
|
||||
size_t ies_len = 0;
|
||||
|
||||
|
@ -275,17 +274,6 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (sr->frame_type) {
|
||||
case QLINK_BSS_FTYPE_BEACON:
|
||||
frame_type = CFG80211_BSS_FTYPE_BEACON;
|
||||
break;
|
||||
case QLINK_BSS_FTYPE_PRESP:
|
||||
frame_type = CFG80211_BSS_FTYPE_PRESP;
|
||||
break;
|
||||
default:
|
||||
frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
payload_len = len - sizeof(*sr);
|
||||
tlv = (struct qlink_tlv_hdr *)sr->payload;
|
||||
|
||||
|
@ -308,6 +296,17 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,
|
|||
ie_len = tlv_value_len -
|
||||
(sizeof(*ie_set) - sizeof(ie_set->hdr));
|
||||
|
||||
switch (ie_set->type) {
|
||||
case QLINK_IE_SET_BEACON_IES:
|
||||
frame_type = CFG80211_BSS_FTYPE_BEACON;
|
||||
break;
|
||||
case QLINK_IE_SET_PROBE_RESP_IES:
|
||||
frame_type = CFG80211_BSS_FTYPE_PRESP;
|
||||
break;
|
||||
default:
|
||||
frame_type = CFG80211_BSS_FTYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
if (ie_len) {
|
||||
ies = ie_set->ie_data;
|
||||
ies_len = ie_len;
|
||||
|
|
|
@ -881,12 +881,6 @@ struct qlink_event_rxmgmt {
|
|||
u8 frame_data[0];
|
||||
} __packed;
|
||||
|
||||
enum qlink_frame_type {
|
||||
QLINK_BSS_FTYPE_UNKNOWN,
|
||||
QLINK_BSS_FTYPE_BEACON,
|
||||
QLINK_BSS_FTYPE_PRESP,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qlink_event_scan_result - data for QLINK_EVENT_SCAN_RESULTS event
|
||||
*
|
||||
|
@ -896,7 +890,6 @@ enum qlink_frame_type {
|
|||
* @capab: capabilities field.
|
||||
* @bintval: beacon interval announced by discovered BSS.
|
||||
* @signal: signal strength.
|
||||
* @frame_type: frame type used to get scan result, see &enum qlink_frame_type.
|
||||
* @bssid: BSSID announced by discovered BSS.
|
||||
* @ssid_len: length of SSID announced by BSS.
|
||||
* @ssid: SSID announced by discovered BSS.
|
||||
|
@ -909,10 +902,10 @@ struct qlink_event_scan_result {
|
|||
__le16 capab;
|
||||
__le16 bintval;
|
||||
s8 signal;
|
||||
u8 frame_type;
|
||||
u8 bssid[ETH_ALEN];
|
||||
u8 ssid_len;
|
||||
u8 ssid[IEEE80211_MAX_SSID_LEN];
|
||||
u8 bssid[ETH_ALEN];
|
||||
u8 rsvd[2];
|
||||
u8 payload[0];
|
||||
} __packed;
|
||||
|
||||
|
|
Loading…
Reference in New Issue