]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: mt76: mt7915: rework eeprom tx paths and streams init
authorShayne Chen <shayne.chen@mediatek.com>
Fri, 30 Sep 2022 15:13:10 +0000 (23:13 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:12 +0000 (17:29 +0100)
Rework tx paths and streams init part to improve readability, and make
sure that the available tx streams should be smaller than or equal to
the available tx paths.

Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.h

index 4b1a9811646fd0ef8a04898ce0bfb8ca7d48c1d6..83bced0c07859c71453de7c8ee5db9a1e59a7fdc 100644 (file)
@@ -173,60 +173,49 @@ static void mt7915_eeprom_parse_band_config(struct mt7915_phy *phy)
 void mt7915_eeprom_parse_hw_cap(struct mt7915_dev *dev,
                                struct mt7915_phy *phy)
 {
-       u8 nss, nss_band, nss_band_max, *eeprom = dev->mt76.eeprom.data;
+       u8 path, nss, nss_max = 4, *eeprom = dev->mt76.eeprom.data;
        struct mt76_phy *mphy = phy->mt76;
-       bool ext_phy = phy != &dev->phy;
 
        mt7915_eeprom_parse_band_config(phy);
 
-       /* read tx/rx mask from eeprom */
+       /* read tx/rx path from eeprom */
        if (is_mt7915(&dev->mt76)) {
-               nss = FIELD_GET(MT_EE_WIFI_CONF0_TX_PATH,
-                               eeprom[MT_EE_WIFI_CONF]);
+               path = FIELD_GET(MT_EE_WIFI_CONF0_TX_PATH,
+                                eeprom[MT_EE_WIFI_CONF]);
        } else {
-               nss = FIELD_GET(MT_EE_WIFI_CONF0_TX_PATH,
-                               eeprom[MT_EE_WIFI_CONF + phy->band_idx]);
+               path = FIELD_GET(MT_EE_WIFI_CONF0_TX_PATH,
+                                eeprom[MT_EE_WIFI_CONF + phy->band_idx]);
        }
 
-       if (!nss || nss > 4)
-               nss = 4;
+       if (!path || path > 4)
+               path = 4;
 
        /* read tx/rx stream */
-       nss_band = nss;
-
+       nss = path;
        if (dev->dbdc_support) {
                if (is_mt7915(&dev->mt76)) {
-                       nss_band = FIELD_GET(MT_EE_WIFI_CONF3_TX_PATH_B0,
-                                            eeprom[MT_EE_WIFI_CONF + 3]);
+                       nss = FIELD_GET(MT_EE_WIFI_CONF3_TX_PATH_B0,
+                                       eeprom[MT_EE_WIFI_CONF + 3]);
                        if (phy->band_idx)
-                               nss_band = FIELD_GET(MT_EE_WIFI_CONF3_TX_PATH_B1,
-                                                    eeprom[MT_EE_WIFI_CONF + 3]);
+                               nss = FIELD_GET(MT_EE_WIFI_CONF3_TX_PATH_B1,
+                                               eeprom[MT_EE_WIFI_CONF + 3]);
                } else {
-                       nss_band = FIELD_GET(MT_EE_WIFI_CONF_STREAM_NUM,
-                                            eeprom[MT_EE_WIFI_CONF + 2 + phy->band_idx]);
+                       nss = FIELD_GET(MT_EE_WIFI_CONF_STREAM_NUM,
+                                       eeprom[MT_EE_WIFI_CONF + 2 + phy->band_idx]);
                }
 
-               nss_band_max = is_mt7986(&dev->mt76) ?
-                              MT_EE_NSS_MAX_DBDC_MA7986 : MT_EE_NSS_MAX_DBDC_MA7915;
-       } else {
-               nss_band_max = is_mt7986(&dev->mt76) ?
-                              MT_EE_NSS_MAX_MA7986 : MT_EE_NSS_MAX_MA7915;
+               if (!is_mt7986(&dev->mt76))
+                       nss_max = 2;
        }
 
-       if (!nss_band || nss_band > nss_band_max)
-               nss_band = nss_band_max;
-
-       if (nss_band > nss) {
-               dev_warn(dev->mt76.dev,
-                        "nss mismatch, nss(%d) nss_band(%d) band(%d) ext_phy(%d)\n",
-                        nss, nss_band, phy->band_idx, ext_phy);
-               nss = nss_band;
-       }
+       if (!nss)
+               nss = nss_max;
+       nss = min_t(u8, min_t(u8, nss_max, nss), path);
 
-       mphy->chainmask = BIT(nss) - 1;
-       if (ext_phy)
+       mphy->chainmask = BIT(path) - 1;
+       if (phy->band_idx)
                mphy->chainmask <<= dev->chainshift;
-       mphy->antenna_mask = BIT(nss_band) - 1;
+       mphy->antenna_mask = BIT(nss) - 1;
        dev->chainmask |= mphy->chainmask;
        dev->chainshift = hweight8(dev->mphy.chainmask);
 }
index 7578ac6d0be620641b2c5b4e4c19196aea2f4340..f3e56817d36e9d979506583d355ef7ff7c915907 100644 (file)
@@ -58,11 +58,6 @@ enum mt7915_eeprom_field {
 #define MT_EE_RATE_DELTA_SIGN                  BIT(6)
 #define MT_EE_RATE_DELTA_EN                    BIT(7)
 
-#define MT_EE_NSS_MAX_MA7915                   4
-#define MT_EE_NSS_MAX_DBDC_MA7915              2
-#define MT_EE_NSS_MAX_MA7986                   4
-#define MT_EE_NSS_MAX_DBDC_MA7986              4
-
 enum mt7915_adie_sku {
        MT7976_ONE_ADIE_DBDC = 0x7,
        MT7975_ONE_ADIE = 0x8,