OSDN Git Service

mt76: sdio: get rid of sched.lock
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 6 Oct 2020 12:00:01 +0000 (14:00 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 4 Dec 2020 12:46:16 +0000 (13:46 +0100)
sched quota is now updated in mt7663s_txrx_worker so there is no more
need of sched.lock mutex

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

index e1a3338..8da6453 100644 (file)
@@ -461,7 +461,6 @@ struct mt76_sdio {
        void *intr_data;
 
        struct {
-               struct mutex lock;
                int pse_data_quota;
                int ple_data_quota;
                int pse_mcu_quota;
index 2a387dc..e4995c6 100644 (file)
 static int mt7663s_mcu_init_sched(struct mt7615_dev *dev)
 {
        struct mt76_sdio *sdio = &dev->mt76.sdio;
-       u32 pse0, ple, pse1, txdwcnt;
-
-       pse0 = mt76_get_field(dev, MT_PSE_PG_HIF0_GROUP, MT_HIF0_MIN_QUOTA);
-       pse1 = mt76_get_field(dev, MT_PSE_PG_HIF1_GROUP, MT_HIF1_MIN_QUOTA);
-       ple = mt76_get_field(dev, MT_PLE_PG_HIF0_GROUP, MT_HIF0_MIN_QUOTA);
+       u32 txdwcnt;
+
+       sdio->sched.pse_data_quota = mt76_get_field(dev, MT_PSE_PG_HIF0_GROUP,
+                                                   MT_HIF0_MIN_QUOTA);
+       sdio->sched.pse_mcu_quota = mt76_get_field(dev, MT_PSE_PG_HIF1_GROUP,
+                                                  MT_HIF1_MIN_QUOTA);
+       sdio->sched.ple_data_quota = mt76_get_field(dev, MT_PLE_PG_HIF0_GROUP,
+                                                   MT_HIF0_MIN_QUOTA);
        txdwcnt = mt76_get_field(dev, MT_PP_TXDWCNT,
                                 MT_PP_TXDWCNT_TX1_ADD_DW_CNT);
-
-       mutex_lock(&sdio->sched.lock);
-
-       sdio->sched.pse_data_quota = pse0;
-       sdio->sched.ple_data_quota = ple;
-       sdio->sched.pse_mcu_quota = pse1;
        sdio->sched.deficit = txdwcnt << 2;
 
-       mutex_unlock(&sdio->sched.lock);
-
        return 0;
 }
 
index 77377c2..e46ed4b 100644 (file)
@@ -46,11 +46,9 @@ static int mt7663s_refill_sched_quota(struct mt76_dev *dev, u32 *data)
        if (!pse_data_quota && !ple_data_quota && !pse_mcu_quota)
                return 0;
 
-       mutex_lock(&sdio->sched.lock);
        sdio->sched.pse_mcu_quota += pse_mcu_quota;
        sdio->sched.pse_data_quota += pse_data_quota;
        sdio->sched.ple_data_quota += ple_data_quota;
-       mutex_unlock(&sdio->sched.lock);
 
        return pse_data_quota + ple_data_quota + pse_mcu_quota;
 }
@@ -193,14 +191,12 @@ static int mt7663s_tx_pick_quota(struct mt76_sdio *sdio, enum mt76_txq_id qid,
 static void mt7663s_tx_update_quota(struct mt76_sdio *sdio, enum mt76_txq_id qid,
                                    int pse_size, int ple_size)
 {
-       mutex_lock(&sdio->sched.lock);
        if (qid == MT_TXQ_MCU) {
                sdio->sched.pse_mcu_quota -= pse_size;
        } else {
                sdio->sched.pse_data_quota -= pse_size;
                sdio->sched.ple_data_quota -= ple_size;
        }
-       mutex_unlock(&sdio->sched.lock);
 }
 
 static int __mt7663s_xmit_queue(struct mt76_dev *dev, u8 *data, int len)
index 41e832b..b4def26 100644 (file)
@@ -350,7 +350,6 @@ int mt76s_init(struct mt76_dev *dev, struct sdio_func *func,
 
        INIT_WORK(&sdio->stat_work, mt76s_tx_status_data);
 
-       mutex_init(&sdio->sched.lock);
        dev->queue_ops = &sdio_queue_ops;
        dev->bus = bus_ops;
        dev->sdio.func = func;