diff options
| author | Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> | 2017-12-19 14:28:52 +0300 | 
|---|---|---|
| committer | Kalle Valo <kvalo@codeaurora.org> | 2018-01-09 15:11:21 +0300 | 
| commit | fbad963a28e487bbd84ec2a82898bd91e08c97c8 (patch) | |
| tree | 48faf8dca9dceb5f9ac16f8b634029ef1c6250fe | |
| parent | e6e594aff26ae164aaf935309a6fb8ce3cad9d4d (diff) | |
| download | linux-fbad963a28e487bbd84ec2a82898bd91e08c97c8.tar.xz | |
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,  	pr_debug("%s LEN:%u FC:%.4X SA:%pM\n", vif->netdev->name, frame_len,  		 le16_to_cpu(frame->frame_control), frame->addr2); -	cfg80211_rx_mgmt(&vif->wdev, le32_to_cpu(rxmgmt->freq), -			 le32_to_cpu(rxmgmt->sig_dbm), rxmgmt->frame_data, -			 frame_len, flags); +	cfg80211_rx_mgmt(&vif->wdev, le32_to_cpu(rxmgmt->freq), rxmgmt->sig_dbm, +			 rxmgmt->frame_data, frame_len, flags);  	return 0;  } @@ -324,7 +323,7 @@ qtnf_event_handle_scan_results(struct qtnf_vif *vif,  				  sr->bssid, get_unaligned_le64(&sr->tsf),  				  le16_to_cpu(sr->capab),  				  le16_to_cpu(sr->bintval), ies, ies_len, -				  sr->signal, GFP_KERNEL); +				  DBM_TO_MBM(sr->sig_dbm), GFP_KERNEL);  	if (!bss)  		return -ENOMEM; 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 @@  #include <linux/ieee80211.h> -#define QLINK_PROTO_VER		7 +#define QLINK_PROTO_VER		8  #define QLINK_MACID_RSVD		0xFF  #define QLINK_VIFID_RSVD		0xFF @@ -916,15 +916,16 @@ enum qlink_rxmgmt_flags {   * struct qlink_event_rxmgmt - data for QLINK_EVENT_MGMT_RECEIVED event   *   * @freq: Frequency on which the frame was received in MHz. - * @sig_dbm: signal strength in dBm.   * @flags: bitmap of &enum qlink_rxmgmt_flags. + * @sig_dbm: signal strength in dBm.   * @frame_data: data of Rx'd frame itself.   */  struct qlink_event_rxmgmt {  	struct qlink_event ehdr;  	__le32 freq; -	__le32 sig_dbm;  	__le32 flags; +	s8 sig_dbm; +	u8 rsvd[3];  	u8 frame_data[0];  } __packed; @@ -936,7 +937,7 @@ struct qlink_event_rxmgmt {   *	event was generated was discovered.   * @capab: capabilities field.   * @bintval: beacon interval announced by discovered BSS. - * @signal: signal strength. + * @sig_dbm: signal strength in dBm.   * @bssid: BSSID announced by discovered BSS.   * @ssid_len: length of SSID announced by BSS.   * @ssid: SSID announced by discovered BSS. @@ -948,7 +949,7 @@ struct qlink_event_scan_result {  	__le16 freq;  	__le16 capab;  	__le16 bintval; -	s8 signal; +	s8 sig_dbm;  	u8 ssid_len;  	u8 ssid[IEEE80211_MAX_SSID_LEN];  	u8 bssid[ETH_ALEN];  | 
