]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
mt76: mt7615: refactor usb/sdio rate code
authorLorenzo Bianconi <lorenzo@kernel.org>
Sun, 8 Nov 2020 10:27:45 +0000 (11:27 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 4 Dec 2020 13:31:14 +0000 (14:31 +0100)
Since wtbl workqueue is used only for rate handling, refactor code to
make it more clear

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/mac.c
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
drivers/net/wireless/mediatek/mt76/mt7615/usb_sdio.c

index b0a94c7de0ebe967a2c8dc0d53ba91a614fc4001..54650f265df7ef7ab9b0b8c46e9eb0fe2d526ef6 100644 (file)
@@ -915,22 +915,20 @@ mt7615_mac_queue_rate_update(struct mt7615_phy *phy, struct mt7615_sta *sta,
                             struct ieee80211_tx_rate *rates)
 {
        struct mt7615_dev *dev = phy->dev;
-       struct mt7615_wtbl_desc *wd;
+       struct mt7615_wtbl_rate_desc *wrd;
 
-       if (work_pending(&dev->wtbl_work))
+       if (work_pending(&dev->rate_work))
                return -EBUSY;
 
-       wd = kzalloc(sizeof(*wd), GFP_ATOMIC);
-       if (!wd)
+       wrd = kzalloc(sizeof(*wrd), GFP_ATOMIC);
+       if (!wrd)
                return -ENOMEM;
 
-       wd->type = MT7615_WTBL_RATE_DESC;
-       wd->sta = sta;
-
+       wrd->sta = sta;
        mt7615_mac_update_rate_desc(phy, sta, probe_rate, rates,
-                                   &wd->rate);
-       list_add_tail(&wd->node, &dev->wd_head);
-       queue_work(dev->mt76.wq, &dev->wtbl_work);
+                                   &wrd->rate);
+       list_add_tail(&wrd->node, &dev->wrd_head);
+       queue_work(dev->mt76.wq, &dev->rate_work);
 
        return 0;
 }
index 2570a8ca424a3216f16b1c4c906c343d13f85d7b..625df4b8e730e2da5115bde4e29b67210b27b9cb 100644 (file)
@@ -106,19 +106,11 @@ struct mt7615_rate_desc {
        u8 bw;
 };
 
-enum mt7615_wtbl_desc_type {
-       MT7615_WTBL_RATE_DESC,
-};
-
-struct mt7615_wtbl_desc {
+struct mt7615_wtbl_rate_desc {
        struct list_head node;
 
-       enum mt7615_wtbl_desc_type type;
+       struct mt7615_rate_desc rate;
        struct mt7615_sta *sta;
-
-       union {
-               struct mt7615_rate_desc rate;
-       };
 };
 
 struct mt7615_sta {
@@ -281,8 +273,8 @@ struct mt7615_dev {
 
        u8 fw_ver;
 
-       struct work_struct wtbl_work;
-       struct list_head wd_head;
+       struct work_struct rate_work;
+       struct list_head wrd_head;
 
        u32 debugfs_rf_wf;
        u32 debugfs_rf_reg;
@@ -649,7 +641,6 @@ int mt7663_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
 bool mt7663_usb_sdio_tx_status_data(struct mt76_dev *mdev, u8 *update);
 void mt7663_usb_sdio_tx_complete_skb(struct mt76_dev *mdev,
                                     struct mt76_queue_entry *e);
-void mt7663_usb_sdio_wtbl_work(struct work_struct *work);
 int mt7663_usb_sdio_register_device(struct mt7615_dev *dev);
 int mt7663u_mcu_init(struct mt7615_dev *dev);
 
index eb3a14cb6cc12e9396cbcbc90eb3e81b68e9f05d..203256862dfdd6a5fa11eece29b6d8c8d3592830 100644 (file)
@@ -61,12 +61,11 @@ mt7663_usb_sdio_write_txwi(struct mt7615_dev *dev, struct mt76_wcid *wcid,
        skb_push(skb, MT_USB_TXD_SIZE);
 }
 
-static int
-mt7663_usb_sdio_set_rates(struct mt7615_dev *dev,
-                         struct mt7615_wtbl_desc *wd)
+static int mt7663_usb_sdio_set_rates(struct mt7615_dev *dev,
+                                    struct mt7615_wtbl_rate_desc *wrd)
 {
-       struct mt7615_rate_desc *rate = &wd->rate;
-       struct mt7615_sta *sta = wd->sta;
+       struct mt7615_rate_desc *rate = &wrd->rate;
+       struct mt7615_sta *sta = wrd->sta;
        u32 w5, w27, addr, val;
 
        lockdep_assert_held(&dev->mt76.mutex);
@@ -132,37 +131,30 @@ mt7663_usb_sdio_set_rates(struct mt7615_dev *dev,
        return 0;
 }
 
-void mt7663_usb_sdio_wtbl_work(struct work_struct *work)
+static void mt7663_usb_sdio_rate_work(struct work_struct *work)
 {
-       struct mt7615_wtbl_desc *wd, *wd_next;
-       struct list_head wd_list;
+       struct mt7615_wtbl_rate_desc *wrd, *wrd_next;
+       struct list_head wrd_list;
        struct mt7615_dev *dev;
 
        dev = (struct mt7615_dev *)container_of(work, struct mt7615_dev,
-                                               wtbl_work);
+                                               rate_work);
 
-       INIT_LIST_HEAD(&wd_list);
+       INIT_LIST_HEAD(&wrd_list);
        spin_lock_bh(&dev->mt76.lock);
-       list_splice_init(&dev->wd_head, &wd_list);
+       list_splice_init(&dev->wrd_head, &wrd_list);
        spin_unlock_bh(&dev->mt76.lock);
 
-       list_for_each_entry_safe(wd, wd_next, &wd_list, node) {
-               list_del(&wd->node);
+       list_for_each_entry_safe(wrd, wrd_next, &wrd_list, node) {
+               list_del(&wrd->node);
 
                mt7615_mutex_acquire(dev);
-
-               switch (wd->type) {
-               case MT7615_WTBL_RATE_DESC:
-                       mt7663_usb_sdio_set_rates(dev, wd);
-                       break;
-               }
-
+               mt7663_usb_sdio_set_rates(dev, wrd);
                mt7615_mutex_release(dev);
 
-               kfree(wd);
+               kfree(wrd);
        }
 }
-EXPORT_SYMBOL_GPL(mt7663_usb_sdio_wtbl_work);
 
 bool mt7663_usb_sdio_tx_status_data(struct mt76_dev *mdev, u8 *update)
 {
@@ -308,8 +300,8 @@ int mt7663_usb_sdio_register_device(struct mt7615_dev *dev)
        struct ieee80211_hw *hw = mt76_hw(dev);
        int err;
 
-       INIT_WORK(&dev->wtbl_work, mt7663_usb_sdio_wtbl_work);
-       INIT_LIST_HEAD(&dev->wd_head);
+       INIT_WORK(&dev->rate_work, mt7663_usb_sdio_rate_work);
+       INIT_LIST_HEAD(&dev->wrd_head);
        mt7615_init_device(dev);
 
        err = mt7663_usb_sdio_init_hardware(dev);