mt76: introduce mt76x02_config_mac_addr_list routine
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Tue, 6 Nov 2018 22:49:12 +0000 (23:49 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 30 Nov 2018 11:29:24 +0000 (12:29 +0100)
Add mt76x02_config_mac_addr_list routine in order to set
the mac address list supported by the driver. Initialize
wiphy->addresses/n_addresses for mt76x0e driver

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/mt76x02.h
drivers/net/wireless/mediatek/mt76/mt76x02_util.c
drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c

index e74d476..87b575f 100644 (file)
@@ -289,6 +289,8 @@ int mt76x0_register_device(struct mt76x02_dev *dev)
        int ret;
 
        mt76x02_init_device(dev);
+       mt76x02_config_mac_addr_list(dev);
+
        ret = mt76_register_device(&dev->mt76, true, mt76x02_rates,
                                   ARRAY_SIZE(mt76x02_rates));
        if (ret)
index a8c5fdd..65daa3d 100644 (file)
@@ -115,6 +115,7 @@ int mt76x02_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 int mt76x02_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                      struct ieee80211_sta *sta);
 
+void mt76x02_config_mac_addr_list(struct mt76x02_dev *dev);
 void mt76x02_vif_init(struct mt76x02_dev *dev, struct ieee80211_vif *vif,
                      unsigned int idx);
 int mt76x02_add_interface(struct ieee80211_hw *hw,
index 87ce6a5..a52db63 100644 (file)
@@ -700,4 +700,26 @@ void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
 }
 EXPORT_SYMBOL_GPL(mt76x02_bss_info_changed);
 
+void mt76x02_config_mac_addr_list(struct mt76x02_dev *dev)
+{
+       struct ieee80211_hw *hw = mt76_hw(dev);
+       struct wiphy *wiphy = hw->wiphy;
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(dev->macaddr_list); i++) {
+               u8 *addr = dev->macaddr_list[i].addr;
+
+               memcpy(addr, dev->mt76.macaddr, ETH_ALEN);
+
+               if (!i)
+                       continue;
+
+               addr[0] |= BIT(1);
+               addr[0] ^= ((i - 1) << 2);
+       }
+       wiphy->addresses = dev->macaddr_list;
+       wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
+}
+EXPORT_SYMBOL_GPL(mt76x02_config_mac_addr_list);
+
 MODULE_LICENSE("Dual BSD/GPL");
index 076b747..80b4e11 100644 (file)
@@ -390,7 +390,7 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
 {
        struct ieee80211_hw *hw = mt76_hw(dev);
        struct wiphy *wiphy = hw->wiphy;
-       int i, ret;
+       int ret;
 
        INIT_DELAYED_WORK(&dev->cal_work, mt76x2_phy_calibrate);
 
@@ -400,20 +400,7 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
        if (ret)
                return ret;
 
-       for (i = 0; i < ARRAY_SIZE(dev->macaddr_list); i++) {
-               u8 *addr = dev->macaddr_list[i].addr;
-
-               memcpy(addr, dev->mt76.macaddr, ETH_ALEN);
-
-               if (!i)
-                       continue;
-
-               addr[0] |= BIT(1);
-               addr[0] ^= ((i - 1) << 2);
-       }
-       wiphy->addresses = dev->macaddr_list;
-       wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
-
+       mt76x02_config_mac_addr_list(dev);
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VHT_IBSS);
 
        /* init led callbacks */