* [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
* [ath9k-devel] [PATCH 2/2] ath10k: wmi_mgmt_rx setup rate info 2013-04-16 9:54 [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band Janusz Dziedzic @ 2013-04-16 9:54 ` Janusz Dziedzic 2013-04-17 6:30 ` [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band Kalle Valo 1 sibling, 0 replies; 5+ messages in thread From: Janusz Dziedzic @ 2013-04-16 9:54 UTC (permalink / raw) To: ath9k-devel Setup rate info when receive mgmt frame via WMI layer. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> --- drivers/net/wireless/ath/ath10k/wmi.c | 64 +++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c index 4d2257a..82debae 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.c +++ b/drivers/net/wireless/ath/ath10k/wmi.c @@ -269,6 +269,63 @@ static inline enum ieee80211_band phy_mode_to_band(u32 phy_mode) return band; } +static inline u8 get_rate_idx(u32 rate, enum ieee80211_band band) +{ + u8 rate_idx = 0; + + /* rate in Kbps */ + switch (rate) { + case 1000: + rate_idx = 0; + break; + case 2000: + rate_idx = 1; + break; + case 5500: + rate_idx = 2; + break; + case 11000: + rate_idx = 3; + break; + case 6000: + rate_idx = 4; + break; + case 9000: + rate_idx = 5; + break; + case 12000: + rate_idx = 6; + break; + case 18000: + rate_idx = 7; + break; + case 24000: + rate_idx = 8; + break; + case 36000: + rate_idx = 9; + break; + case 48000: + rate_idx = 10; + break; + case 54000: + rate_idx = 11; + break; + default: + break; + } + + if (band == IEEE80211_BAND_5GHZ) { + if (rate_idx > 3) + /* Omit CCK rates */ + rate_idx -= 4; + else + rate_idx = 0; + } + + return rate_idx; +} + static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) { struct wmi_mgmt_rx_event *event = (void *)skb->data; @@ -278,6 +335,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) u32 channel; u32 phy_mode; u32 snr; + u32 rate; u32 buf_len; u16 fc; @@ -286,6 +344,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) rx_status = __le32_to_cpu(event->hdr.status); snr = __le32_to_cpu(event->hdr.snr); phy_mode = __le32_to_cpu(event->hdr.phy_mode); + rate = __le32_to_cpu(event->hdr.rate); memset(status, 0, sizeof(*status)); @@ -309,6 +368,7 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) status->band = phy_mode_to_band(phy_mode); status->freq = ieee80211_channel_to_frequency(channel, status->band); status->signal = snr + ATH10K_DEFAULT_NOISE_FLOOR; + status->rate_idx = get_rate_idx(rate, status->band); skb_pull(skb, sizeof(event->hdr)); @@ -321,8 +381,8 @@ static int wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) fc & IEEE80211_FCTL_FTYPE, fc & IEEE80211_FCTL_STYPE); ath10k_dbg(ATH10K_DBG_WMI, - "event mgmt rx freq %d band %d snr %d\n", - status->freq, status->band, status->signal); + "event mgmt rx freq %d band %d snr %d, rate_idx %d\n", + status->freq, status->band, status->signal, status->rate_idx); /* * packets from HTC come aligned to 4byte boundaries -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band 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 ` Kalle Valo 2013-04-17 6:32 ` Kalle Valo 1 sibling, 1 reply; 5+ messages in thread From: Kalle Valo @ 2013-04-17 6:30 UTC (permalink / raw) To: ath9k-devel Janusz Dziedzic <janusz.dziedzic@tieto.com> writes: > Setup band using wmi_event and phy_mode > reported by FW/HW. > > Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> Both applied, thanks. But the commit logs don't still answer the question "why?". Especially the change from user space point of view is important (if there are any). > --- 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) I also removed the extra new line. -- Kalle Valo ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band 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 0 siblings, 1 reply; 5+ messages in thread From: Kalle Valo @ 2013-04-17 6:32 UTC (permalink / raw) To: ath9k-devel Kalle Valo <kvalo@qca.qualcomm.com> writes: > Janusz Dziedzic <janusz.dziedzic@tieto.com> writes: > >> Setup band using wmi_event and phy_mode >> reported by FW/HW. >> >> Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> > > Both applied, thanks. Forgot to mention that there were conflicts with both patches. Please check that I didn't do anything stupid when fixing the conflicts. -- Kalle Valo ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band 2013-04-17 6:32 ` Kalle Valo @ 2013-04-17 7:05 ` Janusz.Dziedzic at tieto.com 0 siblings, 0 replies; 5+ messages in thread From: Janusz.Dziedzic at tieto.com @ 2013-04-17 7:05 UTC (permalink / raw) To: ath9k-devel >-----Original Message----- >From: Kalle Valo [mailto:kvalo at qca.qualcomm.com] >Sent: 17 kwietnia 2013 08:33 >To: Dziedzic Janusz >Cc: ath9k-devel at lists.ath9k.org >Subject: Re: [ath9k-devel] [PATCH 1/2] ath10k: wmi_mgmt_rx setup band > >Kalle Valo <kvalo@qca.qualcomm.com> writes: > >> Janusz Dziedzic <janusz.dziedzic@tieto.com> writes: >> >>> Setup band using wmi_event and phy_mode reported by FW/HW. >>> >>> Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> >> >> Both applied, thanks. > >Forgot to mention that there were conflicts with both patches. Please check >that I didn't do anything stupid when fixing the conflicts. > Thanks. Everything is fine. BR Janusz ^ permalink raw reply [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.