]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mt76: mt7615: introduce set_bmc and st_sta for uni commands
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 17 Mar 2020 16:41:28 +0000 (17:41 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 17 Mar 2020 16:47:58 +0000 (17:47 +0100)
Introduce mt7615_mcu_uni_set_bmc and mt7615_mcu_uni_set_sta routines for
mt7663e commands.

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/mcu.h

index 372ffc6322c95b3b89219a17b315efdbedfb4824..a72b65ebdffcea9f9c746d99e223d2a34f95a5ce 100644 (file)
@@ -1062,8 +1062,8 @@ mt7615_mcu_sta_rx_ba(struct mt7615_dev *dev,
 }
 
 static int
-mt7615_mcu_add_sta(struct mt7615_dev *dev, struct ieee80211_vif *vif,
-                  struct ieee80211_sta *sta, bool enable)
+mt7615_mcu_add_sta_cmd(struct mt7615_dev *dev, struct ieee80211_vif *vif,
+                      struct ieee80211_sta *sta, bool enable, int cmd)
 {
        struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
        struct wtbl_req_hdr *wtbl_hdr;
@@ -1092,8 +1092,15 @@ mt7615_mcu_add_sta(struct mt7615_dev *dev, struct ieee80211_vif *vif,
                        mt7615_mcu_wtbl_ht_tlv(skb, sta, sta_wtbl, wtbl_hdr);
        }
 
-       return __mt76_mcu_skb_send_msg(&dev->mt76, skb,
-                                      MCU_EXT_CMD_STA_REC_UPDATE, true);
+       return __mt76_mcu_skb_send_msg(&dev->mt76, skb, cmd, true);
+}
+
+static int
+mt7615_mcu_add_sta(struct mt7615_dev *dev, struct ieee80211_vif *vif,
+                  struct ieee80211_sta *sta, bool enable)
+{
+       return mt7615_mcu_add_sta_cmd(dev, vif, sta, enable,
+                                     MCU_EXT_CMD_STA_REC_UPDATE);
 }
 
 static const struct mt7615_mcu_ops sta_update_ops = {
@@ -1106,6 +1113,18 @@ static const struct mt7615_mcu_ops sta_update_ops = {
        .sta_add = mt7615_mcu_add_sta,
 };
 
+static int
+mt7615_mcu_uni_add_sta(struct mt7615_dev *dev, struct ieee80211_vif *vif,
+                      struct ieee80211_sta *sta, bool enable)
+{
+       return mt7615_mcu_add_sta_cmd(dev, vif, sta, enable,
+                                     MCU_UNI_CMD_STA_REC_UPDATE);
+}
+
+static const struct mt7615_mcu_ops uni_update_ops = {
+       .sta_add = mt7615_mcu_uni_add_sta,
+};
+
 static int mt7615_mcu_send_firmware(struct mt7615_dev *dev, const void *data,
                                    int len)
 {
index 3aad460e080919a99f39d12e65da56d161cefad4..bc87cf0419d8719b5b2b6e59bcc9375739ab5681 100644 (file)
@@ -269,6 +269,10 @@ enum {
        MCU_EXT_CMD_SET_RDD_PATTERN = 0x7d,
 };
 
+enum {
+       MCU_UNI_CMD_STA_REC_UPDATE = MCU_UNI_PREFIX | 0x03,
+};
+
 #define MCU_CMD_ACK            BIT(0)
 #define MCU_CMD_UNI            BIT(1)
 #define MCU_CMD_QUERY          BIT(2)
@@ -607,6 +611,15 @@ struct sta_req_hdr {
        u8 rsv[2];
 } __packed;
 
+struct sta_rec_state {
+       __le16 tag;
+       __le16 len;
+       u8 state;
+       __le32 flags;
+       u8 vhtop;
+       u8 pad[2];
+} __packed;
+
 struct sta_rec_basic {
        __le16 tag;
        __le16 len;
@@ -659,7 +672,7 @@ enum {
        STA_REC_BF,
        STA_REC_AMSDU, /* for CR4 */
        STA_REC_BA,
-       STA_REC_RED, /* not used */
+       STA_REC_STATE,
        STA_REC_TX_PROC, /* for hdr trans and CSO in CR4 */
        STA_REC_HT,
        STA_REC_VHT,