mt76x2: remove some harmless WARN_ONs in tx status and rx path
authorFelix Fietkau <nbd@nbd.name>
Thu, 14 Dec 2017 15:39:07 +0000 (16:39 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 8 Jan 2018 17:25:47 +0000 (19:25 +0200)
Discard affected packets instead. Should reduce the frequency of bogus
bug reports

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mediatek/mt76/mt76x2_mac.c

index 39fc1d7b65ceae24ad8c8eda2c411a7ed1422d45..ecc23f58da983282987cfad49b7a87c912123194 100644 (file)
@@ -28,7 +28,7 @@ void mt76x2_mac_set_bssid(struct mt76x2_dev *dev, u8 idx, const u8 *addr)
                       get_unaligned_le16(addr + 4));
 }
 
-static void
+static int
 mt76x2_mac_process_rate(struct ieee80211_rx_status *status, u16 rate)
 {
        u8 idx = FIELD_GET(MT_RXWI_RATE_INDEX, rate);
@@ -42,7 +42,7 @@ mt76x2_mac_process_rate(struct ieee80211_rx_status *status, u16 rate)
                        idx += 4;
 
                status->rate_idx = idx;
-               return;
+               return 0;
        case MT_PHY_TYPE_CCK:
                if (idx >= 8) {
                        idx -= 8;
@@ -53,7 +53,7 @@ mt76x2_mac_process_rate(struct ieee80211_rx_status *status, u16 rate)
                        idx = 0;
 
                status->rate_idx = idx;
-               return;
+               return 0;
        case MT_PHY_TYPE_HT_GF:
                status->enc_flags |= RX_ENC_FLAG_HT_GF;
                /* fall through */
@@ -67,8 +67,7 @@ mt76x2_mac_process_rate(struct ieee80211_rx_status *status, u16 rate)
                status->nss = FIELD_GET(MT_RATE_INDEX_VHT_NSS, idx) + 1;
                break;
        default:
-               WARN_ON(1);
-               return;
+               return -EINVAL;
        }
 
        if (rate & MT_RXWI_RATE_LDPC)
@@ -92,6 +91,8 @@ mt76x2_mac_process_rate(struct ieee80211_rx_status *status, u16 rate)
        default:
                break;
        }
+
+       return 0;
 }
 
 static __le16
@@ -272,12 +273,10 @@ int mt76x2_mac_process_rx(struct mt76x2_dev *dev, struct sk_buff *skb,
        status->freq = dev->mt76.chandef.chan->center_freq;
        status->band = dev->mt76.chandef.chan->band;
 
-       mt76x2_mac_process_rate(status, rate);
-
-       return 0;
+       return mt76x2_mac_process_rate(status, rate);
 }
 
-static void
+static int
 mt76x2_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate,
                           enum nl80211_band band)
 {
@@ -293,13 +292,13 @@ mt76x2_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate,
                        idx += 4;
 
                txrate->idx = idx;
-               return;
+               return 0;
        case MT_PHY_TYPE_CCK:
                if (idx >= 8)
                        idx -= 8;
 
                txrate->idx = idx;
-               return;
+               return 0;
        case MT_PHY_TYPE_HT_GF:
                txrate->flags |= IEEE80211_TX_RC_GREEN_FIELD;
                /* fall through */
@@ -312,8 +311,7 @@ mt76x2_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate,
                txrate->idx = idx;
                break;
        default:
-               WARN_ON(1);
-               return;
+               return -EINVAL;
        }
 
        switch (FIELD_GET(MT_RXWI_RATE_BW, rate)) {
@@ -326,12 +324,14 @@ mt76x2_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate,
                txrate->flags |= IEEE80211_TX_RC_80_MHZ_WIDTH;
                break;
        default:
-               WARN_ON(1);
+               return -EINVAL;
                break;
        }
 
        if (rate & MT_RXWI_RATE_SGI)
                txrate->flags |= IEEE80211_TX_RC_SHORT_GI;
+
+       return 0;
 }
 
 static void