]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mt76x0: init rx filter in mt76x0_init_hardware
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Fri, 28 Sep 2018 11:38:58 +0000 (13:38 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 1 Oct 2018 10:34:33 +0000 (12:34 +0200)
Initialize rxfilter mask at bootstrap an not at mac start.
This is a preliminary patch to share mt76x2_mac_start routine
between mt76x2e and mt76x0e drivers

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x0/init.c
drivers/net/wireless/mediatek/mt76/mt76x0/main.c

index a53d25e826f1647abd81bcd49e3223bae337136a..0fd4b4ca8227419cec569c6dd49537dc1722fd17 100644 (file)
@@ -271,15 +271,7 @@ int mt76x0_mac_start(struct mt76x0_dev *dev)
        if (!mt76x02_wait_for_wpdma(&dev->mt76, 200000))
                return -ETIMEDOUT;
 
-       dev->mt76.rxfilter = MT_RX_FILTR_CFG_CRC_ERR |
-               MT_RX_FILTR_CFG_PHY_ERR | MT_RX_FILTR_CFG_PROMISC |
-               MT_RX_FILTR_CFG_VER_ERR | MT_RX_FILTR_CFG_DUP |
-               MT_RX_FILTR_CFG_CFACK | MT_RX_FILTR_CFG_CFEND |
-               MT_RX_FILTR_CFG_ACK | MT_RX_FILTR_CFG_CTS |
-               MT_RX_FILTR_CFG_RTS | MT_RX_FILTR_CFG_PSPOLL |
-               MT_RX_FILTR_CFG_BA | MT_RX_FILTR_CFG_CTRL_RSV;
        mt76_wr(dev, MT_RX_FILTR_CFG, dev->mt76.rxfilter);
-
        mt76_wr(dev, MT_MAC_SYS_CTRL,
                MT_MAC_SYS_CTRL_ENABLE_TX | MT_MAC_SYS_CTRL_ENABLE_RX);
 
@@ -370,6 +362,8 @@ int mt76x0_init_hardware(struct mt76x0_dev *dev)
        if (ret)
                return ret;
 
+       dev->mt76.rxfilter = mt76_rr(dev, MT_RX_FILTR_CFG);
+
        ret = mt76x0_init_wcid_mem(dev);
        if (ret)
                return ret;
index 66e12802953cbf1019b1cdb85fa709548dc2270d..e0fc691ce78ee00d58308e67dbc440f720ba9169 100644 (file)
@@ -73,6 +73,15 @@ static int mt76x0_config(struct ieee80211_hw *hw, u32 changed)
                        mt76x0_phy_set_txpower(dev);
        }
 
+       if (changed & IEEE80211_CONF_CHANGE_MONITOR) {
+               if (!(hw->conf.flags & IEEE80211_CONF_MONITOR))
+                       dev->mt76.rxfilter |= MT_RX_FILTR_CFG_PROMISC;
+               else
+                       dev->mt76.rxfilter &= ~MT_RX_FILTR_CFG_PROMISC;
+
+               mt76_wr(dev, MT_RX_FILTR_CFG, dev->mt76.rxfilter);
+       }
+
        mutex_unlock(&dev->mt76.mutex);
 
        return ret;