OSDN Git Service

mt76: move mt76x02_init_device in mt76x02-lib module
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Sat, 20 Oct 2018 10:13:24 +0000 (12:13 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 30 Nov 2018 11:21:41 +0000 (12:21 +0100)
Move mt76x02_init_device routine in mt76x02_util.c in order to be
reused by mt76x0 driver and remove duplicated code. Move interface
combo definition supported by the driver in mt76x02_init_device routine

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
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/init.c
drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2.h
drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c
drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c

index ab4fd6e..275d77c 100644 (file)
@@ -340,8 +340,6 @@ int mt76x0_eeprom_init(struct mt76x02_dev *dev)
        mt76x0_set_freq_offset(dev);
        mt76x0_set_temp_offset(dev);
 
-       dev->mt76.chainmask = 0x0101;
-
        return 0;
 }
 
index 263d5e8..95a0152 100644 (file)
@@ -338,46 +338,16 @@ EXPORT_SYMBOL_GPL(mt76x0_alloc_device);
 
 int mt76x0_register_device(struct mt76x02_dev *dev)
 {
-       struct mt76_dev *mdev = &dev->mt76;
-       struct ieee80211_hw *hw = mdev->hw;
-       struct wiphy *wiphy = hw->wiphy;
        int ret;
 
-       /* Reserve WCID 0 for mcast - thanks to this APs WCID will go to
-        * entry no. 1 like it does in the vendor driver.
-        */
-       mdev->wcid_mask[0] |= 1;
-
-       /* init fake wcid for monitor interfaces */
-       mdev->global_wcid.idx = 0xff;
-       mdev->global_wcid.hw_key_idx = -1;
-
-       /* init antenna configuration */
-       mdev->antenna_mask = 1;
-
-       hw->queues = 4;
-       hw->max_rates = 1;
-       hw->max_report_rates = 7;
-       hw->max_rate_tries = 1;
-       hw->extra_tx_headroom = 2;
-       if (mt76_is_usb(dev))
-               hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +
-                                        MT_DMA_HDR_LEN;
-
-       hw->sta_data_size = sizeof(struct mt76x02_sta);
-       hw->vif_data_size = sizeof(struct mt76x02_vif);
-
-       wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
-
-       INIT_DELAYED_WORK(&dev->mac_work, mt76x02_mac_work);
-
-       ret = mt76_register_device(mdev, true, mt76x02_rates,
+       mt76x02_init_device(dev);
+       ret = mt76_register_device(&dev->mt76, true, mt76x02_rates,
                                   ARRAY_SIZE(mt76x02_rates));
        if (ret)
                return ret;
 
        /* overwrite unsupported features */
-       if (mdev->cap.has_5ghz)
+       if (dev->mt76.cap.has_5ghz)
                mt76x0_vht_cap_mask(&dev->mt76.sband_5g.sband);
 
        mt76x02_init_debugfs(dev);
index bdbe4bb..1cd0f75 100644 (file)
@@ -102,6 +102,7 @@ struct mt76x02_dev {
 
 extern struct ieee80211_rate mt76x02_rates[12];
 
+void mt76x02_init_device(struct mt76x02_dev *dev);
 void mt76x02_configure_filter(struct ieee80211_hw *hw,
                             unsigned int changed_flags,
                             unsigned int *total_flags, u64 multicast);
index ca05332..208c76d 100644 (file)
@@ -47,6 +47,87 @@ struct ieee80211_rate mt76x02_rates[] = {
 };
 EXPORT_SYMBOL_GPL(mt76x02_rates);
 
+static const struct ieee80211_iface_limit mt76x02_if_limits[] = {
+       {
+               .max = 1,
+               .types = BIT(NL80211_IFTYPE_ADHOC)
+       }, {
+               .max = 8,
+               .types = BIT(NL80211_IFTYPE_STATION) |
+#ifdef CONFIG_MAC80211_MESH
+                        BIT(NL80211_IFTYPE_MESH_POINT) |
+#endif
+                        BIT(NL80211_IFTYPE_AP)
+        },
+};
+
+static const struct ieee80211_iface_combination mt76x02_if_comb[] = {
+       {
+               .limits = mt76x02_if_limits,
+               .n_limits = ARRAY_SIZE(mt76x02_if_limits),
+               .max_interfaces = 8,
+               .num_different_channels = 1,
+               .beacon_int_infra_match = true,
+               .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
+                                      BIT(NL80211_CHAN_WIDTH_20) |
+                                      BIT(NL80211_CHAN_WIDTH_40) |
+                                      BIT(NL80211_CHAN_WIDTH_80),
+       }
+};
+
+void mt76x02_init_device(struct mt76x02_dev *dev)
+{
+       struct ieee80211_hw *hw = mt76_hw(dev);
+       struct wiphy *wiphy = hw->wiphy;
+
+       INIT_DELAYED_WORK(&dev->mac_work, mt76x02_mac_work);
+
+       hw->queues = 4;
+       hw->max_rates = 1;
+       hw->max_report_rates = 7;
+       hw->max_rate_tries = 1;
+       hw->extra_tx_headroom = 2;
+
+       if (mt76_is_usb(dev)) {
+               hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +
+                                        MT_DMA_HDR_LEN;
+               wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
+       } else {
+               wiphy->iface_combinations = mt76x02_if_comb;
+               wiphy->n_iface_combinations = ARRAY_SIZE(mt76x02_if_comb);
+               wiphy->interface_modes =
+                       BIT(NL80211_IFTYPE_STATION) |
+                       BIT(NL80211_IFTYPE_AP) |
+#ifdef CONFIG_MAC80211_MESH
+                       BIT(NL80211_IFTYPE_MESH_POINT) |
+#endif
+                       BIT(NL80211_IFTYPE_ADHOC);
+       }
+
+       hw->sta_data_size = sizeof(struct mt76x02_sta);
+       hw->vif_data_size = sizeof(struct mt76x02_vif);
+
+       ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
+       ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
+
+       dev->mt76.global_wcid.idx = 255;
+       dev->mt76.global_wcid.hw_key_idx = -1;
+       dev->slottime = 9;
+
+       if (is_mt76x2(dev)) {
+               dev->mt76.sband_2g.sband.ht_cap.cap |=
+                               IEEE80211_HT_CAP_LDPC_CODING;
+               dev->mt76.sband_5g.sband.ht_cap.cap |=
+                               IEEE80211_HT_CAP_LDPC_CODING;
+               dev->mt76.chainmask = 0x202;
+               dev->mt76.antenna_mask = 3;
+       } else {
+               dev->mt76.chainmask = 0x101;
+               dev->mt76.antenna_mask = 1;
+       }
+}
+EXPORT_SYMBOL_GPL(mt76x02_init_device);
+
 void mt76x02_configure_filter(struct ieee80211_hw *hw,
                              unsigned int changed_flags,
                              unsigned int *total_flags, u64 multicast)
index 04790f8..54a9b5f 100644 (file)
@@ -158,40 +158,6 @@ void mt76_write_mac_initvals(struct mt76x02_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt76_write_mac_initvals);
 
-void mt76x2_init_device(struct mt76x02_dev *dev)
-{
-       struct ieee80211_hw *hw = mt76_hw(dev);
-
-       INIT_DELAYED_WORK(&dev->mac_work, mt76x02_mac_work);
-
-       hw->queues = 4;
-       hw->max_rates = 1;
-       hw->max_report_rates = 7;
-       hw->max_rate_tries = 1;
-       hw->extra_tx_headroom = 2;
-       if (mt76_is_usb(dev))
-               hw->extra_tx_headroom += sizeof(struct mt76x02_txwi) +
-                                        MT_DMA_HDR_LEN;
-
-       hw->sta_data_size = sizeof(struct mt76x02_sta);
-       hw->vif_data_size = sizeof(struct mt76x02_vif);
-
-       ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
-       ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
-
-       dev->mt76.sband_2g.sband.ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
-       dev->mt76.sband_5g.sband.ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
-
-       dev->mt76.chainmask = 0x202;
-       dev->mt76.global_wcid.idx = 255;
-       dev->mt76.global_wcid.hw_key_idx = -1;
-       dev->slottime = 9;
-
-       /* init antenna configuration */
-       dev->mt76.antenna_mask = 3;
-}
-EXPORT_SYMBOL_GPL(mt76x2_init_device);
-
 void mt76x2_init_txpower(struct mt76x02_dev *dev,
                         struct ieee80211_supported_band *sband)
 {
index 7408db7..eaa44de 100644 (file)
@@ -52,7 +52,6 @@ extern const struct ieee80211_ops mt76x2_ops;
 
 struct mt76x02_dev *mt76x2_alloc_device(struct device *pdev);
 int mt76x2_register_device(struct mt76x02_dev *dev);
-void mt76x2_init_device(struct mt76x02_dev *dev);
 
 void mt76x2_phy_power_on(struct mt76x02_dev *dev);
 int mt76x2_init_hardware(struct mt76x02_dev *dev);
index b15c97e..d0dbf69 100644 (file)
@@ -384,34 +384,6 @@ static void mt76x2_regd_notifier(struct wiphy *wiphy,
        mt76x2_dfs_set_domain(dev, request->dfs_region);
 }
 
-static const struct ieee80211_iface_limit if_limits[] = {
-       {
-               .max = 1,
-               .types = BIT(NL80211_IFTYPE_ADHOC)
-       }, {
-               .max = 8,
-               .types = BIT(NL80211_IFTYPE_STATION) |
-#ifdef CONFIG_MAC80211_MESH
-                        BIT(NL80211_IFTYPE_MESH_POINT) |
-#endif
-                        BIT(NL80211_IFTYPE_AP)
-        },
-};
-
-static const struct ieee80211_iface_combination if_comb[] = {
-       {
-               .limits = if_limits,
-               .n_limits = ARRAY_SIZE(if_limits),
-               .max_interfaces = 8,
-               .num_different_channels = 1,
-               .beacon_int_infra_match = true,
-               .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
-                                      BIT(NL80211_CHAN_WIDTH_20) |
-                                      BIT(NL80211_CHAN_WIDTH_40) |
-                                      BIT(NL80211_CHAN_WIDTH_80),
-       }
-};
-
 static void mt76x2_led_set_config(struct mt76_dev *mt76, u8 delay_on,
                                  u8 delay_off)
 {
@@ -468,7 +440,7 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
 
        INIT_DELAYED_WORK(&dev->cal_work, mt76x2_phy_calibrate);
 
-       mt76x2_init_device(dev);
+       mt76x02_init_device(dev);
 
        ret = mt76x2_init_hardware(dev);
        if (ret)
@@ -488,19 +460,8 @@ int mt76x2_register_device(struct mt76x02_dev *dev)
        wiphy->addresses = dev->macaddr_list;
        wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
 
-       wiphy->iface_combinations = if_comb;
-       wiphy->n_iface_combinations = ARRAY_SIZE(if_comb);
-
        wiphy->reg_notifier = mt76x2_regd_notifier;
 
-       wiphy->interface_modes =
-               BIT(NL80211_IFTYPE_STATION) |
-               BIT(NL80211_IFTYPE_AP) |
-#ifdef CONFIG_MAC80211_MESH
-               BIT(NL80211_IFTYPE_MESH_POINT) |
-#endif
-               BIT(NL80211_IFTYPE_ADHOC);
-
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VHT_IBSS);
 
        mt76x2_dfs_init_detector(dev);
index b2388f5..a7d5916 100644 (file)
@@ -245,11 +245,10 @@ int mt76x2u_init_hardware(struct mt76x02_dev *dev)
 int mt76x2u_register_device(struct mt76x02_dev *dev)
 {
        struct ieee80211_hw *hw = mt76_hw(dev);
-       struct wiphy *wiphy = hw->wiphy;
        int err;
 
        INIT_DELAYED_WORK(&dev->cal_work, mt76x2u_phy_calibrate);
-       mt76x2_init_device(dev);
+       mt76x02_init_device(dev);
 
        err = mt76x2u_init_eeprom(dev);
        if (err < 0)
@@ -267,8 +266,6 @@ int mt76x2u_register_device(struct mt76x02_dev *dev)
        if (err < 0)
                goto fail;
 
-       wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
-
        err = mt76_register_device(&dev->mt76, true, mt76x02_rates,
                                   ARRAY_SIZE(mt76x02_rates));
        if (err)