diff options
author | Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> | 2017-12-19 06:28:52 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2018-01-09 07:11:21 -0500 |
commit | fbad963a28e487bbd84ec2a82898bd91e08c97c8 (patch) | |
tree | 48faf8dca9dceb5f9ac16f8b634029ef1c6250fe | |
parent | e6e594aff26ae164aaf935309a6fb8ce3cad9d4d (diff) |
qtnfmac: fix rssi data passed to wireless core
Fix RSSI values passed to wireless core by qtnfmac driver:
- fix RSSI values in scan results:
driver registers wiphy with CFG80211_SIGNAL_TYPE_MBM signal type,
so mBm should be passed using DBM_TO_MBM macro
- accompany firmware changes fixing RSSI values in received mgmt frames
update qlink message format and pass correct signed values to core
Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r-- | drivers/net/wireless/quantenna/qtnfmac/event.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/quantenna/qtnfmac/qlink.h | 11 |
2 files changed, 9 insertions, 9 deletions
diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c index 9843ca36b74b..b3489b5b5d9e 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/event.c +++ b/drivers/net/wireless/quantenna/qtnfmac/event.c | |||
@@ -237,9 +237,8 @@ qtnf_event_handle_mgmt_received(struct qtnf_vif *vif, | |||
237 | pr_debug("%s LEN:%u FC:%.4X SA:%pM\n", vif->netdev->name, frame_len, | 237 | pr_debug("%s LEN:%u FC:%.4X SA:%pM\n", vif->netdev->name, frame_len, |
238 | le16_to_cpu(frame->frame_control), frame->addr2); | 238 | le16_to_cpu(frame->frame_control), frame->addr2); |
239 | 239 | ||
240 | cfg80211_rx_mgmt(&vif->wdev, le32_to_cpu(rxmgmt->freq), | 240 | cfg80211_rx_mgmt(&vif->wdev, le32_to_cpu(rxmgmt->freq), rxmgmt->sig_dbm, |
241 | le32_to_cpu(rxmgmt->sig_dbm), rxmgmt->frame_data, | 241 | rxmgmt->frame_data, frame_len, flags); |
242 | frame_len, flags); | ||
243 | 242 | ||
244 | return 0; | 243 | return 0; |
245 | } | 244 | } |
@@ -324,7 +323,7 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif, | |||
324 | sr->bssid, get_unaligned_le64(&sr->tsf), | 323 | sr->bssid, get_unaligned_le64(&sr->tsf), |
325 | le16_to_cpu(sr->capab), | 324 | le16_to_cpu(sr->capab), |
326 | le16_to_cpu(sr->bintval), ies, ies_len, | 325 | le16_to_cpu(sr->bintval), ies, ies_len, |
327 | sr->signal, GFP_KERNEL); | 326 | DBM_TO_MBM(sr->sig_dbm), GFP_KERNEL); |
328 | if (!bss) | 327 | if (!bss) |
329 | return -ENOMEM; | 328 | return -ENOMEM; |
330 | 329 | ||
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h index 3e3de4629a53..1f150be98820 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h +++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | #include <linux/ieee80211.h> | 20 | #include <linux/ieee80211.h> |
21 | 21 | ||
22 | #define QLINK_PROTO_VER 7 | 22 | #define QLINK_PROTO_VER 8 |
23 | 23 | ||
24 | #define QLINK_MACID_RSVD 0xFF | 24 | #define QLINK_MACID_RSVD 0xFF |
25 | #define QLINK_VIFID_RSVD 0xFF | 25 | #define QLINK_VIFID_RSVD 0xFF |
@@ -916,15 +916,16 @@ enum qlink_rxmgmt_flags { | |||
916 | * struct qlink_event_rxmgmt - data for QLINK_EVENT_MGMT_RECEIVED event | 916 | * struct qlink_event_rxmgmt - data for QLINK_EVENT_MGMT_RECEIVED event |
917 | * | 917 | * |
918 | * @freq: Frequency on which the frame was received in MHz. | 918 | * @freq: Frequency on which the frame was received in MHz. |
919 | * @sig_dbm: signal strength in dBm. | ||
920 | * @flags: bitmap of &enum qlink_rxmgmt_flags. | 919 | * @flags: bitmap of &enum qlink_rxmgmt_flags. |
920 | * @sig_dbm: signal strength in dBm. | ||
921 | * @frame_data: data of Rx'd frame itself. | 921 | * @frame_data: data of Rx'd frame itself. |
922 | */ | 922 | */ |
923 | struct qlink_event_rxmgmt { | 923 | struct qlink_event_rxmgmt { |
924 | struct qlink_event ehdr; | 924 | struct qlink_event ehdr; |
925 | __le32 freq; | 925 | __le32 freq; |
926 | __le32 sig_dbm; | ||
927 | __le32 flags; | 926 | __le32 flags; |
927 | s8 sig_dbm; | ||
928 | u8 rsvd[3]; | ||
928 | u8 frame_data[0]; | 929 | u8 frame_data[0]; |
929 | } __packed; | 930 | } __packed; |
930 | 931 | ||
@@ -936,7 +937,7 @@ struct qlink_event_rxmgmt { | |||
936 | * event was generated was discovered. | 937 | * event was generated was discovered. |
937 | * @capab: capabilities field. | 938 | * @capab: capabilities field. |
938 | * @bintval: beacon interval announced by discovered BSS. | 939 | * @bintval: beacon interval announced by discovered BSS. |
939 | * @signal: signal strength. | 940 | * @sig_dbm: signal strength in dBm. |
940 | * @bssid: BSSID announced by discovered BSS. | 941 | * @bssid: BSSID announced by discovered BSS. |
941 | * @ssid_len: length of SSID announced by BSS. | 942 | * @ssid_len: length of SSID announced by BSS. |
942 | * @ssid: SSID announced by discovered BSS. | 943 | * @ssid: SSID announced by discovered BSS. |
@@ -948,7 +949,7 @@ struct qlink_event_scan_result { | |||
948 | __le16 freq; | 949 | __le16 freq; |
949 | __le16 capab; | 950 | __le16 capab; |
950 | __le16 bintval; | 951 | __le16 bintval; |
951 | s8 signal; | 952 | s8 sig_dbm; |
952 | u8 ssid_len; | 953 | u8 ssid_len; |
953 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | 954 | u8 ssid[IEEE80211_MAX_SSID_LEN]; |
954 | u8 bssid[ETH_ALEN]; | 955 | u8 bssid[ETH_ALEN]; |