mwl8k: properly report rate on received 40MHz packets
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / net / wireless / mwl8k.c
index c1cb20f..f1566f9 100644 (file)
@@ -782,6 +782,10 @@ struct mwl8k_rxd_8366 {
        __u8 rx_ctrl;
 } __attribute__((packed));
 
+#define MWL8K_8366_RATE_INFO_MCS_FORMAT                0x80
+#define MWL8K_8366_RATE_INFO_40MHZ             0x40
+#define MWL8K_8366_RATE_INFO_RATEID(x)         ((x) & 0x3f)
+
 #define MWL8K_8366_RX_CTRL_OWNED_BY_HOST       0x80
 
 static void mwl8k_rxd_8366_init(void *_rxd, dma_addr_t next_dma_addr)
@@ -817,9 +821,11 @@ mwl8k_rxd_8366_process(void *_rxd, struct ieee80211_rx_status *status,
        status->signal = -rxd->rssi;
        status->noise = -rxd->noise_floor;
 
-       if (rxd->rate & 0x80) {
+       if (rxd->rate & MWL8K_8366_RATE_INFO_MCS_FORMAT) {
                status->flag |= RX_FLAG_HT;
-               status->rate_idx = rxd->rate & 0x7f;
+               if (rxd->rate & MWL8K_8366_RATE_INFO_40MHZ)
+                       status->flag |= RX_FLAG_40MHZ;
+               status->rate_idx = MWL8K_8366_RATE_INFO_RATEID(rxd->rate);
        } else {
                int i;