mt7915 connac rework
Subsystems (2)
Lorenzo Bianconi
maintainercover mt7915 connac rework
Some more patches to fully integrate mt7915 driver in mt76-connac module (the work is not completed yet).
Lorenzo Bianconi (15):
mt76: mt7915: remove duplicated defs in mcu.h
mt76: connac: move mt76_connac_mcu_bss_omac_tlv in connac module
mt76: connac: move mt76_connac_mcu_bss_ext_tlv in connac module
mt76: connac: move mt76_connac_mcu_bss_basic_tlv in connac module
mt76: mt7915: rely on mt76_connac_mcu_sta_ba_tlv
mt76: mt7915: rely on mt76_connac_mcu_wtbl_ba_tlv
mt76: mt7915: rely on mt76_connac_mcu_sta_ba
mt76: mt7915: rely on mt76_connac_mcu_wtbl_generic_tlv
mt76: mt7915: rely on mt76_connac_mcu_sta_basic_tlv
mt76: mt7915: rely on mt76_connac_mcu_sta_uapsd
mt76: mt7915: rely on mt76_connac_mcu_wtbl_smps_tlv
mt76: mt7915: rely on mt76_connac_mcu_wtbl_ht_tlv
mt76: mt7915: rely on mt76_connac_mcu_wtbl_hdr_trans_tlv
mt76: connac: move mt76_connac_mcu_wtbl_update_hdr_trans in connac
module
mt76: connac: introduce is_connac_v2 utility routine
.../net/wireless/mediatek/mt76/mt7615/mcu.c | 139 +---- .../net/wireless/mediatek/mt76/mt76_connac.h | 5 + .../wireless/mediatek/mt76/mt76_connac_mcu.c | 198 ++++++- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 23 +- .../net/wireless/mediatek/mt76/mt7915/main.c | 4 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 485 +----------------- .../net/wireless/mediatek/mt76/mt7915/mcu.h | 23 - .../wireless/mediatek/mt76/mt7915/mt7915.h | 3 - .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2 + 9 files changed, 236 insertions(+), 646 deletions(-)
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 1/15 mt76: mt7915: remove duplicated defs in mcu.h
Remove duplicated definitions in mt7915/mcu.h
--- .../net/wireless/mediatek/mt76/mt7915/mcu.h | 23 ------------------- 1 file changed, 23 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.h +0 -23
@@ -272,29 +272,6 @@ enum mcu_mmps_mode { MCU_MMPS_DISABLE, }; -#define STA_TYPE_STA BIT(0) -#define STA_TYPE_AP BIT(1) -#define STA_TYPE_ADHOC BIT(2) -#define STA_TYPE_WDS BIT(4) -#define STA_TYPE_BC BIT(5) - -#define NETWORK_INFRA BIT(16) -#define NETWORK_P2P BIT(17) -#define NETWORK_IBSS BIT(18) -#define NETWORK_WDS BIT(21) - -#define CONNECTION_INFRA_STA (STA_TYPE_STA | NETWORK_INFRA) -#define CONNECTION_INFRA_AP (STA_TYPE_AP | NETWORK_INFRA) -#define CONNECTION_P2P_GC (STA_TYPE_STA | NETWORK_P2P) -#define CONNECTION_P2P_GO (STA_TYPE_AP | NETWORK_P2P) -#define CONNECTION_IBSS_ADHOC (STA_TYPE_ADHOC | NETWORK_IBSS) -#define CONNECTION_WDS (STA_TYPE_WDS | NETWORK_WDS) -#define CONNECTION_INFRA_BC (STA_TYPE_BC | NETWORK_INFRA) - -#define CONN_STATE_DISCONNECT 0 -#define CONN_STATE_CONNECT 1 -#define CONN_STATE_PORT_SECURE 2 -enum {SCS_SEND_DATA ,SCS_SET_MANUAL_PD_TH ,
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 2/15 mt76: connac: move mt76_connac_mcu_bss_omac_tlv in connac module
In reply to Lorenzo BianconiMove mt7915_mcu_bss_omac_tlv/mt7615_mcu_bss_omac_tlv in connac module since it is shared between mt7615 and mt7915 drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 43 +------------------ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 42 ++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 3 ++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 39 +---------------- 4 files changed, 47 insertions(+), 80 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +1 -42
@@ -836,47 +836,6 @@ mt7615_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,return 0 ; } -static void -mt7615_mcu_bss_omac_tlv (struct sk_buff *skb,struct ieee80211_vif *vif) -{ -struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv; -u8 omac_idx = mvif->mt76.omac_idx; -struct bss_info_omac *omac; -struct tlv *tlv; -u32 type =0 ; - - tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_OMAC ,sizeof (*omac)); - -switch (vif->type) { -case NL80211_IFTYPE_MONITOR : -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_AP : -if (vif->p2p) - type =CONNECTION_P2P_GO ; -else - type =CONNECTION_INFRA_AP ; -break ; -case NL80211_IFTYPE_STATION : -if (vif->p2p) - type =CONNECTION_P2P_GC ; -else - type =CONNECTION_INFRA_STA ; -break ; -case NL80211_IFTYPE_ADHOC : - type =CONNECTION_IBSS_ADHOC ; -break ; -default : -WARN_ON (1 ); -break ; - } - - omac = (struct bss_info_omac *)tlv; - omac->conn_type =cpu_to_le32 (type); - omac->omac_idx = mvif->mt76.omac_idx; - omac->band_idx = mvif->mt76.band_idx; - omac->hw_bss_idx = omac_idx >EXT_BSSID_START ?HW_BSSID_0 : omac_idx; -} -/* SIFS 20us + 512 byte beacon tranmitted by 1Mbps (3906us) */ #define BCN_TX_ESTIMATE_TIME (4096 + 20) static void
@@ -913,7 +872,7 @@ mt7615_mcu_add_bss(struct mt7615_phy *phy, struct ieee80211_vif *vif,return PTR_ERR (skb);if (enable) -mt7615_mcu_bss_omac_tlv (skb, vif); +mt76_connac_mcu_bss_omac_tlv (skb, vif);mt7615_mcu_bss_basic_tlv (skb, vif, sta, phy, enable);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +42 -0
48 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +3 -0
@@ -1592,4 +1592,7 @@ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif,struct mt76_connac_sta_key_conf *sta_key_conf, struct ieee80211_key_conf *key, int mcu_cmd, struct mt76_wcid *wcid, enum set_key_cmd cmd); + +void mt76_connac_mcu_bss_omac_tlv (struct sk_buff *skb, +struct ieee80211_vif *vif);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -38
@@ -552,43 +552,6 @@ mt7915_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,return 0 ; } -static void -mt7915_mcu_bss_omac_tlv (struct sk_buff *skb,struct ieee80211_vif *vif) -{ -struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv; -struct bss_info_omac *omac; -struct tlv *tlv; -u32 type =0 ; -u8 idx; - - tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_OMAC ,sizeof (*omac)); - -switch (vif->type) { -case NL80211_IFTYPE_MONITOR : -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_AP : - type =CONNECTION_INFRA_AP ; -break ; -case NL80211_IFTYPE_STATION : - type =CONNECTION_INFRA_STA ; -break ; -case NL80211_IFTYPE_ADHOC : - type =CONNECTION_IBSS_ADHOC ; -break ; -default : -WARN_ON (1 ); -break ; - } - - omac = (struct bss_info_omac *)tlv; - idx = mvif->mt76.omac_idx >EXT_BSSID_START ?HW_BSSID_0 - : mvif->mt76.omac_idx; - omac->conn_type =cpu_to_le32 (type); - omac->omac_idx = mvif->mt76.omac_idx; - omac->band_idx = mvif->mt76.band_idx; - omac->hw_bss_idx = idx; -} -struct mt7915_he_obss_narrow_bw_ru_data {bool tolerated; };
@@ -837,7 +800,7 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy,/* bss_omac must be first */ if (enable) -mt7915_mcu_bss_omac_tlv (skb, vif); +mt76_connac_mcu_bss_omac_tlv (skb, vif);mt7915_mcu_bss_basic_tlv (skb, vif, phy, enable);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 3/15 mt76: connac: move mt76_connac_mcu_bss_ext_tlv in connac module
In reply to Lorenzo BianconiMove mt7915_mcu_bss_ext_tlv/mt7615_mcu_bss_ext_tlv in connac module since it is shared between mt7615 and mt7915 drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 22 +------------------ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 20 +++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 1 + .../net/wireless/mediatek/mt76/mt7915/mcu.c | 22 +------------------ 4 files changed, 23 insertions(+), 42 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +1 -21
@@ -836,26 +836,6 @@ mt7615_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,return 0 ; } -/* SIFS 20us + 512 byte beacon tranmitted by 1Mbps (3906us) */ -#define BCN_TX_ESTIMATE_TIME (4096 + 20) -static void -mt7615_mcu_bss_ext_tlv (struct sk_buff *skb,struct mt7615_vif *mvif) -{ -struct bss_info_ext_bss *ext; -int ext_bss_idx, tsf_offset; -struct tlv *tlv; - - ext_bss_idx = mvif->mt76.omac_idx -EXT_BSSID_START ; -if (ext_bss_idx <0 ) -return ; - - tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_EXT_BSS ,sizeof (*ext)); - - ext = (struct bss_info_ext_bss *)tlv; - tsf_offset = ext_bss_idx *BCN_TX_ESTIMATE_TIME ; - ext->mbss_tsf_offset =cpu_to_le32 (tsf_offset); -} -static int mt7615_mcu_add_bss (struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool enable)
@@ -878,7 +858,7 @@ mt7615_mcu_add_bss(struct mt7615_phy *phy, struct ieee80211_vif *vif,if (enable && mvif->mt76.omac_idx >=EXT_BSSID_START && mvif->mt76.omac_idx <REPEATER_BSSID_START ) -mt7615_mcu_bss_ext_tlv (skb, mvif); +mt76_connac_mcu_bss_ext_tlv (skb, &mvif->mt76);return mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (BSS_INFO_UPDATE ), true);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +20 -0
@@ -2612,5 +2612,25 @@ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif, }EXPORT_SYMBOL_GPL (mt76_connac_mcu_add_key); +/* SIFS 20us + 512 byte beacon tranmitted by 1Mbps (3906us) */ +#define BCN_TX_ESTIMATE_TIME (4096 + 20) +void mt76_connac_mcu_bss_ext_tlv (struct sk_buff *skb,struct mt76_vif *mvif) +{ +struct bss_info_ext_bss *ext; +int ext_bss_idx, tsf_offset; +struct tlv *tlv; + + ext_bss_idx = mvif->omac_idx -EXT_BSSID_START ; +if (ext_bss_idx <0 ) +return ; + + tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_EXT_BSS ,sizeof (*ext)); + + ext = (struct bss_info_ext_bss *)tlv; + tsf_offset = ext_bss_idx *BCN_TX_ESTIMATE_TIME ; + ext->mbss_tsf_offset =cpu_to_le32 (tsf_offset); +} +EXPORT_SYMBOL_GPL (mt76_connac_mcu_bss_ext_tlv); +MODULE_AUTHOR ("Lorenzo Bianconi <[email protected]>" );MODULE_LICENSE ("Dual BSD/GPL" );
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -0
@@ -1593,6 +1593,7 @@ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif, struct ieee80211_key_conf *key, int mcu_cmd, struct mt76_wcid *wcid, enum set_key_cmd cmd); +void mt76_connac_mcu_bss_ext_tlv (struct sk_buff *skb,struct mt76_vif *mvif);void mt76_connac_mcu_bss_omac_tlv (struct sk_buff *skb,struct ieee80211_vif *vif);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -21
@@ -704,26 +704,6 @@ mt7915_mcu_bss_hw_amsdu_tlv(struct sk_buff *skb) amsdu->enable = true; } -static void -mt7915_mcu_bss_ext_tlv (struct sk_buff *skb,struct mt7915_vif *mvif) -{ -/* SIFS 20us + 512 byte beacon tranmitted by 1Mbps (3906us) */ -#define BCN_TX_ESTIMATE_TIME (4096 + 20) -struct bss_info_ext_bss *ext; -int ext_bss_idx, tsf_offset; -struct tlv *tlv; - - ext_bss_idx = mvif->mt76.omac_idx -EXT_BSSID_START ; -if (ext_bss_idx <0 ) -return ; - - tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_EXT_BSS ,sizeof (*ext)); - - ext = (struct bss_info_ext_bss *)tlv; - tsf_offset = ext_bss_idx *BCN_TX_ESTIMATE_TIME ; - ext->mbss_tsf_offset =cpu_to_le32 (tsf_offset); -} -static void mt7915_mcu_bss_bmc_tlv (struct sk_buff *skb,struct mt7915_phy *phy) {
@@ -818,7 +798,7 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy,if (mvif->mt76.omac_idx >=EXT_BSSID_START && mvif->mt76.omac_idx <REPEATER_BSSID_START ) -mt7915_mcu_bss_ext_tlv (skb, mvif); +mt76_connac_mcu_bss_ext_tlv (skb, &mvif->mt76); } out: return mt76_mcu_skb_send_msg(&dev->mt76, skb,
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 4/15 mt76: connac: move mt76_connac_mcu_bss_basic_tlv in connac module
In reply to Lorenzo BianconiMove mt7615_mcu_bss_basic_tlv/mt7915_mcu_bss_basic_tlv in connac module since it is shared between mt7615 and mt7915 drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 55 +-------------- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 65 ++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 5 ++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 68 +------------------ 4 files changed, 74 insertions(+), 119 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +2 -53
@@ -784,58 +784,6 @@ mt7615_mcu_ctrl_pm_state(struct mt7615_dev *dev, int band, int state) &req, sizeof(req), true); } -static int -mt7615_mcu_bss_basic_tlv (struct sk_buff *skb,struct ieee80211_vif *vif, -struct ieee80211_sta *sta,struct mt7615_phy *phy, -bool enable) -{ -struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv; -u32 type = vif->p2p ?NETWORK_P2P :NETWORK_INFRA ; -struct bss_info_basic *bss; -u8 wlan_idx = mvif->sta.wcid.idx; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_tlv (skb,BSS_INFO_BASIC ,sizeof (*bss)); - -switch (vif->type) { -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_AP : -case NL80211_IFTYPE_MONITOR : -break ; -case NL80211_IFTYPE_STATION : -/* TODO: enable BSS_INFO_UAPSD & BSS_INFO_PM */ -if (enable && sta) { -struct mt7615_sta *msta; - - msta = (struct mt7615_sta *)sta->drv_priv; - wlan_idx = msta->wcid.idx; - } -break ; -case NL80211_IFTYPE_ADHOC : - type =NETWORK_IBSS ; -break ; -default : -WARN_ON (1 ); -break ; - } - - bss = (struct bss_info_basic *)tlv; - bss->network_type =cpu_to_le32 (type); - bss->bmc_wcid_lo = wlan_idx; - bss->wmm_idx = mvif->mt76.wmm_idx; - bss->active = enable; - -if (vif->type !=NL80211_IFTYPE_MONITOR ) { -memcpy (bss->bssid, vif->bss_conf.bssid,ETH_ALEN ); - bss->bcn_interval =cpu_to_le16 (vif->bss_conf.beacon_int); - bss->dtim_period = vif->bss_conf.dtim_period; - }else { -memcpy (bss->bssid, phy->mt76->macaddr,ETH_ALEN ); - } - -return 0 ; -} -static int mt7615_mcu_add_bss (struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool enable)
@@ -854,7 +802,8 @@ mt7615_mcu_add_bss(struct mt7615_phy *phy, struct ieee80211_vif *vif,if (enable)mt76_connac_mcu_bss_omac_tlv (skb, vif); -mt7615_mcu_bss_basic_tlv (skb, vif, sta, phy, enable); +mt76_connac_mcu_bss_basic_tlv (skb, vif, sta, phy->mt76, + mvif->sta.wcid.idx, enable);if (enable && mvif->mt76.omac_idx >=EXT_BSSID_START && mvif->mt76.omac_idx <REPEATER_BSSID_START )
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +65 -0
70 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +5 -0
@@ -1596,4 +1596,9 @@ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif,void mt76_connac_mcu_bss_ext_tlv (struct sk_buff *skb,struct mt76_vif *mvif);void mt76_connac_mcu_bss_omac_tlv (struct sk_buff *skb,struct ieee80211_vif *vif); +int mt76_connac_mcu_bss_basic_tlv (struct sk_buff *skb, +struct ieee80211_vif *vif, +struct ieee80211_sta *sta, +struct mt76_phy *phy,u8 wlan_idx, +bool enable);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -66
80 lines not on this page · raw message
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 5/15 mt76: mt7915: rely on mt76_connac_mcu_sta_ba_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_sta_ba_tlv routine in mt7915 and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -20
@@ -742,25 +742,6 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy, }/** starec & wtbl **/ -static void -mt7915_mcu_sta_ba_tlv (struct sk_buff *skb, -struct ieee80211_ampdu_params *params, -bool enable,bool tx) -{ -struct sta_rec_ba *ba; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_tlv (skb,STA_REC_BA ,sizeof (*ba)); - - ba = (struct sta_rec_ba *)tlv; - ba->ba_type = tx ?MT_BA_TYPE_ORIGINATOR :MT_BA_TYPE_RECIPIENT ; - ba->winsize =cpu_to_le16 (params->buf_size); - ba->ssn =cpu_to_le16 (params->ssn); - ba->ba_en = enable << params->tid; - ba->amsdu = params->amsdu; - ba->tid = params->tid; -} - static void mt7915_mcu_wtbl_ba_tlv(struct sk_buff *skb, struct ieee80211_ampdu_params *params,
@@ -831,7 +812,7 @@ mt7915_mcu_sta_ba(struct mt7915_dev *dev,if (IS_ERR (skb))return PTR_ERR (skb); -mt7915_mcu_sta_ba_tlv (skb, params, enable, tx); +mt76_connac_mcu_sta_ba_tlv (skb, params, enable, tx);return mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (STA_REC_UPDATE ), true);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 6/15 mt76: mt7915: rely on mt76_connac_mcu_wtbl_ba_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_wtbl_ba_tlv routine in mt7915 and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 2 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 35 ++----------------- 2 files changed, 3 insertions(+), 34 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +1 -1
@@ -1015,7 +1015,7 @@ void mt76_connac_mcu_wtbl_ba_tlv(struct mt76_dev *dev, struct sk_buff *skb, ba->rst_ba_sb =1 ; } -if (is_mt7921 (dev)) { +if (is_mt7921 (dev) ||is_mt7915 (dev)) { ba->ba_winsize = enable ?cpu_to_le16 (params->buf_size) :0 ;return ; }
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -33
@@ -742,37 +742,6 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy, }/** starec & wtbl **/ -static void -mt7915_mcu_wtbl_ba_tlv (struct sk_buff *skb, -struct ieee80211_ampdu_params *params, -bool enable,bool tx,void *sta_wtbl, -void *wtbl_tlv) -{ -struct wtbl_ba *ba; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_nested_tlv (skb,WTBL_BA ,sizeof (*ba), - wtbl_tlv, sta_wtbl); - - ba = (struct wtbl_ba *)tlv; - ba->tid = params->tid; - -if (tx) { - ba->ba_type =MT_BA_TYPE_ORIGINATOR ; - ba->sn = enable ?cpu_to_le16 (params->ssn) :0 ; - ba->ba_en = enable; - }else { -memcpy (ba->peer_addr, params->sta->addr,ETH_ALEN ); - ba->ba_type =MT_BA_TYPE_RECIPIENT ; - ba->rst_ba_tid = params->tid; - ba->rst_ba_sel =RST_BA_MAC_TID_MATCH ; - ba->rst_ba_sb =1 ; - } - -if (enable) - ba->ba_winsize =cpu_to_le16 (params->buf_size); -} - static int mt7915_mcu_sta_ba(struct mt7915_dev *dev, struct ieee80211_ampdu_params *params,
@@ -800,8 +769,8 @@ mt7915_mcu_sta_ba(struct mt7915_dev *dev,if (IS_ERR (wtbl_hdr))return PTR_ERR (wtbl_hdr); -mt7915_mcu_wtbl_ba_tlv (skb, params, enable, tx, sta_wtbl, wtbl_hdr); - +mt76_connac_mcu_wtbl_ba_tlv (&dev->mt76, skb, params, enable, tx, + sta_wtbl, wtbl_hdr); ret =mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (STA_REC_UPDATE ), true);if (ret)
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 7/15 mt76: mt7915: rely on mt76_connac_mcu_sta_ba
In reply to Lorenzo BianconiRely on mt76_connac_mcu_sta_ba routine in mt7915 and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 3 +- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 8 +-- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 2 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 58 +++++-------------- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 2 + 5 files changed, 21 insertions(+), 52 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +2 -1
@@ -1191,7 +1191,8 @@ mt7615_mcu_uni_tx_ba(struct mt7615_dev *dev,struct mt7615_sta *sta = (struct mt7615_sta *)params->sta->drv_priv;return mt76_connac_mcu_sta_ba (&dev->mt76, &sta->vif->mt76, params, - enable, true); +MCU_UNI_CMD (STA_REC_UPDATE ), enable, + true); } static int
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +3 -5
@@ -1148,7 +1148,7 @@ EXPORT_SYMBOL_GPL(mt76_connac_mcu_sta_ba_tlv);int mt76_connac_mcu_sta_ba (struct mt76_dev *dev,struct mt76_vif *mvif,struct ieee80211_ampdu_params *params, -bool enable,bool tx) +int cmd,bool enable,bool tx) {struct mt76_wcid *wcid = (struct mt76_wcid *)params->sta->drv_priv;struct wtbl_req_hdr *wtbl_hdr;
@@ -1171,8 +1171,7 @@ int mt76_connac_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,mt76_connac_mcu_wtbl_ba_tlv (dev, skb, params, enable, tx, sta_wtbl, wtbl_hdr); - ret =mt76_mcu_skb_send_msg (dev, skb, -MCU_UNI_CMD (STA_REC_UPDATE ), true); + ret =mt76_mcu_skb_send_msg (dev, skb, cmd, true);if (ret)return ret;
@@ -1182,8 +1181,7 @@ int mt76_connac_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,mt76_connac_mcu_sta_ba_tlv (skb, params, enable, tx); -return mt76_mcu_skb_send_msg (dev, skb, -MCU_UNI_CMD (STA_REC_UPDATE ), true); +return mt76_mcu_skb_send_msg (dev, skb, cmd, true); }EXPORT_SYMBOL_GPL (mt76_connac_mcu_sta_ba);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -1
@@ -1532,7 +1532,7 @@ int mt76_connac_mcu_uni_add_dev(struct mt76_phy *phy, bool enable);int mt76_connac_mcu_sta_ba (struct mt76_dev *dev,struct mt76_vif *mvif,struct ieee80211_ampdu_params *params, -bool enable,bool tx); +int cmd,bool enable,bool tx); int mt76_connac_mcu_uni_add_bss(struct mt76_phy *phy, struct ieee80211_vif *vif, struct mt76_wcid *wcid,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +13 -45
76 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +2 -0
@@ -429,6 +429,7 @@ int mt7921_mcu_uni_tx_ba(struct mt7921_dev *dev, msta->wcid.amsdu = false;return mt76_connac_mcu_sta_ba (&dev->mt76, &msta->vif->mt76, params, +MCU_UNI_CMD (STA_REC_UPDATE ), enable, true); }
@@ -439,6 +440,7 @@ int mt7921_mcu_uni_rx_ba(struct mt7921_dev *dev,struct mt7921_sta *msta = (struct mt7921_sta *)params->sta->drv_priv;return mt76_connac_mcu_sta_ba (&dev->mt76, &msta->vif->mt76, params, +MCU_UNI_CMD (STA_REC_UPDATE ), enable, false); }
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 8/15 mt76: mt7915: rely on mt76_connac_mcu_wtbl_generic_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_wtbl_generic_tlv routine in mt7915 and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 4 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 45 +------------------ 2 files changed, 4 insertions(+), 45 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +2 -2
@@ -530,7 +530,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, generic->muar_idx = mvif->omac_idx; generic->qos = sta->wme; }else { -if (is_mt7921 (dev) && +if ((is_mt7921 (dev) ||is_mt7915 (dev)) && vif->type ==NL80211_IFTYPE_STATION )memcpy (generic->peer_addr, vif->bss_conf.bssid,ETH_ALEN );
@@ -548,7 +548,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, rx->rca2 =1 ; rx->rv =1 ; -if (is_mt7921 (dev)) +if (is_mt7921 (dev) ||is_mt7915 (dev))return ; tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_SPE, sizeof(*spe),
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -43
57 lines not on this page · raw message
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 9/15 mt76: mt7915: rely on mt76_connac_mcu_sta_basic_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_sta_basic_tlv routine in mt7915 and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 52 +------------------ 1 file changed, 1 insertion(+), 51 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -51
@@ -769,56 +769,6 @@ int mt7915_mcu_add_rx_ba(struct mt7915_dev *dev, enable, false); } -static void -mt7915_mcu_sta_basic_tlv (struct sk_buff *skb,struct ieee80211_vif *vif, -struct ieee80211_sta *sta,bool enable) -{ -#define EXTRA_INFO_VER BIT(0) -#define EXTRA_INFO_NEW BIT(1) -struct sta_rec_basic *basic; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_tlv (skb,STA_REC_BASIC ,sizeof (*basic)); - - basic = (struct sta_rec_basic *)tlv; - basic->extra_info =cpu_to_le16 (EXTRA_INFO_VER ); - -if (enable) { - basic->extra_info |=cpu_to_le16 (EXTRA_INFO_NEW ); - basic->conn_state =CONN_STATE_PORT_SECURE ; - }else { - basic->conn_state =CONN_STATE_DISCONNECT ; - } - -if (!sta) { - basic->conn_type =cpu_to_le32 (CONNECTION_INFRA_BC ); -eth_broadcast_addr (basic->peer_addr); -return ; - } - -switch (vif->type) { -case NL80211_IFTYPE_MESH_POINT : -case NL80211_IFTYPE_AP : - basic->conn_type =cpu_to_le32 (CONNECTION_INFRA_STA ); - basic->aid =cpu_to_le16 (sta->aid); -break ; -case NL80211_IFTYPE_STATION : - basic->conn_type =cpu_to_le32 (CONNECTION_INFRA_AP ); - basic->aid =cpu_to_le16 (vif->bss_conf.aid); -break ; -case NL80211_IFTYPE_ADHOC : - basic->conn_type =cpu_to_le32 (CONNECTION_IBSS_ADHOC ); - basic->aid =cpu_to_le16 (sta->aid); -break ; -default : -WARN_ON (1 ); -break ; - } - -memcpy (basic->peer_addr, sta->addr,ETH_ALEN ); - basic->qos = sta->wme; -} -static void mt7915_mcu_sta_he_tlv (struct sk_buff *skb,struct ieee80211_sta *sta,struct ieee80211_vif *vif)
@@ -1866,7 +1816,7 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,return PTR_ERR (skb);/* starec basic */ -mt7915_mcu_sta_basic_tlv (skb, vif, sta, enable); +mt76_connac_mcu_sta_basic_tlv (skb, vif, sta, enable, true);if (!enable) goto out;
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 10/15 mt76: mt7915: rely on mt76_connac_mcu_sta_uapsd
In reply to Lorenzo BianconiRely on mt76_connac_mcu_sta_uapsd routine in mt7915 and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 6 ++-- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 2 ++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 34 +------------------ 3 files changed, 6 insertions(+), 36 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +3 -3
@@ -418,9 +418,8 @@ void mt76_connac_mcu_sta_basic_tlv(struct sk_buff *skb, }EXPORT_SYMBOL_GPL (mt76_connac_mcu_sta_basic_tlv); -static void -mt76_connac_mcu_sta_uapsd (struct sk_buff *skb,struct ieee80211_vif *vif, -struct ieee80211_sta *sta) +void mt76_connac_mcu_sta_uapsd (struct sk_buff *skb,struct ieee80211_vif *vif, +struct ieee80211_sta *sta) {struct sta_rec_uapsd *uapsd;struct tlv *tlv;
@@ -449,6 +448,7 @@ mt76_connac_mcu_sta_uapsd(struct sk_buff *skb, struct ieee80211_vif *vif, } uapsd->max_sp = sta->max_sp; } +EXPORT_SYMBOL_GPL (mt76_connac_mcu_sta_uapsd); void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +2 -0
@@ -1601,4 +1601,6 @@ int mt76_connac_mcu_bss_basic_tlv(struct sk_buff *skb,struct ieee80211_sta *sta, struct mt76_phy *phy, u8 wlan_idx, bool enable); +void mt76_connac_mcu_sta_uapsd (struct sk_buff *skb,struct ieee80211_vif *vif, +struct ieee80211_sta *sta);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -33
@@ -912,38 +912,6 @@ mt7915_mcu_sta_he_tlv(struct sk_buff *skb, struct ieee80211_sta *sta, he->pkt_ext =2 ; } -static void -mt7915_mcu_sta_uapsd_tlv (struct sk_buff *skb,struct ieee80211_sta *sta, -struct ieee80211_vif *vif) -{ -struct sta_rec_uapsd *uapsd; -struct tlv *tlv; - -if (vif->type !=NL80211_IFTYPE_AP || !sta->wme) -return ; - - tlv =mt76_connac_mcu_add_tlv (skb,STA_REC_APPS ,sizeof (*uapsd)); - uapsd = (struct sta_rec_uapsd *)tlv; - -if (sta->uapsd_queues &IEEE80211_WMM_IE_STA_QOSINFO_AC_VO ) { - uapsd->dac_map |=BIT (3 ); - uapsd->tac_map |=BIT (3 ); - } -if (sta->uapsd_queues &IEEE80211_WMM_IE_STA_QOSINFO_AC_VI ) { - uapsd->dac_map |=BIT (2 ); - uapsd->tac_map |=BIT (2 ); - } -if (sta->uapsd_queues &IEEE80211_WMM_IE_STA_QOSINFO_AC_BE ) { - uapsd->dac_map |=BIT (1 ); - uapsd->tac_map |=BIT (1 ); - } -if (sta->uapsd_queues &IEEE80211_WMM_IE_STA_QOSINFO_AC_BK ) { - uapsd->dac_map |=BIT (0 ); - uapsd->tac_map |=BIT (0 ); - } - uapsd->max_sp = sta->max_sp; -} -static void mt7915_mcu_sta_muru_tlv (struct sk_buff *skb,struct ieee80211_sta *sta,struct ieee80211_vif *vif)
@@ -1829,7 +1797,7 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,/* starec vht */ mt7915_mcu_sta_vht_tlv (skb, sta);/* starec uapsd */ -mt7915_mcu_sta_uapsd_tlv (skb, sta, vif); +mt76_connac_mcu_sta_uapsd (skb, vif, sta); } ret =mt7915_mcu_sta_wtbl_tlv (dev, skb, vif, sta);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 11/15 mt76: mt7915: rely on mt76_connac_mcu_wtbl_smps_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_wtbl_smps_tlv routine in mt7915 and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 11 +++++------ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 3 +++ drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 17 ++--------------- 3 files changed, 10 insertions(+), 21 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +5 -6
@@ -861,9 +861,9 @@ void mt76_connac_mcu_sta_tlv(struct mt76_phy *mphy, struct sk_buff *skb, }EXPORT_SYMBOL_GPL (mt76_connac_mcu_sta_tlv); -static void -mt76_connac_mcu_wtbl_smps_tlv (struct sk_buff *skb,struct ieee80211_sta *sta, -void *sta_wtbl,void *wtbl_tlv) +void mt76_connac_mcu_wtbl_smps_tlv (struct sk_buff *skb, +struct ieee80211_sta *sta, +void *sta_wtbl,void *wtbl_tlv) {struct wtbl_smps *smps;struct tlv *tlv;
@@ -871,10 +871,9 @@ mt76_connac_mcu_wtbl_smps_tlv(struct sk_buff *skb, struct ieee80211_sta *sta, tlv =mt76_connac_mcu_add_nested_tlv (skb,WTBL_SMPS ,sizeof (*smps), wtbl_tlv, sta_wtbl); smps = (struct wtbl_smps *)tlv; - -if (sta->smps_mode ==IEEE80211_SMPS_DYNAMIC ) - smps->smps = true; + smps->smps = (sta->smps_mode ==IEEE80211_SMPS_DYNAMIC ); } +EXPORT_SYMBOL_GPL (mt76_connac_mcu_wtbl_smps_tlv); void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb, struct ieee80211_sta *sta, void *sta_wtbl,
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +3 -0
@@ -1603,4 +1603,7 @@ int mt76_connac_mcu_bss_basic_tlv(struct sk_buff *skb, bool enable);void mt76_connac_mcu_sta_uapsd (struct sk_buff *skb,struct ieee80211_vif *vif,struct ieee80211_sta *sta); +void mt76_connac_mcu_wtbl_smps_tlv (struct sk_buff *skb, +struct ieee80211_sta *sta, +void *sta_wtbl,void *wtbl_tlv);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -15
@@ -1022,19 +1022,6 @@ mt7915_mcu_sta_amsdu_tlv(struct sk_buff *skb, struct ieee80211_vif *vif, msta->wcid.amsdu = true; } -static void -mt7915_mcu_wtbl_smps_tlv (struct sk_buff *skb,struct ieee80211_sta *sta, -void *sta_wtbl,void *wtbl_tlv) -{ -struct wtbl_smps *smps; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_nested_tlv (skb,WTBL_SMPS ,sizeof (*smps), - wtbl_tlv, sta_wtbl); - smps = (struct wtbl_smps *)tlv; - smps->smps = (sta->smps_mode ==IEEE80211_SMPS_DYNAMIC ); -} - static void mt7915_mcu_wtbl_ht_tlv(struct sk_buff *skb, struct ieee80211_vif *vif, struct ieee80211_sta *sta, void *sta_wtbl,
@@ -1075,7 +1062,7 @@ mt7915_mcu_wtbl_ht_tlv(struct sk_buff *skb, struct ieee80211_vif *vif, ht->af =max_t (u8, ht->af, af); } -mt7915_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_tlv); +mt76_connac_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_tlv); } static void
@@ -1509,7 +1496,7 @@ int mt7915_mcu_add_smps(struct mt7915_dev *dev, struct ieee80211_vif *vif,if (IS_ERR (wtbl_hdr))return PTR_ERR (wtbl_hdr); -mt7915_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_hdr); +mt76_connac_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_hdr); ret =mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (STA_REC_UPDATE ), true);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 12/15 mt76: mt7915: rely on mt76_connac_mcu_wtbl_ht_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_wtbl_ht_tlv routine and
remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 2 +- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 12 +++-- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 2 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 46 +------------------ 4 files changed, 11 insertions(+), 51 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +1 -1
@@ -918,7 +918,7 @@ mt7615_mcu_wtbl_sta_add(struct mt7615_phy *phy, struct ieee80211_vif *vif, NULL, wtbl_hdr);if (sta)mt76_connac_mcu_wtbl_ht_tlv (&dev->mt76, wskb, sta, -NULL , wtbl_hdr); +NULL , wtbl_hdr, true);mt76_connac_mcu_wtbl_hdr_trans_tlv (wskb, vif, &msta->wcid,NULL , wtbl_hdr); }
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +7 -5
@@ -877,7 +877,7 @@ EXPORT_SYMBOL_GPL(mt76_connac_mcu_wtbl_smps_tlv);void mt76_connac_mcu_wtbl_ht_tlv (struct mt76_dev *dev,struct sk_buff *skb,struct ieee80211_sta *sta,void *sta_wtbl, -void *wtbl_tlv) +void *wtbl_tlv,bool ldpc) {struct wtbl_ht *ht =NULL ;struct tlv *tlv;
@@ -887,7 +887,8 @@ void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb, tlv =mt76_connac_mcu_add_nested_tlv (skb,WTBL_HT ,sizeof (*ht), wtbl_tlv, sta_wtbl); ht = (struct wtbl_ht *)tlv; - ht->ldpc = !!(sta->ht_cap.cap &IEEE80211_HT_CAP_LDPC_CODING ); + ht->ldpc = ldpc && + !!(sta->ht_cap.cap &IEEE80211_HT_CAP_LDPC_CODING ); ht->af = sta->ht_cap.ampdu_factor; ht->mm = sta->ht_cap.ampdu_density; ht->ht = true;
@@ -901,7 +902,8 @@ void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,sizeof (*vht), wtbl_tlv, sta_wtbl); vht = (struct wtbl_vht *)tlv; - vht->ldpc = !!(sta->vht_cap.cap &IEEE80211_VHT_CAP_RXLDPC ); + vht->ldpc = ldpc && + !!(sta->vht_cap.cap &IEEE80211_VHT_CAP_RXLDPC ); vht->vht = true; af = FIELD_GET(IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK,
@@ -912,7 +914,7 @@ void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,mt76_connac_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_tlv); -if (!is_mt7921 (dev) && sta->ht_cap.ht_supported) { +if (!is_mt7921 (dev) && !is_mt7915 (dev) && sta->ht_cap.ht_supported) {/* sgi */ u32 msk =MT_WTBL_W5_SHORT_GI_20 |MT_WTBL_W5_SHORT_GI_40 |MT_WTBL_W5_SHORT_GI_80 |MT_WTBL_W5_SHORT_GI_160 ;
@@ -980,7 +982,7 @@ int mt76_connac_mcu_sta_cmd(struct mt76_phy *phy, sta_wtbl, wtbl_hdr);if (info->sta)mt76_connac_mcu_wtbl_ht_tlv (dev, skb, info->sta, - sta_wtbl, wtbl_hdr); + sta_wtbl, wtbl_hdr, true); }return mt76_mcu_skb_send_msg (dev, skb, info->cmd, true);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -1
@@ -1518,7 +1518,7 @@ void mt76_connac_mcu_sta_tlv(struct mt76_phy *mphy, struct sk_buff *skb, u8 rcpi, u8 state);void mt76_connac_mcu_wtbl_ht_tlv (struct mt76_dev *dev,struct sk_buff *skb,struct ieee80211_sta *sta,void *sta_wtbl, -void *wtbl_tlv); +void *wtbl_tlv,bool ldpc); void mt76_connac_mcu_wtbl_ba_tlv(struct mt76_dev *dev, struct sk_buff *skb, struct ieee80211_ampdu_params *params, bool enable, bool tx, void *sta_wtbl,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -44
58 lines not on this page · raw message
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 13/15 mt76: mt7915: rely on mt76_connac_mcu_wtbl_hdr_trans_tlv
In reply to Lorenzo BianconiRely on mt76_connac_mcu_wtbl_hdr_trans_tlv routine and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 6 ++- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 38 +++---------------- 2 files changed, 10 insertions(+), 34 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +5 -1
@@ -462,13 +462,17 @@ void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,sizeof (*htr), wtbl_tlv, sta_wtbl); htr = (struct wtbl_hdr_trans *)tlv; - htr->no_rx_trans = !test_bit (MT_WCID_FLAG_HDR_TRANS , &wcid->flags); + htr->no_rx_trans = true;if (vif->type ==NL80211_IFTYPE_STATION ) htr->to_ds = true;else htr->from_ds = true; +if (!wcid) +return ; + + htr->no_rx_trans = !test_bit (MT_WCID_FLAG_HDR_TRANS , &wcid->flags);if (test_bit (MT_WCID_FLAG_4ADDR , &wcid->flags)) { htr->to_ds = true; htr->from_ds = true;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +5 -33
@@ -1022,35 +1022,6 @@ mt7915_mcu_sta_amsdu_tlv(struct sk_buff *skb, struct ieee80211_vif *vif, msta->wcid.amsdu = true; } -static void -mt7915_mcu_wtbl_hdr_trans_tlv (struct sk_buff *skb,struct ieee80211_vif *vif, -struct ieee80211_sta *sta, -void *sta_wtbl,void *wtbl_tlv) -{ -struct mt7915_sta *msta; -struct wtbl_hdr_trans *htr =NULL ; -struct tlv *tlv; - - tlv =mt76_connac_mcu_add_nested_tlv (skb,WTBL_HDR_TRANS ,sizeof (*htr), - wtbl_tlv, sta_wtbl); - htr = (struct wtbl_hdr_trans *)tlv; - htr->no_rx_trans = true; -if (vif->type ==NL80211_IFTYPE_STATION ) - htr->to_ds = true; -else - htr->from_ds = true; - -if (!sta) -return ; - - msta = (struct mt7915_sta *)sta->drv_priv; - htr->no_rx_trans = !test_bit (MT_WCID_FLAG_HDR_TRANS , &msta->wcid.flags); -if (test_bit (MT_WCID_FLAG_4ADDR , &msta->wcid.flags)) { - htr->to_ds = true; - htr->from_ds = true; - } -} -static int mt7915_mcu_sta_wtbl_tlv (struct mt7915_dev *dev,struct sk_buff *skb,struct ieee80211_vif *vif,struct ieee80211_sta *sta)
@@ -1058,9 +1029,11 @@ mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;struct mt7915_sta *msta;struct wtbl_req_hdr *wtbl_hdr; +struct mt76_wcid *wcid;struct tlv *tlv; msta = sta ? (struct mt7915_sta *)sta->drv_priv : &mvif->sta; + wcid = sta ? &msta->wcid :NULL ; tlv =mt76_connac_mcu_add_tlv (skb,STA_REC_WTBL ,sizeof (struct tlv )); wtbl_hdr = mt76_connac_mcu_alloc_wtbl_req(&dev->mt76, &msta->wcid,
@@ -1071,8 +1044,7 @@ mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,mt76_connac_mcu_wtbl_generic_tlv (&dev->mt76, skb, vif, sta, tlv, wtbl_hdr); -mt7915_mcu_wtbl_hdr_trans_tlv (skb, vif, sta, tlv, wtbl_hdr); - +mt76_connac_mcu_wtbl_hdr_trans_tlv (skb, vif, wcid, tlv, wtbl_hdr);if (sta)mt76_connac_mcu_wtbl_ht_tlv (&dev->mt76, skb, sta, tlv, wtbl_hdr, mvif->cap.ldpc);
@@ -1098,8 +1070,8 @@ int mt7915_mcu_sta_update_hdr_trans(struct mt7915_dev *dev,if (IS_ERR (wtbl_hdr))return PTR_ERR (wtbl_hdr); -mt7915_mcu_wtbl_hdr_trans_tlv (skb, vif, sta,NULL , wtbl_hdr); - +mt76_connac_mcu_wtbl_hdr_trans_tlv (skb, vif, &msta->wcid,NULL , + wtbl_hdr);return mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (WTBL_UPDATE ), true); }
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 14/15 mt76: connac: move mt76_connac_mcu_wtbl_update_hdr_trans in connac module
In reply to Lorenzo BianconiMove mt76_connac_mcu_wtbl_update_hdr_trans routine in mt76-connac module since it is shared between mt7915 and mt7615 drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 14 +---------- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 19 +++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 3 +++ .../net/wireless/mediatek/mt76/mt7915/main.c | 4 ++-- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 24 ------------------- .../wireless/mediatek/mt76/mt7915/mt7915.h | 3 --- 6 files changed, 25 insertions(+), 42 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +1 -13
@@ -945,19 +945,7 @@ mt7615_mcu_wtbl_update_hdr_trans(struct mt7615_dev *dev,struct ieee80211_vif *vif, struct ieee80211_sta *sta) { - struct mt7615_sta *msta = (struct mt7615_sta *)sta->drv_priv; -struct wtbl_req_hdr *wtbl_hdr; -struct sk_buff *skb =NULL ; - - wtbl_hdr =mt76_connac_mcu_alloc_wtbl_req (&dev->mt76, &msta->wcid, -WTBL_SET ,NULL , &skb); -if (IS_ERR (wtbl_hdr)) -return PTR_ERR (wtbl_hdr); - -mt76_connac_mcu_wtbl_hdr_trans_tlv (skb, vif, &msta->wcid,NULL , - wtbl_hdr); -return mt76_mcu_skb_send_msg (&dev->mt76, skb, -MCU_EXT_CMD (WTBL_UPDATE ), true); + return mt76_connac_mcu_wtbl_update_hdr_trans(&dev->mt76, vif, sta); } static const struct mt7615_mcu_ops wtbl_update_ops = {
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +19 -0
@@ -507,6 +507,25 @@ int mt76_connac_mcu_sta_update_hdr_trans(struct mt76_dev *dev, }EXPORT_SYMBOL_GPL (mt76_connac_mcu_sta_update_hdr_trans); +int mt76_connac_mcu_wtbl_update_hdr_trans (struct mt76_dev *dev, +struct ieee80211_vif *vif, +struct ieee80211_sta *sta) +{ +struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv; +struct wtbl_req_hdr *wtbl_hdr; +struct sk_buff *skb =NULL ; + + wtbl_hdr =mt76_connac_mcu_alloc_wtbl_req (dev, wcid,WTBL_SET ,NULL , + &skb); +if (IS_ERR (wtbl_hdr)) +return PTR_ERR (wtbl_hdr); + +mt76_connac_mcu_wtbl_hdr_trans_tlv (skb, vif, wcid,NULL , wtbl_hdr); + +return mt76_mcu_skb_send_msg (dev, skb,MCU_EXT_CMD (WTBL_UPDATE ), true); +} +EXPORT_SYMBOL_GPL (mt76_connac_mcu_wtbl_update_hdr_trans); + void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, struct sk_buff *skb, struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +3 -0
@@ -1512,6 +1512,9 @@ void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,int mt76_connac_mcu_sta_update_hdr_trans (struct mt76_dev *dev,struct ieee80211_vif *vif,struct mt76_wcid *wcid,int cmd); +int mt76_connac_mcu_wtbl_update_hdr_trans (struct mt76_dev *dev, +struct ieee80211_vif *vif, +struct ieee80211_sta *sta); void mt76_connac_mcu_sta_tlv(struct mt76_phy *mphy, struct sk_buff *skb, struct ieee80211_sta *sta, struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt7915/main.c +2 -2
@@ -1093,7 +1093,7 @@ static void mt7915_sta_set_4addr(struct ieee80211_hw *hw,else clear_bit (MT_WCID_FLAG_4ADDR , &msta->wcid.flags); -mt7915_mcu_sta_update_hdr_trans (dev, vif, sta); +mt76_connac_mcu_wtbl_update_hdr_trans (&dev->mt76, vif, sta); } static void mt7915_sta_set_decap_offload(struct ieee80211_hw *hw,
@@ -1109,7 +1109,7 @@ static void mt7915_sta_set_decap_offload(struct ieee80211_hw *hw,else clear_bit (MT_WCID_FLAG_HDR_TRANS , &msta->wcid.flags); -mt7915_mcu_sta_update_hdr_trans (dev, vif, sta); +mt76_connac_mcu_wtbl_update_hdr_trans (&dev->mt76, vif, sta); }static const char mt7915_gstrings_stats[][ETH_GSTRING_LEN ] = {
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +0 -24
@@ -1052,30 +1052,6 @@ mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,return 0 ; } -int mt7915_mcu_sta_update_hdr_trans (struct mt7915_dev *dev, -struct ieee80211_vif *vif, -struct ieee80211_sta *sta) -{ -struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv; -struct wtbl_req_hdr *wtbl_hdr; -struct sk_buff *skb; - - skb =mt76_mcu_msg_alloc (&dev->mt76,NULL , -MT76_CONNAC_WTBL_UPDATE_MAX_SIZE ); -if (!skb) -return -ENOMEM ; - - wtbl_hdr =mt76_connac_mcu_alloc_wtbl_req (&dev->mt76, &msta->wcid, -WTBL_SET ,NULL , &skb); -if (IS_ERR (wtbl_hdr)) -return PTR_ERR (wtbl_hdr); - -mt76_connac_mcu_wtbl_hdr_trans_tlv (skb, vif, &msta->wcid,NULL , - wtbl_hdr); -return mt76_mcu_skb_send_msg (&dev->mt76, skb,MCU_EXT_CMD (WTBL_UPDATE ), - true); -} -static inline bool mt7915_is_ebf_supported (struct mt7915_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool bfee)
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +0 -3
@@ -407,9 +407,6 @@ int mt7915_mcu_add_bss_info(struct mt7915_phy *phy, struct ieee80211_vif *vif, int enable);int mt7915_mcu_add_sta (struct mt7915_dev *dev,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool enable); -int mt7915_mcu_sta_update_hdr_trans (struct mt7915_dev *dev, -struct ieee80211_vif *vif, -struct ieee80211_sta *sta);int mt7915_mcu_add_tx_ba (struct mt7915_dev *dev,struct ieee80211_ampdu_params *params,bool add);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 15/15 mt76: connac: introduce is_connac_v2 utility routine
In reply to Lorenzo BianconiIntroduce is_connac_v2 inline utility routine to check if the device is generation v2.
--- drivers/net/wireless/mediatek/mt76/mt76_connac.h | 5 +++++ drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c | 11 +++++------ drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac.h +5 -0
@@ -115,6 +115,11 @@ static inline bool is_mt7916(struct mt76_dev *dev)return mt76_chip (dev) ==0x7906 ; } +static inline bool is_connac_v2 (struct mt76_dev *dev) +{ +return is_mt7921 (dev) ||is_mt7915 (dev) ||is_mt7916 (dev); +} +static inline u8 mt76_connac_chan_bw (struct cfg80211_chan_def *chandef) {static const u8 width_to_bw[] = {
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +5 -6
@@ -553,8 +553,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, generic->muar_idx = mvif->omac_idx; generic->qos = sta->wme; }else { -if ((is_mt7921 (dev) ||is_mt7915 (dev)) && - vif->type ==NL80211_IFTYPE_STATION ) +if (is_connac_v2 (dev) && vif->type ==NL80211_IFTYPE_STATION )memcpy (generic->peer_addr, vif->bss_conf.bssid,ETH_ALEN );else
@@ -571,7 +570,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, rx->rca2 =1 ; rx->rv =1 ; -if (is_mt7921 (dev) ||is_mt7915 (dev)) +if (is_connac_v2 (dev))return ; tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_SPE, sizeof(*spe),
@@ -937,7 +936,7 @@ void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,mt76_connac_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_tlv); -if (!is_mt7921 (dev) && !is_mt7915 (dev) && sta->ht_cap.ht_supported) { +if (!is_connac_v2 (dev) && sta->ht_cap.ht_supported) {/* sgi */ u32 msk =MT_WTBL_W5_SHORT_GI_20 |MT_WTBL_W5_SHORT_GI_40 |MT_WTBL_W5_SHORT_GI_80 |MT_WTBL_W5_SHORT_GI_160 ;
@@ -1039,7 +1038,7 @@ void mt76_connac_mcu_wtbl_ba_tlv(struct mt76_dev *dev, struct sk_buff *skb, ba->rst_ba_sb =1 ; } -if (is_mt7921 (dev) ||is_mt7915 (dev)) { +if (is_connac_v2 (dev)) { ba->ba_winsize = enable ?cpu_to_le16 (params->buf_size) :0 ;return ; }
@@ -1218,7 +1217,7 @@ u8 mt76_connac_get_phy_mode(struct mt76_phy *phy, struct ieee80211_vif *vif,struct ieee80211_sta_ht_cap *ht_cap;u8 mode =0 ; -if (!is_mt7921 (dev) && !is_mt7915 (dev)) +if (!is_connac_v2 (dev))return 0x38 ;if (sta) {
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -1
@@ -1464,7 +1464,7 @@ mt76_connac_mcu_get_wlan_idx(struct mt76_dev *dev, struct mt76_wcid *wcid, { *wlan_idx_hi =0 ; -if (is_mt7921 (dev) ||is_mt7915 (dev) ||is_mt7916 (dev)) { +if (is_connac_v2 (dev)) { *wlan_idx_lo = wcid ?to_wcid_lo (wcid->idx) :0 ; *wlan_idx_hi = wcid ?to_wcid_hi (wcid->idx) :0 ; }else {
Signature · 1 line
2.33.1