mt76: mt7615: introduce mt7615_mcu_fill_msg
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 17 Mar 2020 16:41:08 +0000 (17:41 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 17 Mar 2020 16:47:50 +0000 (17:47 +0100)
Introduce mt7615_mcu_fill_msg routine to initialize mcu messages.
mt7615_mcu_fill_msg will be reused adding mt7663u support

Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h

index b51a3cb247c94e91b05701eb1846db5c94dd584b..71b209fe439f9959d20b560be77e4c44746216a3 100644 (file)
@@ -49,22 +49,20 @@ struct mt7615_fw_trailer {
 #define FW_START_OVERRIDE              BIT(0)
 #define FW_START_WORKING_PDA_CR4       BIT(2)
 
-static int __mt7615_mcu_msg_send(struct mt7615_dev *dev, struct sk_buff *skb,
-                                int cmd, int *wait_seq)
+void mt7615_mcu_fill_msg(struct mt7615_dev *dev, struct sk_buff *skb,
+                        int cmd, int *wait_seq)
 {
        struct mt7615_mcu_txd *mcu_txd;
        u8 seq, q_idx, pkt_fmt;
-       enum mt76_txq_id qid;
-       u32 val;
        __le32 *txd;
+       u32 val;
 
        seq = ++dev->mt76.mcu.msg_seq & 0xf;
        if (!seq)
                seq = ++dev->mt76.mcu.msg_seq & 0xf;
 
-       mcu_txd = (struct mt7615_mcu_txd *)skb_push(skb,
-                  sizeof(struct mt7615_mcu_txd));
-       memset(mcu_txd, 0, sizeof(struct mt7615_mcu_txd));
+       mcu_txd = (struct mt7615_mcu_txd *)skb_push(skb, sizeof(*mcu_txd));
+       memset(mcu_txd, 0, sizeof(*mcu_txd));
 
        if (cmd != -MCU_CMD_FW_SCATTER) {
                q_idx = MT_TX_MCU_PORT_RX_Q0;
@@ -73,7 +71,6 @@ static int __mt7615_mcu_msg_send(struct mt7615_dev *dev, struct sk_buff *skb,
                q_idx = MT_TX_MCU_PORT_RX_FWDL;
                pkt_fmt = MT_TX_TYPE_FW;
        }
-
        txd = mcu_txd->txd;
 
        val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len) |
@@ -104,7 +101,14 @@ static int __mt7615_mcu_msg_send(struct mt7615_dev *dev, struct sk_buff *skb,
 
        if (wait_seq)
                *wait_seq = seq;
+}
+
+static int __mt7615_mcu_msg_send(struct mt7615_dev *dev, struct sk_buff *skb,
+                                int cmd, int *wait_seq)
+{
+       enum mt76_txq_id qid;
 
+       mt7615_mcu_fill_msg(dev, skb, cmd, wait_seq);
        if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state))
                qid = MT_TXQ_MCU;
        else
index 68c4f168320418ab9ace73db79460f3582875e2d..2b7cee4da519db06f256e219634fb062ad9d3bb3 100644 (file)
@@ -364,6 +364,8 @@ int mt7615_mcu_set_rts_thresh(struct mt7615_phy *phy, u32 val);
 int mt7615_mcu_ctrl_pm_state(struct mt7615_dev *dev, int band, int enter);
 int mt7615_mcu_get_temperature(struct mt7615_dev *dev, int index);
 void mt7615_mcu_exit(struct mt7615_dev *dev);
+void mt7615_mcu_fill_msg(struct mt7615_dev *dev, struct sk_buff *skb,
+                        int cmd, int *wait_seq);
 
 int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                          enum mt76_txq_id qid, struct mt76_wcid *wcid,