All of lore.kernel.org
 help / color / mirror / Atom feed
* [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band
@ 2013-04-16  9:54 Janusz Dziedzic
  2013-04-16  9:54 ` [ath9k-devel] [PATCH 2/2] ath10k: wmi_mgmt_rx setup rate info Janusz Dziedzic
  2013-04-17  6:30 ` [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band Kalle Valo
  0 siblings, 2 replies; 5+ messages in thread
From: Janusz Dziedzic @ 2013-04-16  9:54 UTC (permalink / raw)
  To: ath9k-devel

Setup band using wmi_event and phy_mode
reported by FW/HW.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 drivers/net/wireless/ath/ath10k/wmi.c |   38 +++++++++++++++++++++++++++------
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 1cb55bb..4d2257a 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -240,6 +240,35 @@ static int wmi_event_scan(struct ath10k *ar, struct sk_buff *skb)
 	return 0;
 }
 
+
+static inline enum ieee80211_band phy_mode_to_band(u32 phy_mode)
+{
+	enum ieee80211_band band;
+
+	switch (phy_mode) {
+	case MODE_11A:
+	case MODE_11NA_HT20:
+	case MODE_11NA_HT40:
+	case MODE_11AC_VHT20:
+	case MODE_11AC_VHT40:
+	case MODE_11AC_VHT80:
+		band = IEEE80211_BAND_5GHZ;
+		break;
+	case MODE_11G:
+	case MODE_11B:
+	case MODE_11GONLY:
+	case MODE_11NG_HT20:
+	case MODE_11NG_HT40:
+	case MODE_11AC_VHT20_2G:
+	case MODE_11AC_VHT40_2G:
+	case MODE_11AC_VHT80_2G:
+	default:
+		band = IEEE80211_BAND_2GHZ;
+	}
+
+	return band;
+}
+
 static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
 {
 	struct wmi_mgmt_rx_event *event = (void *)skb->data;
@@ -247,6 +276,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
 	struct ieee80211_hdr *hdr;
 	u32 rx_status;
 	u32 channel;
+	u32 phy_mode;
 	u32 snr;
 	u32 buf_len;
 	u16 fc;
@@ -255,6 +285,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
 	buf_len   = __le32_to_cpu(event->hdr.buf_len);
 	rx_status = __le32_to_cpu(event->hdr.status);
 	snr       = __le32_to_cpu(event->hdr.snr);
+	phy_mode  = __le32_to_cpu(event->hdr.phy_mode);
 
 	memset(status, 0, sizeof(*status));
 
@@ -275,12 +306,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
 	if (rx_status & WMI_RX_STATUS_ERR_MIC)
 		status->flag |= RX_FLAG_MMIC_ERROR;
 
-	/* FIXME: We probably should use event->phy_mode for that */
-	if (channel > 14)
-		status->band = IEEE80211_BAND_5GHZ;
-	else
-		status->band = IEEE80211_BAND_2GHZ;
-
+	status->band = phy_mode_to_band(phy_mode);
 	status->freq = ieee80211_channel_to_frequency(channel, status->band);
 	status->signal = snr + ATH10K_DEFAULT_NOISE_FLOOR;
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-17  7:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-16  9:54 [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band Janusz Dziedzic
2013-04-16  9:54 ` [ath9k-devel] [PATCH 2/2] ath10k: wmi_mgmt_rx setup rate info Janusz Dziedzic
2013-04-17  6:30 ` [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band Kalle Valo
2013-04-17  6:32   ` Kalle Valo
2013-04-17  7:05     ` Janusz.Dziedzic at tieto.com

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.