mt76: move tx mcu shared code in mt76_connac
Subsystems (2)
Lorenzo Bianconi
maintainercover mt76: move tx mcu shared code in mt76_connac
Move mt76_connac2_mcu_fill_message routine in shared code in order to reuse it for mt7921 and mt7915e drivers.
This is a preliminary series to add mt7990 driver support.
This series is based on the series below:
https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/
Lorenzo Bianconi (2):
mt76: move mcu_txd/mcu_rxd structures in shared code
mt76: move mt76_connac2_mcu_fill_message in mt76_connac module
.../net/wireless/mediatek/mt76/mt7615/mcu.h | 3 - .../wireless/mediatek/mt76/mt76_connac2_mac.h | 13 +++ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 77 +++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 90 ++++++++++++++++ .../net/wireless/mediatek/mt76/mt7915/mac.h | 12 --- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 86 ++++----------- .../net/wireless/mediatek/mt76/mt7915/mcu.h | 45 +------- .../net/wireless/mediatek/mt76/mt7921/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.h | 13 --- .../net/wireless/mediatek/mt76/mt7921/main.c | 4 +- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 102 +++--------------- .../net/wireless/mediatek/mt76/mt7921/mcu.h | 88 --------------- .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 - .../wireless/mediatek/mt76/mt7921/pci_mcu.c | 11 +- .../wireless/mediatek/mt76/mt7921/sdio_mcu.c | 12 ++- .../net/wireless/mediatek/mt76/mt7921/usb.c | 12 ++- 16 files changed, 250 insertions(+), 322 deletions(-)
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH 2/2 mt76: move mt76_connac2_mcu_fill_message in mt76_connac module
Move mt76_connac2_mcu_fill_message routine in shared module in order to reuse it for mt7921 and mt7915e drivers. This is a preliminary patch to add mt7990 driver support.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.h | 3 - .../wireless/mediatek/mt76/mt76_connac2_mac.h | 13 ++++ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 77 +++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 5 ++ .../net/wireless/mediatek/mt76/mt7915/mac.h | 12 --- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 61 ++------------- .../net/wireless/mediatek/mt76/mt7915/mcu.h | 3 - .../net/wireless/mediatek/mt76/mt7921/mac.h | 13 ---- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 77 ------------------- .../net/wireless/mediatek/mt76/mt7921/mcu.h | 3 - .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 - .../wireless/mediatek/mt76/mt7921/pci_mcu.c | 9 ++- .../wireless/mediatek/mt76/mt7921/sdio_mcu.c | 9 ++- .../net/wireless/mediatek/mt76/mt7921/usb.c | 9 ++- 14 files changed, 125 insertions(+), 171 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.h +0 -3
@@ -201,9 +201,6 @@ struct mt7615_mcu_rdd_report { } hw_pulse[32 ]; }; -#define MCU_PQ_ID (p, q) (((p) << 15) | ((q) << 10)) -#define MCU_PKT_ID 0xa0 -enum {MCU_ATE_SET_FREQ_OFFSET =0xa ,MCU_ATE_SET_TX_POWER_CONTROL =0x15 ,
drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h +13 -0
@@ -307,4 +307,17 @@ enum {#define MT_CT_INFO_HSR2_TX BIT(4)#define MT_CT_INFO_FROM_HOST BIT(7) +enum tx_mcu_port_q_idx { +MT_TX_MCU_PORT_RX_Q0 =0x20 , +MT_TX_MCU_PORT_RX_Q1 , +MT_TX_MCU_PORT_RX_Q2 , +MT_TX_MCU_PORT_RX_Q3 , +MT_TX_MCU_PORT_RX_FWDL =0x3e +}; + +enum tx_port_idx { +MT_TX_PORT_IDX_LMAC , +MT_TX_PORT_IDX_MCU +}; +#endif /* __MT76_CONNAC2_MAC_H */
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +77 -0
88 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +5 -0
@@ -33,6 +33,9 @@#define PATCH_SEC_ENC_SCRAMBLE_INFO_MASK GENMASK(15, 0)#define PATCH_SEC_ENC_AES_KEY_MASK GENMASK(7, 0) +#define MCU_PQ_ID (p, q) (((p) << 15) | ((q) << 10)) +#define MCU_PKT_ID 0xa0 +struct mt76_connac2_mcu_txd {__le32 txd[8 ];
@@ -1804,4 +1807,6 @@ int mt76_connac_mcu_rdd_cmd(struct mt76_dev *dev, int cmd, u8 index,int mt76_connac2_load_ram (struct mt76_dev *dev,const char *fw_wm,const char *fw_wa);int mt76_connac2_load_patch (struct mt76_dev *dev,const char *fw_name); +int mt76_connac2_mcu_fill_message (struct mt76_dev *mdev,struct sk_buff *skb, +int cmd,int *wait_seq);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mac.h +0 -12
@@ -29,18 +29,6 @@ enum rx_pkt_type { PKT_TYPE_TXRX_NOTIFY_V0 = 0x18, }; -enum tx_port_idx { -MT_TX_PORT_IDX_LMAC , -MT_TX_PORT_IDX_MCU -}; - -enum tx_mcu_port_q_idx { -MT_TX_MCU_PORT_RX_Q0 =0x20 , -MT_TX_MCU_PORT_RX_Q1 , -MT_TX_MCU_PORT_RX_Q2 , -MT_TX_MCU_PORT_RX_Q3 , -MT_TX_MCU_PORT_RX_FWDL =0x3e -};#define MT_TX_FREE_VER GENMASK(18, 16)#define MT_TX_FREE_MSDU_CNT GENMASK(9, 0)#define MT_TX_FREE_MSDU_CNT_V0 GENMASK(6, 0)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +6 -55
75 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7915/mcu.h +0 -3
@@ -233,9 +233,6 @@ struct mt7915_mcu_muru_stats {#define WMM_TXOP_SET BIT(3)#define WMM_PARAM_SET GENMASK(3, 0) -#define MCU_PQ_ID (p, q) (((p) << 15) | ((q) << 10)) -#define MCU_PKT_ID 0xa0 -enum {MCU_FW_LOG_WM ,MCU_FW_LOG_WA ,
drivers/net/wireless/mediatek/mt76/mt7921/mac.h +0 -13
@@ -29,19 +29,6 @@ enum rx_pkt_type { PKT_TYPE_NORMAL_MCU, }; -enum tx_port_idx { -MT_TX_PORT_IDX_LMAC , -MT_TX_PORT_IDX_MCU -}; - -enum tx_mcu_port_q_idx { -MT_TX_MCU_PORT_RX_Q0 =0x20 , -MT_TX_MCU_PORT_RX_Q1 , -MT_TX_MCU_PORT_RX_Q2 , -MT_TX_MCU_PORT_RX_Q3 , -MT_TX_MCU_PORT_RX_FWDL =0x3e -}; -#define MT_TX_FREE_MSDU_CNT GENMASK(9, 0)#define MT_TX_FREE_WLAN_ID GENMASK(23, 14)#define MT_TX_FREE_LATENCY GENMASK(12, 0)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +0 -77
83 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h +0 -3
@@ -50,9 +50,6 @@ struct mt7921_mcu_eeprom_info {#define MT_RA_RATE_DCM_EN BIT(4)#define MT_RA_RATE_BW GENMASK(14, 13) -#define MCU_PQ_ID (p, q) (((p) << 15) | ((q) << 10)) -#define MCU_PKT_ID 0xa0 -struct mt7921_mcu_uni_event {u8 cid;u8 pad[3 ];
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -2
@@ -419,8 +419,6 @@ int mt7921_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *msg, struct netlink_callback *cb, void *data, int len);void mt7921_tx_check_aggr (struct ieee80211_sta *sta,__le32 *txwi);void mt7921_mac_sta_poll (struct mt7921_dev *dev); -int mt7921_mcu_fill_message (struct mt76_dev *mdev,struct sk_buff *skb, -int cmd,int *wait_seq);int mt7921_mcu_parse_response (struct mt76_dev *mdev,int cmd,struct sk_buff *skb,int seq);
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c +8 -1
@@ -26,10 +26,17 @@ mt7921_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,enum mt76_mcuq_id txq =MT_MCUQ_WM ;int ret; - ret =mt7921_mcu_fill_message (mdev, skb, cmd, seq); + ret =mt76_connac2_mcu_fill_message (mdev, skb, cmd, seq);if (ret)return ret; +if (cmd ==MCU_UNI_CMD (HIF_CTRL ) || + cmd ==MCU_UNI_CMD (SUSPEND ) || + cmd ==MCU_UNI_CMD (OFFLOAD )) + mdev->mcu.timeout =HZ ; +else + mdev->mcu.timeout =3 *HZ ; +if (cmd ==MCU_CMD (FW_SCATTER )) txq =MT_MCUQ_FWDL ;
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mcu.c +8 -1
@@ -29,10 +29,17 @@ mt7921s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,if (dev->fw_assert)return -EBUSY ; - ret =mt7921_mcu_fill_message (mdev, skb, cmd, seq); + ret =mt76_connac2_mcu_fill_message (mdev, skb, cmd, seq);if (ret)return ret; +if (cmd ==MCU_UNI_CMD (HIF_CTRL ) || + cmd ==MCU_UNI_CMD (SUSPEND ) || + cmd ==MCU_UNI_CMD (OFFLOAD )) + mdev->mcu.timeout =HZ ; +else + mdev->mcu.timeout =3 *HZ ; +if (cmd ==MCU_CMD (FW_SCATTER )) type =MT7921_SDIO_FWDL ;
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +8 -1
@@ -102,10 +102,17 @@ mt7921u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,u32 pad, ep;int ret; - ret =mt7921_mcu_fill_message (mdev, skb, cmd, seq); + ret =mt76_connac2_mcu_fill_message (mdev, skb, cmd, seq);if (ret)return ret; +if (cmd ==MCU_UNI_CMD (HIF_CTRL ) || + cmd ==MCU_UNI_CMD (SUSPEND ) || + cmd ==MCU_UNI_CMD (OFFLOAD )) + mdev->mcu.timeout =HZ ; +else + mdev->mcu.timeout =3 *HZ ; +if (cmd !=MCU_CMD (FW_SCATTER )) ep =MT_EP_OUT_INBAND_CMD ;else
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH 1/2 mt76: move mcu_txd/mcu_rxd structures in shared code
In reply to Lorenzo BianconiThis is a preliminary patch to add mt7990 chipset support.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 85 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 29 ++++--- .../net/wireless/mediatek/mt76/mt7915/mcu.h | 42 +-------- .../net/wireless/mediatek/mt76/mt7921/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 4 +- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 33 +++---- .../net/wireless/mediatek/mt76/mt7921/mcu.h | 85 ------------------- .../wireless/mediatek/mt76/mt7921/pci_mcu.c | 2 +- .../wireless/mediatek/mt76/mt7921/sdio_mcu.c | 3 +- .../net/wireless/mediatek/mt76/mt7921/usb.c | 3 +- 10 files changed, 131 insertions(+), 157 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +85 -0
@@ -33,6 +33,91 @@#define PATCH_SEC_ENC_SCRAMBLE_INFO_MASK GENMASK(15, 0)#define PATCH_SEC_ENC_AES_KEY_MASK GENMASK(7, 0) +struct mt76_connac2_mcu_txd { +__le32 txd[8 ]; + +__le16 len; +__le16 pq_id; + +u8 cid; +u8 pkt_type; +u8 set_query;/* FW don't care */ +u8 seq; + +u8 uc_d2b0_rev; +u8 ext_cid; +u8 s2d_index; +u8 ext_cid_ack; + +u32 rsv[5 ]; +} __packed__aligned(4) ; + +/** +* struct mt76_connac2_mcu_uni_txd - mcu command descriptor for firmware v3 +* @txd: hardware descriptor +* @len: total length not including txd +* @cid: command identifier +* @pkt_type: must be 0xa0 (cmd packet by long format) +* @frag_n: fragment number +* @seq: sequence number +* @checksum: 0 mean there is no checksum +* @s2d_index: index for command source and destination +* Definition | value | note +* CMD_S2D_IDX_H2N | 0x00 | command from HOST to WM +* CMD_S2D_IDX_C2N | 0x01 | command from WA to WM +* CMD_S2D_IDX_H2C | 0x02 | command from HOST to WA +* CMD_S2D_IDX_H2N_AND_H2C | 0x03 | command from HOST to WA and WM +* +* @option: command option +* BIT[0]: UNI_CMD_OPT_BIT_ACK +* set to 1 to request a fw reply +* if UNI_CMD_OPT_BIT_0_ACK is set and UNI_CMD_OPT_BIT_2_SET_QUERY +* is set, mcu firmware will send response event EID = 0x01 +* (UNI_EVENT_ID_CMD_RESULT) to the host. +* BIT[1]: UNI_CMD_OPT_BIT_UNI_CMD +* 0: original command +* 1: unified command +* BIT[2]: UNI_CMD_OPT_BIT_SET_QUERY +* 0: QUERY command +* 1: SET command +*/ +struct mt76_connac2_mcu_uni_txd { +__le32 txd[8 ]; + +/* DW1 */ +__le16 len; +__le16 cid; + +/* DW2 */ +u8 rsv; +u8 pkt_type; +u8 frag_n; +u8 seq; + +/* DW3 */ +__le16 checksum; +u8 s2d_index; +u8 option; + +/* DW4 */ +u8 rsv1[4 ]; +} __packed__aligned(4) ; + +struct mt76_connac2_mcu_rxd { +__le32 rxd[6 ]; + +__le16 len; +__le16 pkt_type_id; + +u8 eid; +u8 seq; +u8 rsv[2 ]; + +u8 ext_eid; +u8 rsv1[2 ]; +u8 s2d_index; +}; +struct mt76_connac2_patch_hdr {char build_date[16 ];char platform[4 ];
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +17 -12
@@ -150,7 +150,7 @@ static int mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd, struct sk_buff *skb, int seq) { - struct mt7915_mcu_rxd *rxd; + struct mt76_connac2_mcu_rxd *rxd;int ret =0 ;if (!skb) {
@@ -159,7 +159,7 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,return -ETIMEDOUT ; } - rxd = (struct mt7915_mcu_rxd *)skb->data; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;if (seq != rxd->seq)return -EAGAIN ;
@@ -170,7 +170,7 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,skb_pull (skb,sizeof (*rxd) +4 ); ret =le32_to_cpu (*(__le32 *)skb->data); }else { -skb_pull (skb,sizeof (struct mt7915_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); }return ret;
@@ -181,7 +181,7 @@ mt7915_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, int cmd, int *wait_seq) { struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76); -struct mt7915_mcu_txd *mcu_txd; +struct mt76_connac2_mcu_txd *mcu_txd;enum mt76_mcuq_id qid;__le32 *txd;u32 val;
@@ -199,7 +199,7 @@ mt7915_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, goto exit; } - mcu_txd = (struct mt7915_mcu_txd *)skb_push (skb,sizeof (*mcu_txd)); + mcu_txd = (struct mt76_connac2_mcu_txd *)skb_push (skb,sizeof (*mcu_txd));if (test_bit (MT76_STATE_MCU_RUNNING , &dev->mphy.state)) qid =MT_MCUQ_WA ;else
@@ -326,10 +326,12 @@ mt7915_mcu_rx_radar_detected(struct mt7915_dev *dev, struct sk_buff *skb)static void mt7915_mcu_rx_log_message (struct mt7915_dev *dev,struct sk_buff *skb) { -struct mt7915_mcu_rxd *rxd = (struct mt7915_mcu_rxd *)skb->data; -const char *data = (char *)&rxd[1 ]; -const char *type; +struct mt76_connac2_mcu_rxd *rxd;int len = skb->len -sizeof (*rxd); +const char *data, *type; + + rxd = (struct mt76_connac2_mcu_rxd *)skb->data; + data = (char *)&rxd[1 ];switch (rxd->s2d_index) {case 0 :
@@ -377,8 +379,9 @@ mt7915_mcu_rx_bcc_notify(struct mt7915_dev *dev, struct sk_buff *skb)static void mt7915_mcu_rx_ext_event (struct mt7915_dev *dev,struct sk_buff *skb) { -struct mt7915_mcu_rxd *rxd = (struct mt7915_mcu_rxd *)skb->data; +struct mt76_connac2_mcu_rxd *rxd; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;switch (rxd->ext_eid) {case MCU_EXT_EVENT_THERMAL_PROTECT :mt7915_mcu_rx_thermal_notify (dev, skb);
@@ -403,8 +406,9 @@ mt7915_mcu_rx_ext_event(struct mt7915_dev *dev, struct sk_buff *skb)static void mt7915_mcu_rx_unsolicited_event (struct mt7915_dev *dev,struct sk_buff *skb) { -struct mt7915_mcu_rxd *rxd = (struct mt7915_mcu_rxd *)skb->data; +struct mt76_connac2_mcu_rxd *rxd; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;switch (rxd->eid) {case MCU_EVENT_EXT :mt7915_mcu_rx_ext_event (dev, skb);
@@ -417,8 +421,9 @@ mt7915_mcu_rx_unsolicited_event(struct mt7915_dev *dev, struct sk_buff *skb)void mt7915_mcu_rx_event (struct mt7915_dev *dev,struct sk_buff *skb) { -struct mt7915_mcu_rxd *rxd = (struct mt7915_mcu_rxd *)skb->data; +struct mt76_connac2_mcu_rxd *rxd; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data; if (rxd->ext_eid == MCU_EXT_EVENT_THERMAL_PROTECT || rxd->ext_eid == MCU_EXT_EVENT_FW_LOG_2_HOST || rxd->ext_eid == MCU_EXT_EVENT_ASSERT_DUMP ||
@@ -2275,7 +2280,7 @@ mt7915_mcu_init_rx_airtime(struct mt7915_dev *dev)int mt7915_mcu_init (struct mt7915_dev *dev) {static const struct mt76_mcu_ops mt7915_mcu_ops = { - .headroom =sizeof (struct mt7915_mcu_txd ), + .headroom =sizeof (struct mt76_connac2_mcu_txd ), .mcu_skb_send_msg = mt7915_mcu_send_message, .mcu_parse_response = mt7915_mcu_parse_response, .mcu_restart = mt76_connac_mcu_restart,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.h +4 -38
78 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +1 -1
@@ -970,7 +970,7 @@ void mt7921_coredump_work(struct work_struct *work)if (!skb)break ; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd ));if (!dump || data + skb->len - dump >MT76_CONNAC_COREDUMP_SZ ) {dev_kfree_skb (skb);continue ;
drivers/net/wireless/mediatek/mt76/mt7921/main.c +2 -2
@@ -1168,7 +1168,7 @@ void mt7921_scan_work(struct work_struct *work) scan_work.work);while (true) { -struct mt7921_mcu_rxd *rxd; +struct mt76_connac2_mcu_rxd *rxd;struct sk_buff *skb;spin_lock_bh (&phy->dev->mt76.lock);
@@ -1178,7 +1178,7 @@ void mt7921_scan_work(struct work_struct *work)if (!skb)break ; - rxd = (struct mt7921_mcu_rxd *)skb->data; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;if (rxd->eid ==MCU_EVENT_SCHED_SCAN_DONE ) {ieee80211_sched_scan_results (phy->mt76->hw); } else if (test_and_clear_bit(MT76_HW_SCANNING,
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +17 -16
@@ -19,7 +19,7 @@ mt7921_mcu_parse_eeprom(struct mt76_dev *dev, struct sk_buff *skb)if (!skb)return -EINVAL ; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); res = (struct mt7921_mcu_eeprom_info *)skb->data; buf = dev->eeprom.data +le32_to_cpu (res->addr);
@@ -32,7 +32,7 @@ int mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd, struct sk_buff *skb, int seq) { int mcu_cmd = FIELD_GET(__MCU_CMD_FIELD_ID, cmd); -struct mt7921_mcu_rxd *rxd; +struct mt76_connac2_mcu_rxd *rxd;int ret =0 ;if (!skb) {
@@ -43,7 +43,7 @@ int mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd,return -ETIMEDOUT ; } - rxd = (struct mt7921_mcu_rxd *)skb->data; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;if (seq != rxd->seq)return -EAGAIN ;
@@ -77,7 +77,7 @@ int mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd, event = (struct mt7921_mcu_reg_event *)skb->data; ret = (int )le32_to_cpu (event->val); }else { -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); }return ret;
@@ -89,8 +89,8 @@ int mt7921_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb, { struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);int txd_len, mcu_cmd =FIELD_GET (__MCU_CMD_FIELD_ID, cmd); -struct mt7921_uni_txd *uni_txd; -struct mt7921_mcu_txd *mcu_txd; +struct mt76_connac2_mcu_uni_txd *uni_txd; +struct mt76_connac2_mcu_txd *mcu_txd;__le32 *txd;u32 val;u8 seq;
@@ -122,7 +122,7 @@ int mt7921_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb, txd[1 ] =cpu_to_le32 (val);if (cmd & __MCU_CMD_FIELD_UNI) { - uni_txd = (struct mt7921_uni_txd *)txd; + uni_txd = (struct mt76_connac2_mcu_uni_txd *)txd; uni_txd->len =cpu_to_le16 (skb->len -sizeof (uni_txd->txd)); uni_txd->option =MCU_CMD_UNI_EXT_ACK ; uni_txd->cid =cpu_to_le16 (mcu_cmd);
@@ -133,7 +133,7 @@ int mt7921_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb, goto exit; } - mcu_txd = (struct mt7921_mcu_txd *)txd; + mcu_txd = (struct mt76_connac2_mcu_txd *)txd; mcu_txd->len =cpu_to_le16 (skb->len -sizeof (mcu_txd->txd)); mcu_txd->pq_id =cpu_to_le16 (MCU_PQ_ID (MT_TX_PORT_IDX_MCU ,MT_TX_MCU_PORT_RX_Q0 ));
@@ -241,7 +241,7 @@ mt7921_mcu_connection_loss_event(struct mt7921_dev *dev, struct sk_buff *skb)struct mt76_connac_beacon_loss_event *event;struct mt76_phy *mphy = &dev->mt76.phy; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); event = (struct mt76_connac_beacon_loss_event *)skb->data; ieee80211_iterate_active_interfaces_atomic(mphy->hw,
@@ -255,7 +255,7 @@ mt7921_mcu_bss_event(struct mt7921_dev *dev, struct sk_buff *skb)struct mt76_phy *mphy = &dev->mt76.phy;struct mt76_connac_mcu_bss_event *event; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); event = (struct mt76_connac_mcu_bss_event *)skb->data;if (event->is_absent)ieee80211_stop_queues (mphy->hw);
@@ -275,7 +275,7 @@ mt7921_mcu_debug_msg_event(struct mt7921_dev *dev, struct sk_buff *skb)u8 content[512 ]; }__packed * msg; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); msg = (struct mt7921_debug_msg *)skb->data;if (msg->type ==3 ) {/* fw log */
@@ -298,7 +298,7 @@ mt7921_mcu_low_power_event(struct mt7921_dev *dev, struct sk_buff *skb)u8 reserved[3 ]; }__packed * event; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); event = (struct mt7921_mcu_lp_event *)skb->data;trace_lp_event (dev, event->state);
@@ -309,7 +309,7 @@ mt7921_mcu_tx_done_event(struct mt7921_dev *dev, struct sk_buff *skb) {struct mt7921_mcu_tx_done_event *event; -skb_pull (skb,sizeof (struct mt7921_mcu_rxd )); +skb_pull (skb,sizeof (struct mt76_connac2_mcu_rxd )); event = (struct mt7921_mcu_tx_done_event *)skb->data;mt7921_mac_add_txs (dev, event->txs);
@@ -318,8 +318,9 @@ mt7921_mcu_tx_done_event(struct mt7921_dev *dev, struct sk_buff *skb)static void mt7921_mcu_rx_unsolicited_event (struct mt7921_dev *dev,struct sk_buff *skb) { -struct mt7921_mcu_rxd *rxd = (struct mt7921_mcu_rxd *)skb->data; +struct mt76_connac2_mcu_rxd *rxd; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;switch (rxd->eid) {case MCU_EVENT_BSS_BEACON_LOSS :mt7921_mcu_connection_loss_event (dev, skb);
@@ -353,12 +354,12 @@ mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)void mt7921_mcu_rx_event (struct mt7921_dev *dev,struct sk_buff *skb) { -struct mt7921_mcu_rxd *rxd; +struct mt76_connac2_mcu_rxd *rxd;if (skb_linearize (skb))return ; - rxd = (struct mt7921_mcu_rxd *)skb->data; + rxd = (struct mt76_connac2_mcu_rxd *)skb->data;if (rxd->eid ==0x6 ) {mt76_mcu_rx_event (&dev->mt76, skb);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.h +0 -85
97 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c +1 -1
@@ -39,7 +39,7 @@ mt7921_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,int mt7921e_mcu_init (struct mt7921_dev *dev) {static const struct mt76_mcu_ops mt7921_mcu_ops = { - .headroom =sizeof (struct mt7921_mcu_txd ), + .headroom =sizeof (struct mt76_connac2_mcu_txd ), .mcu_skb_send_msg = mt7921_mcu_send_message, .mcu_parse_response = mt7921_mcu_parse_response, .mcu_restart = mt76_connac_mcu_restart,
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mcu.c +2 -1
@@ -72,7 +72,8 @@ static u32 mt7921s_clear_rm3r_drv_own(struct mt7921_dev *dev)int mt7921s_mcu_init (struct mt7921_dev *dev) {static const struct mt76_mcu_ops mt7921s_mcu_ops = { - .headroom =MT_SDIO_HDR_SIZE +sizeof (struct mt7921_mcu_txd ), + .headroom =MT_SDIO_HDR_SIZE + +sizeof (struct mt76_connac2_mcu_txd ), .tailroom =MT_SDIO_TAIL_SIZE , .mcu_skb_send_msg = mt7921s_mcu_send_message, .mcu_parse_response = mt7921_mcu_parse_response,
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +2 -1
@@ -125,7 +125,8 @@ mt7921u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,static int mt7921u_mcu_init (struct mt7921_dev *dev) {static const struct mt76_mcu_ops mcu_ops = { - .headroom =MT_SDIO_HDR_SIZE +sizeof (struct mt7921_mcu_txd ), + .headroom =MT_SDIO_HDR_SIZE + +sizeof (struct mt76_connac2_mcu_txd ), .tailroom =MT_USB_TAIL_SIZE , .mcu_skb_send_msg = mt7921u_mcu_send_message, .mcu_parse_response = mt7921_mcu_parse_response,
Signature · 1 line
2.36.1