mt76: set runtime stream caps by mt76_phy
authorRyder Lee <ryder.lee@mediatek.com>
Fri, 24 Apr 2020 19:32:39 +0000 (03:32 +0800)
committerFelix Fietkau <nbd@nbd.name>
Tue, 12 May 2020 17:52:36 +0000 (19:52 +0200)
This patch can support concurrent dual-band operation.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt7615/init.c
drivers/net/wireless/mediatek/mt76/mt7615/main.c
drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
drivers/net/wireless/mediatek/mt76/mt7915/init.c
drivers/net/wireless/mediatek/mt76/mt7915/main.c

index f65e1b3e8f7aa04e321b9a56d3e1b0f352830835..21407704f1b3d9e1d07e02c2752db048ac43fc5f 100644 (file)
@@ -116,12 +116,12 @@ static void mt76_led_cleanup(struct mt76_dev *dev)
        led_classdev_unregister(&dev->led_cdev);
 }
 
-static void mt76_init_stream_cap(struct mt76_dev *dev,
+static void mt76_init_stream_cap(struct mt76_phy *phy,
                                 struct ieee80211_supported_band *sband,
                                 bool vht)
 {
        struct ieee80211_sta_ht_cap *ht_cap = &sband->ht_cap;
-       int i, nstream = hweight8(dev->phy.antenna_mask);
+       int i, nstream = hweight8(phy->antenna_mask);
        struct ieee80211_sta_vht_cap *vht_cap;
        u16 mcs_map = 0;
 
@@ -153,12 +153,12 @@ static void mt76_init_stream_cap(struct mt76_dev *dev,
        vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
 }
 
-void mt76_set_stream_caps(struct mt76_dev *dev, bool vht)
+void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
 {
-       if (dev->cap.has_2ghz)
-               mt76_init_stream_cap(dev, &dev->phy.sband_2g.sband, false);
-       if (dev->cap.has_5ghz)
-               mt76_init_stream_cap(dev, &dev->phy.sband_5g.sband, vht);
+       if (phy->dev->cap.has_2ghz)
+               mt76_init_stream_cap(phy, &phy->sband_2g.sband, false);
+       if (phy->dev->cap.has_5ghz)
+               mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
 }
 EXPORT_SYMBOL_GPL(mt76_set_stream_caps);
 
@@ -199,7 +199,7 @@ mt76_init_sband(struct mt76_dev *dev, struct mt76_sband *msband,
        ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
        ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
 
-       mt76_init_stream_cap(dev, sband, vht);
+       mt76_init_stream_cap(&dev->phy, sband, vht);
 
        if (!vht)
                return 0;
index 88959c1d5d1ea62870eed8790a92c9486bd3f018..e6de4a1b8f26f9452fbdd482eebbafd8ddc03829 100644 (file)
@@ -821,7 +821,7 @@ void mt76_set_channel(struct mt76_phy *phy);
 void mt76_update_survey(struct mt76_dev *dev);
 int mt76_get_survey(struct ieee80211_hw *hw, int idx,
                    struct survey_info *survey);
-void mt76_set_stream_caps(struct mt76_dev *dev, bool vht);
+void mt76_set_stream_caps(struct mt76_phy *phy, bool vht);
 
 int mt76_rx_aggr_start(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tid,
                       u16 ssn, u16 size);
index 37fc70197f920cfa650aabf57de2d1a4d8236eda..6e1a17f08f5ef66f86a8cbf3e56554c55d50da91 100644 (file)
@@ -333,7 +333,7 @@ mt7615_cap_dbdc_enable(struct mt7615_dev *dev)
        dev->phy.chainmask = dev->mphy.antenna_mask;
        dev->mphy.hw->wiphy->available_antennas_rx = dev->phy.chainmask;
        dev->mphy.hw->wiphy->available_antennas_tx = dev->phy.chainmask;
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(&dev->mphy, true);
 }
 
 static void
@@ -346,7 +346,7 @@ mt7615_cap_dbdc_disable(struct mt7615_dev *dev)
        dev->phy.chainmask = dev->chainmask;
        dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
        dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(&dev->mphy, true);
 }
 
 int mt7615_register_ext_phy(struct mt7615_dev *dev)
index cfe024b71677ffebbfbaa342d72cce915cdb8ea9..402ff38f7dcf719c357b682dbf6b7e57a210b298 100644 (file)
@@ -784,7 +784,7 @@ mt7615_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
        }
        phy->chainmask = tx_ant;
 
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(phy->mt76, true);
 
        mutex_unlock(&dev->mt76.mutex);
 
index a74599f7f729f77262994be7b542f5c887441d9f..98f4cf3983207bffbd06d083c7e0f7eea297682d 100644 (file)
@@ -119,7 +119,7 @@ static int mt76x2_set_antenna(struct ieee80211_hw *hw, u32 tx_ant,
        dev->chainmask = (tx_ant == 3) ? 0x202 : 0x101;
        dev->mphy.antenna_mask = tx_ant;
 
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(&dev->mphy, true);
        mt76x2_phy_set_antenna(dev);
 
        mutex_unlock(&dev->mt76.mutex);
index bb8325e2edbd49664763071a5d0304916430c500..7d59571216e3ffe93fdc00935e56298c5cc4f77b 100644 (file)
@@ -443,7 +443,7 @@ mt7915_cap_dbdc_enable(struct mt7915_dev *dev)
        dev->mphy.hw->wiphy->available_antennas_rx = dev->phy.chainmask;
        dev->mphy.hw->wiphy->available_antennas_tx = dev->phy.chainmask;
 
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(&dev->mphy, true);
        mt7915_set_stream_he_caps(&dev->phy);
 }
 
@@ -459,7 +459,7 @@ mt7915_cap_dbdc_disable(struct mt7915_dev *dev)
        dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
        dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
 
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(&dev->mphy, true);
        mt7915_set_stream_he_caps(&dev->phy);
 }
 
index ef0c91990b492b05597816f1020678be73645b30..697045e65b244a6cedee52880fd9ee7a43ae73a3 100644 (file)
@@ -741,7 +741,7 @@ mt7915_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
        }
        phy->chainmask = tx_ant;
 
-       mt76_set_stream_caps(&dev->mt76, true);
+       mt76_set_stream_caps(phy->mt76, true);
        mt7915_set_stream_he_caps(phy);
 
        mutex_unlock(&dev->mt76.mutex);