mt76: add the capability to support more than two phys
Subsystems (3)
Lorenzo Bianconi
maintainerv2 cover mt76: add the capability to support more than two phys
Introduce the capability to support more than two mt76_phys. This is a preliminary series to add mt7990 support.
Changes since v1:
- added Bo's SoB
Lorenzo Bianconi (5):
mt76: add phy_idx in mt76_rx_status
mt76: introduce phys array in mt76_dev structure
mt76: add phy_idx to mt76_wcid
mt76: convert MT_TX_HW_QUEUE_EXT_PHY to MT_TX_HW_QUEUE_PHY
mt76: get rid of mt76_wcid_hw routine
drivers/net/wireless/mediatek/mt76/dma.c | 9 ++- drivers/net/wireless/mediatek/mt76/mac80211.c | 27 ++++---- drivers/net/wireless/mediatek/mt76/mt76.h | 67 ++++++++++--------- .../net/wireless/mediatek/mt76/mt7615/init.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/mac.c | 44 ++++++------ .../net/wireless/mediatek/mt76/mt7615/main.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 32 +++++---- .../wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- .../wireless/mediatek/mt76/mt7615/pci_mac.c | 15 +++-- .../wireless/mediatek/mt76/mt76_connac_mac.c | 12 ++-- .../net/wireless/mediatek/mt76/mt7915/init.c | 4 +- .../net/wireless/mediatek/mt76/mt7915/mac.c | 23 ++++--- .../net/wireless/mediatek/mt76/mt7915/main.c | 4 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 25 +++---- .../wireless/mediatek/mt76/mt7915/mt7915.h | 2 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 4 +- drivers/net/wireless/mediatek/mt76/testmode.c | 5 +- drivers/net/wireless/mediatek/mt76/tx.c | 48 +++++++------ 18 files changed, 174 insertions(+), 157 deletions(-)
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH v2 1/5 mt76: add phy_idx in mt76_rx_status
Introduce phy_idx mt76_rx_status instead of ext_idx. This is a preliminary patch to add mt7990 chipset support
--- drivers/net/wireless/mediatek/mt76/mac80211.c | 6 +++--- drivers/net/wireless/mediatek/mt76/mt76.h | 11 ++++++----- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-)
drivers/net/wireless/mediatek/mt76/mac80211.c +3 -3
@@ -739,7 +739,7 @@ static void mt76_rx_release_burst(struct mt76_phy *phy, enum mt76_rxq_id q,void mt76_rx (struct mt76_dev *dev,enum mt76_rxq_id q,struct sk_buff *skb) {struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb; -struct mt76_phy *phy =mt76_dev_phy (dev, status->ext_phy); +struct mt76_phy *phy =mt76_dev_phy (dev, status->phy_idx);if (!test_bit (MT76_STATE_RUNNING , &phy->state)) {dev_kfree_skb (skb);
@@ -1015,7 +1015,7 @@ mt76_rx_convert(struct mt76_dev *dev, struct sk_buff *skb, sizeof(mstat.chain_signal)); *sta =wcid_to_sta (mstat.wcid); - *hw =mt76_phy_hw (dev, mstat.ext_phy); + *hw =mt76_phy_hw (dev, mstat.phy_idx); } static int
@@ -1178,7 +1178,7 @@ mt76_check_sta(struct mt76_dev *dev, struct sk_buff *skb)u8 tidno = status->qos_ctl &IEEE80211_QOS_CTL_TID_MASK ;bool ps; - hw =mt76_phy_hw (dev, status->ext_phy); + hw =mt76_phy_hw (dev, status->phy_idx);if (ieee80211_is_pspoll (hdr->frame_control) && !wcid && !(status->flag &RX_FLAG_8023 )) { sta =ieee80211_find_sta_by_ifaddr (hw, hdr->addr2,NULL );
drivers/net/wireless/mediatek/mt76/mt76.h +6 -5
@@ -575,7 +575,7 @@ struct mt76_rx_status {u8 iv[6 ]; - u8 ext_phy:1; + u8 phy_idx:2; u8 aggr:1;u8 qos_ctl;u16 seqno;
@@ -1001,17 +1001,18 @@ static inline int mt76_init_mcu_queue(struct mt76_dev *dev, int qid, int idx, }static inline struct mt76_phy * -mt76_dev_phy (struct mt76_dev *dev,bool phy_ext) +mt76_dev_phy (struct mt76_dev *dev,u8 phy_idx) { -if (phy_ext && dev->phy2) +if (phy_idx && dev->phy2)return dev->phy2; +return &dev->phy; }static inline struct ieee80211_hw * -mt76_phy_hw (struct mt76_dev *dev,bool phy_ext) +mt76_phy_hw (struct mt76_dev *dev,u8 phy_idx) { -return mt76_dev_phy (dev, phy_ext)->hw; +return mt76_dev_phy (dev, phy_idx)->hw; } static inline u8 *
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +1 -1
@@ -500,7 +500,7 @@ static int mt7615_mac_fill_rx(struct mt7615_dev *dev, struct sk_buff *skb)if (phy_idx ==1 && phy2) { mphy = dev->mt76.phy2; phy = phy2; - status->ext_phy = true; + status->phy_idx = phy_idx; }if (!mt7615_firmware_offload (dev) && chfreq != phy->chfreq)
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +1 -1
@@ -247,7 +247,7 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb)return -EINVAL ; phy = mphy->priv; - status->ext_phy = true; + status->phy_idx =1 ; }if (!test_bit (MT76_STATE_RUNNING , &mphy->state))
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH v2 2/5 mt76: introduce phys array in mt76_dev structure
In reply to Lorenzo BianconiIntroduce phys array in mt76_dev structure to reference mt76_phy supported by the chipset. This is a preliminary patch to introduce mt7990 chipset support.
--- drivers/net/wireless/mediatek/mt76/dma.c | 9 ++-- drivers/net/wireless/mediatek/mt76/mac80211.c | 9 ++-- drivers/net/wireless/mediatek/mt76/mt76.h | 42 ++++++++++++------- .../net/wireless/mediatek/mt76/mt7615/init.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/mac.c | 36 +++++++++------- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 26 ++++++------ .../wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- .../wireless/mediatek/mt76/mt7615/pci_mac.c | 14 ++++--- .../wireless/mediatek/mt76/mt76_connac_mac.c | 8 ++-- .../net/wireless/mediatek/mt76/mt7915/init.c | 4 +- .../net/wireless/mediatek/mt76/mt7915/mac.c | 20 +++++---- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 16 +++---- .../wireless/mediatek/mt76/mt7915/mt7915.h | 2 +- drivers/net/wireless/mediatek/mt76/tx.c | 39 +++++++++++------ 14 files changed, 135 insertions(+), 96 deletions(-)
drivers/net/wireless/mediatek/mt76/dma.c +6 -3
@@ -792,9 +792,12 @@ void mt76_dma_cleanup(struct mt76_dev *dev)netif_napi_del (&dev->tx_napi);for (i =0 ; i <ARRAY_SIZE (dev->phy.q_tx); i++) { -mt76_dma_tx_cleanup (dev, dev->phy.q_tx[i], true); -if (dev->phy2) -mt76_dma_tx_cleanup (dev, dev->phy2->q_tx[i], true); +for (i =0 ; i < __MT_MAX_BAND; i++) { +if (!dev->phys[i]) +continue ; + +mt76_dma_tx_cleanup (dev, dev->phys[i]->q_tx[i], true); + } }for (i =0 ; i <ARRAY_SIZE (dev->q_mcu); i++)
drivers/net/wireless/mediatek/mt76/mac80211.c +6 -3
@@ -452,7 +452,7 @@ mt76_phy_init(struct mt76_phy *phy, struct ieee80211_hw *hw)struct mt76_phy *mt76_alloc_phy (struct mt76_dev *dev,unsigned int size, -const struct ieee80211_ops *ops) +const struct ieee80211_ops *ops,u8 band_idx) {struct ieee80211_hw *hw;unsigned int phy_size;
@@ -467,6 +467,7 @@ mt76_alloc_phy(struct mt76_dev *dev, unsigned int size, phy->dev = dev; phy->hw = hw; phy->priv = hw->priv + phy_size; + phy->band_idx = band_idx; hw->wiphy->flags |=WIPHY_FLAG_IBSS_RSN ; hw->wiphy->interface_modes =
@@ -519,7 +520,7 @@ int mt76_register_phy(struct mt76_phy *phy, bool vht,if (ret)return ret; - phy->dev->phy2 = phy; + phy->dev->phys[phy->band_idx] = phy;return 0 ; }
@@ -531,7 +532,7 @@ void mt76_unregister_phy(struct mt76_phy *phy)mt76_tx_status_check (dev, true);ieee80211_unregister_hw (phy->hw); - dev->phy2 =NULL ; + dev->phys[phy->band_idx] =NULL ; }EXPORT_SYMBOL_GPL (mt76_unregister_phy);
@@ -558,6 +559,8 @@ mt76_alloc_device(struct device *pdev, unsigned int size, phy = &dev->phy; phy->dev = dev; phy->hw = hw; + phy->band_idx =MT_BAND0 ; + dev->phys[phy->band_idx] = phy;spin_lock_init (&dev->rx_lock);spin_lock_init (&dev->lock);
drivers/net/wireless/mediatek/mt76/mt76.h +27 -15
90 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/init.c +2 -2
@@ -459,7 +459,7 @@ int mt7615_register_ext_phy(struct mt7615_dev *dev)return 0 ;mt7615_cap_dbdc_enable (dev); - mphy =mt76_alloc_phy (&dev->mt76,sizeof (*phy), &mt7615_ops); + mphy =mt76_alloc_phy (&dev->mt76,sizeof (*phy), &mt7615_ops,MT_BAND1 );if (!mphy)return -ENOMEM ;
@@ -509,7 +509,7 @@ EXPORT_SYMBOL_GPL(mt7615_register_ext_phy);void mt7615_unregister_ext_phy (struct mt7615_dev *dev) {struct mt7615_phy *phy =mt7615_ext_phy (dev); -struct mt76_phy *mphy = dev->mt76.phy2; +struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1 ];if (!phy)return ;
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +20 -16
@@ -109,6 +109,7 @@ static struct mt76_wcid *mt7615_rx_get_wcid(struct mt7615_dev *dev,void mt7615_mac_reset_counters (struct mt7615_dev *dev) { +struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1 ];int i;for (i =0 ; i <4 ; i++) {
@@ -118,8 +119,8 @@ void mt7615_mac_reset_counters(struct mt7615_dev *dev)memset (dev->mt76.aggr_stats,0 ,sizeof (dev->mt76.aggr_stats)); dev->mt76.phy.survey_time =ktime_get_boottime (); -if (dev->mt76.phy2) - dev->mt76.phy2->survey_time =ktime_get_boottime (); +if (mphy_ext) + mphy_ext->survey_time =ktime_get_boottime ();/* reset airtime counters */ mt76_rr (dev,MT_MIB_SDR9 (0 ));
@@ -336,9 +337,9 @@ static int mt7615_mac_fill_rx(struct mt7615_dev *dev, struct sk_buff *skb)struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb;struct mt76_phy *mphy = &dev->mt76.phy;struct mt7615_phy *phy = &dev->phy; -struct mt7615_phy *phy2 = dev->mt76.phy2 ? dev->mt76.phy2->priv :NULL ;struct ieee80211_supported_band *sband;struct ieee80211_hdr *hdr; +struct mt7615_phy *phy2;__le32 *rxd = (__le32 *)skb->data;u32 rxd0 =le32_to_cpu (rxd[0 ]);u32 rxd1 =le32_to_cpu (rxd[1 ]);
@@ -355,6 +356,8 @@ static int mt7615_mac_fill_rx(struct mt7615_dev *dev, struct sk_buff *skb)memset (status,0 ,sizeof (*status)); chfreq =FIELD_GET (MT_RXD1_NORMAL_CH_FREQ , rxd1); + + phy2 = dev->mt76.phys[MT_BAND1 ] ? dev->mt76.phys[MT_BAND1 ]->priv :NULL ;if (!phy2) phy_idx =0 ;else if (phy2->chfreq == phy->chfreq)
@@ -498,7 +501,7 @@ static int mt7615_mac_fill_rx(struct mt7615_dev *dev, struct sk_buff *skb) }if (phy_idx ==1 && phy2) { - mphy = dev->mt76.phy2; + mphy = dev->mt76.phys[MT_BAND1 ]; phy = phy2; status->phy_idx = phy_idx; }
@@ -746,8 +749,8 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi, tx_count = msta->rate_count; } -if (ext_phy && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (ext_phy && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ]; fc_type = (le16_to_cpu (fc) &IEEE80211_FCTL_FTYPE ) >>2 ; fc_stype = (le16_to_cpu (fc) &IEEE80211_FCTL_STYPE ) >>4 ;
@@ -1385,8 +1388,8 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta,if (sta->rate_probe) {struct mt7615_phy *phy = &dev->phy; -if (sta->wcid.ext_phy && dev->mt76.phy2) - phy = dev->mt76.phy2->priv; +if (sta->wcid.ext_phy && dev->mt76.phys[MT_BAND1 ]) + phy = dev->mt76.phys[MT_BAND1 ]->priv;mt7615_mac_set_rates (phy, sta,NULL , sta->rates); }
@@ -1428,8 +1431,8 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta, fallthrough;case MT_PHY_TYPE_OFDM : mphy = &dev->mphy; -if (sta->wcid.ext_phy && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (sta->wcid.ext_phy && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];if (mphy->chandef.chan->band ==NL80211_BAND_5GHZ ) sband = &mphy->sband_5g.sband;
@@ -1536,8 +1539,8 @@ static void mt7615_mac_add_txs(struct mt7615_dev *dev, void *data)if (wcidx >=MT7615_WTBL_STA || !sta) goto out; -if (wcid->ext_phy && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (wcid->ext_phy && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];if (mt7615_fill_txs (dev, msta, &info, txs_data))ieee80211_tx_status_noskb (mphy->hw, sta, &info);
@@ -1954,6 +1957,7 @@ mt7615_phy_update_channel(struct mt76_phy *mphy, int idx)static void mt7615_update_survey (struct mt7615_dev *dev) {struct mt76_dev *mdev = &dev->mt76; +struct mt76_phy *mphy_ext = mdev->phys[MT_BAND1 ];ktime_t cur_time;/* MT7615 can only update both phys simultaneously
@@ -1961,14 +1965,14 @@ static void mt7615_update_survey(struct mt7615_dev *dev)*/ mt7615_phy_update_channel (&mdev->phy,0 ); -if (mdev->phy2) -mt7615_phy_update_channel (mdev->phy2,1 ); +if (mphy_ext) +mt7615_phy_update_channel (mphy_ext,1 ); cur_time =ktime_get_boottime ();mt76_update_survey_active_time (&mdev->phy, cur_time); -if (mdev->phy2) -mt76_update_survey_active_time (mdev->phy2, cur_time); +if (mphy_ext) +mt76_update_survey_active_time (mphy_ext, cur_time);/* reset obss airtime */ mt76_set (dev,MT_WF_RMAC_MIB_TIME0 ,MT_WF_RMAC_MIB_RXTIME_CLR );
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +13 -13
@@ -369,7 +369,7 @@ mt7615_mcu_rx_csa_notify(struct mt7615_dev *dev, struct sk_buff *skb)return ;if (ext_phy && ext_phy->omac_mask &BIT_ULL (c->omac_idx)) - mphy = dev->mt76.phy2; + mphy = dev->mt76.phys[MT_BAND1 ]; ieee80211_iterate_active_interfaces_atomic(mphy->hw, IEEE80211_IFACE_ITER_RESUME_ALL,
@@ -388,8 +388,8 @@ mt7615_mcu_rx_radar_detected(struct mt7615_dev *dev, struct sk_buff *skb) !r->constant_prf_detected && !r->staggered_prf_detected)return ; -if (r->band_idx && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (r->band_idx && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];ieee80211_radar_detected (mphy->hw); dev->hw_pattern++;
@@ -445,8 +445,8 @@ mt7615_mcu_scan_event(struct mt7615_dev *dev, struct sk_buff *skb)struct mt7615_phy *phy;struct mt76_phy *mphy; -if (*seq_num &BIT (7 ) && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (*seq_num &BIT (7 ) && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];else mphy = &dev->mt76.phy;
@@ -471,8 +471,8 @@ mt7615_mcu_roc_event(struct mt7615_dev *dev, struct sk_buff *skb)skb_pull (skb,sizeof (struct mt7615_mcu_rxd )); event = (struct mt7615_roc_tlv *)skb->data; -if (event->dbdc_band && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (event->dbdc_band && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];else mphy = &dev->mt76.phy;
@@ -496,8 +496,8 @@ mt7615_mcu_beacon_loss_event(struct mt7615_dev *dev, struct sk_buff *skb)skb_pull (skb,sizeof (struct mt7615_mcu_rxd )); event = (struct mt76_connac_beacon_loss_event *)skb->data; -if (band_idx && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (band_idx && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];else mphy = &dev->mt76.phy;
@@ -517,8 +517,8 @@ mt7615_mcu_bss_event(struct mt7615_dev *dev, struct sk_buff *skb)skb_pull (skb,sizeof (struct mt7615_mcu_rxd )); event = (struct mt76_connac_mcu_bss_event *)skb->data; -if (band_idx && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if (band_idx && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];else mphy = &dev->mt76.phy;
@@ -2320,7 +2320,7 @@ int mt7615_mcu_apply_rx_dcoc(struct mt7615_phy *phy) .bw = mt7615_mcu_chan_bw(chandef), .band = chandef->center_freq1 > 4000, - .dbdc_en = !!dev->mt76.phy2, + .dbdc_en = !!dev->mt76.phys[MT_BAND1], };u16 center_freq = chandef->center_freq1;int freq_idx;
@@ -2441,7 +2441,7 @@ int mt7615_mcu_apply_tx_dpd(struct mt7615_phy *phy) .bw = mt7615_mcu_chan_bw(chandef), .band = chandef->center_freq1 > 4000, - .dbdc_en = !!dev->mt76.phy2, + .dbdc_en = !!dev->mt76.phys[MT_BAND1], };u16 center_freq = chandef->center_freq1;int freq_idx;
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +1 -1
@@ -345,7 +345,7 @@ mt7615_hw_dev(struct ieee80211_hw *hw)static inline struct mt7615_phy *mt7615_ext_phy (struct mt7615_dev *dev) { -struct mt76_phy *phy = dev->mt76.phy2; +struct mt76_phy *phy = dev->mt76.phys[MT_BAND1 ];if (!phy)return NULL ;
drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c +8 -6
@@ -78,8 +78,8 @@ int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,if ((info->flags &IEEE80211_TX_CTL_RATE_CTRL_PROBE ) && msta) {struct mt7615_phy *phy = &dev->phy; -if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && mdev->phy2) - phy = mdev->phy2->priv; +if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && mdev->phys[MT_BAND1 ]) + phy = mdev->phys[MT_BAND1 ]->priv;spin_lock_bh (&dev->mt76.lock); mt7615_mac_set_rates(phy, msta, &info->control.rates[0],
@@ -182,16 +182,18 @@ mt7615_update_vif_beacon(void *priv, u8 *mac, struct ieee80211_vif *vif)static void mt7615_update_beacons (struct mt7615_dev *dev) { +struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1 ]; +ieee80211_iterate_active_interfaces (dev->mt76.hw,IEEE80211_IFACE_ITER_RESUME_ALL , mt7615_update_vif_beacon, dev->mt76.hw); -if (!dev->mt76.phy2) +if (!mphy_ext)return ; -ieee80211_iterate_active_interfaces (dev->mt76.phy2->hw, +ieee80211_iterate_active_interfaces (mphy_ext->hw,IEEE80211_IFACE_ITER_RESUME_ALL , - mt7615_update_vif_beacon, dev->mt76.phy2->hw); + mt7615_update_vif_beacon, mphy_ext->hw); }void mt7615_mac_reset_work (struct work_struct *work)
@@ -203,7 +205,7 @@ void mt7615_mac_reset_work(struct work_struct *work)int i; dev = container_of(work, struct mt7615_dev, reset_work); - ext_phy = dev->mt76.phy2; + ext_phy = dev->mt76.phys[MT_BAND1 ]; phy2 = ext_phy ? ext_phy->priv :NULL ;if (!(READ_ONCE (dev->reset_state) &MT_MCU_CMD_STOP_PDMA ))
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +4 -4
@@ -474,8 +474,8 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, band_idx = mvif->band_idx; } -if (ext_phy && dev->phy2) - mphy = dev->phy2; +if (ext_phy && dev->phys[MT_BAND1 ]) + mphy = dev->phys[MT_BAND1 ];if (inband_disc) { p_fmt =MT_TX_TYPE_FW ;
@@ -597,8 +597,8 @@ bool mt76_connac2_mac_add_txs_skb(struct mt76_dev *dev, struct mt76_wcid *wcid, fallthrough;case MT_PHY_TYPE_OFDM : mphy = &dev->phy; -if (wcid->ext_phy && dev->phy2) - mphy = dev->phy2; +if (wcid->ext_phy && dev->phys[MT_BAND1 ]) + mphy = dev->phys[MT_BAND1 ];if (mphy->chandef.chan->band ==NL80211_BAND_5GHZ ) sband = &mphy->sband_5g.sband;
drivers/net/wireless/mediatek/mt76/mt7915/init.c +2 -2
@@ -499,7 +499,7 @@ mt7915_alloc_ext_phy(struct mt7915_dev *dev)if (!dev->dbdc_support)return NULL ; - mphy =mt76_alloc_phy (&dev->mt76,sizeof (*phy), &mt7915_ops); + mphy =mt76_alloc_phy (&dev->mt76,sizeof (*phy), &mt7915_ops,MT_BAND1 );if (!mphy)return ERR_PTR (-ENOMEM );
@@ -1033,7 +1033,7 @@ void mt7915_set_stream_he_caps(struct mt7915_phy *phy)static void mt7915_unregister_ext_phy (struct mt7915_dev *dev) {struct mt7915_phy *phy =mt7915_ext_phy (dev); -struct mt76_phy *mphy = dev->mt76.phy2; +struct mt76_phy *mphy = dev->mt76.phys[MT_BAND1 ];if (!phy)return ;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +11 -9
@@ -242,7 +242,7 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb)memset (status,0 ,sizeof (*status));if ((rxd1 &MT_RXD1_NORMAL_BAND_IDX ) && !phy->band_idx) { - mphy = dev->mt76.phy2; + mphy = dev->mt76.phys[MT_BAND1 ];if (!mphy)return -EINVAL ;
@@ -667,8 +667,8 @@ void mt7915_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,struct ieee80211_tx_info *info =IEEE80211_SKB_CB (skb);struct mt76_phy *mphy = &dev->phy; -if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && dev->phy2) - mphy = dev->phy2; +if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && dev->phys[MT_BAND1 ]) + mphy = dev->phys[MT_BAND1 ];mt76_connac2_mac_write_txwi (dev, txwi, skb, wcid, key, pid, changed);
@@ -851,7 +851,7 @@ static void mt7915_mac_tx_free_prepare(struct mt7915_dev *dev) {struct mt76_dev *mdev = &dev->mt76; -struct mt76_phy *mphy_ext = mdev->phy2; +struct mt76_phy *mphy_ext = mdev->phys[MT_BAND1 ];/* clean DMA queues and unmap buffers first */ mt76_queue_tx_cleanup (dev, dev->mphy.q_tx[MT_TXQ_PSD ], false);
@@ -1273,22 +1273,24 @@ mt7915_update_vif_beacon(void *priv, u8 *mac, struct ieee80211_vif *vif)static void mt7915_update_beacons (struct mt7915_dev *dev) { +struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1 ]; +ieee80211_iterate_active_interfaces (dev->mt76.hw,IEEE80211_IFACE_ITER_RESUME_ALL , mt7915_update_vif_beacon, dev->mt76.hw); -if (!dev->mt76.phy2) +if (!mphy_ext)return ; -ieee80211_iterate_active_interfaces (dev->mt76.phy2->hw, +ieee80211_iterate_active_interfaces (mphy_ext->hw,IEEE80211_IFACE_ITER_RESUME_ALL , - mt7915_update_vif_beacon, dev->mt76.phy2->hw); + mt7915_update_vif_beacon, mphy_ext->hw); }static void mt7915_dma_reset (struct mt7915_dev *dev) { -struct mt76_phy *mphy_ext = dev->mt76.phy2; +struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1 ];u32 hif1_ofs =MT_WFDMA0_PCIE1 (0 ) -MT_WFDMA0 (0 );int i;
@@ -1375,7 +1377,7 @@ void mt7915_mac_reset_work(struct work_struct *work)int i; dev = container_of(work, struct mt7915_dev, reset_work); - ext_phy = dev->mt76.phy2; + ext_phy = dev->mt76.phys[MT_BAND1 ]; phy2 = ext_phy ? ext_phy->priv :NULL ;if (!(READ_ONCE (dev->reset_state) &MT_MCU_CMD_STOP_DMA ))
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +8 -8
@@ -228,8 +228,8 @@ mt7915_mcu_rx_csa_notify(struct mt7915_dev *dev, struct sk_buff *skb) c = (struct mt7915_mcu_csa_notify *)skb->data; -if ((c->band_idx && !dev->phy.band_idx) && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if ((c->band_idx && !dev->phy.band_idx) && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ]; ieee80211_iterate_active_interfaces_atomic(mphy->hw, IEEE80211_IFACE_ITER_RESUME_ALL,
@@ -247,8 +247,8 @@ mt7915_mcu_rx_thermal_notify(struct mt7915_dev *dev, struct sk_buff *skb)if (t->ctrl.ctrl_id !=THERMAL_PROTECT_ENABLE )return ; -if ((t->ctrl.band_idx && !dev->phy.band_idx) && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if ((t->ctrl.band_idx && !dev->phy.band_idx) && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ]; phy = (struct mt7915_phy *)mphy->priv; phy->throttle_state = t->ctrl.duty.duty_cycle;
@@ -262,8 +262,8 @@ mt7915_mcu_rx_radar_detected(struct mt7915_dev *dev, struct sk_buff *skb) r = (struct mt7915_mcu_rdd_report *)skb->data; -if ((r->band_idx && !dev->phy.band_idx) && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if ((r->band_idx && !dev->phy.band_idx) && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ];if (r->band_idx ==MT_RX_SEL2 ) cfg80211_background_radar_event(mphy->hw->wiphy,
@@ -319,8 +319,8 @@ mt7915_mcu_rx_bcc_notify(struct mt7915_dev *dev, struct sk_buff *skb) b = (struct mt7915_mcu_bcc_notify *)skb->data; -if ((b->band_idx && !dev->phy.band_idx) && dev->mt76.phy2) - mphy = dev->mt76.phy2; +if ((b->band_idx && !dev->phy.band_idx) && dev->mt76.phys[MT_BAND1 ]) + mphy = dev->mt76.phys[MT_BAND1 ]; ieee80211_iterate_active_interfaces_atomic(mphy->hw, IEEE80211_IFACE_ITER_RESUME_ALL,
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +1 -1
@@ -388,7 +388,7 @@ mt7915_hw_dev(struct ieee80211_hw *hw)static inline struct mt7915_phy *mt7915_ext_phy (struct mt7915_dev *dev) { -struct mt76_phy *phy = dev->mt76.phy2; +struct mt76_phy *phy = dev->mt76.phys[MT_BAND1 ];if (!phy)return NULL ;
drivers/net/wireless/mediatek/mt76/tx.c +26 -13
@@ -586,15 +586,22 @@ EXPORT_SYMBOL_GPL(mt76_txq_schedule_all);void mt76_tx_worker_run (struct mt76_dev *dev) { -mt76_txq_schedule_all (&dev->phy); -if (dev->phy2) -mt76_txq_schedule_all (dev->phy2); +int i; + +for (i =0 ; i < __MT_MAX_BAND; i++) { +if (!dev->phys[i]) +continue ; + +mt76_txq_schedule_all (dev->phys[i]); + }#ifdef CONFIG_NL80211_TESTMODE -if (dev->phy.test.tx_pending) -mt76_testmode_tx_pending (&dev->phy); -if (dev->phy2 && dev->phy2->test.tx_pending) -mt76_testmode_tx_pending (dev->phy2); +for (i =0 ; i < __MT_MAX_BAND; i++) { +if (!dev->phys[i] || !dev->phys[i]->test.tx_pending) +continue ; + +mt76_testmode_tx_pending (dev->phys[i]); + }#endif }EXPORT_SYMBOL_GPL (mt76_tx_worker_run);
@@ -697,17 +704,23 @@ EXPORT_SYMBOL_GPL(mt76_queue_tx_complete);void __mt76_set_tx_blocked (struct mt76_dev *dev,bool blocked) { -struct mt76_phy *phy = &dev->phy, *phy2 = dev->phy2; -struct mt76_queue *q, *q2 =NULL ; +struct mt76_phy *phy = &dev->phy; +struct mt76_queue *q = phy->q_tx[0 ]; - q = phy->q_tx[0 ];if (blocked == q->blocked)return ; q->blocked = blocked; -if (phy2) { - q2 = phy2->q_tx[0 ]; - q2->blocked = blocked; + + phy = dev->phys[MT_BAND1 ]; +if (phy) { + q = phy->q_tx[0 ]; + q->blocked = blocked; + } + phy = dev->phys[MT_BAND2 ]; +if (phy) { + q = phy->q_tx[0 ]; + q->blocked = blocked; }if (!blocked)
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH v2 3/5 mt76: add phy_idx to mt76_wcid
In reply to Lorenzo BianconiIntroduce phy_idx to mt76_wcid structure instead of ext_phy. This is a preliminary patch to add mt7990 chipset support.
--- drivers/net/wireless/mediatek/mt76/mac80211.c | 12 ++++++------ drivers/net/wireless/mediatek/mt76/mt76.h | 2 +- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 6 +++--- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7915/main.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-)
drivers/net/wireless/mediatek/mt76/mac80211.c +6 -6
@@ -1299,10 +1299,11 @@ void mt76_rx_poll_complete(struct mt76_dev *dev, enum mt76_rxq_id q,EXPORT_SYMBOL_GPL (mt76_rx_poll_complete);static int -mt76_sta_add (struct mt76_dev *dev,struct ieee80211_vif *vif, -struct ieee80211_sta *sta,bool ext_phy) +mt76_sta_add (struct mt76_phy *phy,struct ieee80211_vif *vif, +struct ieee80211_sta *sta) {struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv; +struct mt76_dev *dev = phy->dev;int ret;int i;
@@ -1323,9 +1324,9 @@ mt76_sta_add(struct mt76_dev *dev, struct ieee80211_vif *vif, }ewma_signal_init (&wcid->rssi); -if (ext_phy) +if (phy->band_idx ==MT_BAND1 )mt76_wcid_mask_set (dev->wcid_phy_mask, wcid->idx); - wcid->ext_phy = ext_phy; + wcid->phy_idx = phy->band_idx;rcu_assign_pointer (dev->wcid[wcid->idx], wcid);mt76_packet_id_init (wcid);
@@ -1370,11 +1371,10 @@ int mt76_sta_state(struct ieee80211_hw *hw, struct ieee80211_vif *vif, {struct mt76_phy *phy = hw->priv;struct mt76_dev *dev = phy->dev; -bool ext_phy = phy != &dev->phy;if (old_state ==IEEE80211_STA_NOTEXIST && new_state ==IEEE80211_STA_NONE ) -return mt76_sta_add (dev, vif, sta, ext_phy); +return mt76_sta_add (phy, vif, sta); if (old_state == IEEE80211_STA_AUTH && new_state == IEEE80211_STA_ASSOC &&
drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
@@ -288,8 +288,8 @@ struct mt76_wcid {u8 hw_key_idx2; u8 sta:1; - u8 ext_phy:1; u8 amsdu:1; + u8 phy_idx:2;u8 rx_check_pn;u8 rx_key_pn[IEEE80211_NUM_TIDS +1 ][6 ];
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +3 -3
@@ -1388,7 +1388,7 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta,if (sta->rate_probe) {struct mt7615_phy *phy = &dev->phy; -if (sta->wcid.ext_phy && dev->mt76.phys[MT_BAND1 ]) +if (sta->wcid.phy_idx && dev->mt76.phys[MT_BAND1 ]) phy = dev->mt76.phys[MT_BAND1 ]->priv;mt7615_mac_set_rates (phy, sta,NULL , sta->rates);
@@ -1431,7 +1431,7 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta, fallthrough;case MT_PHY_TYPE_OFDM : mphy = &dev->mphy; -if (sta->wcid.ext_phy && dev->mt76.phys[MT_BAND1 ]) +if (sta->wcid.phy_idx && dev->mt76.phys[MT_BAND1 ]) mphy = dev->mt76.phys[MT_BAND1 ];if (mphy->chandef.chan->band ==NL80211_BAND_5GHZ )
@@ -1539,7 +1539,7 @@ static void mt7615_mac_add_txs(struct mt7615_dev *dev, void *data)if (wcidx >=MT7615_WTBL_STA || !sta) goto out; -if (wcid->ext_phy && dev->mt76.phys[MT_BAND1 ]) +if (wcid->phy_idx && dev->mt76.phys[MT_BAND1 ]) mphy = dev->mt76.phys[MT_BAND1 ];if (mt7615_fill_txs (dev, msta, &info, txs_data))
drivers/net/wireless/mediatek/mt76/mt7615/main.c +2 -2
@@ -224,7 +224,7 @@ static int mt7615_add_interface(struct ieee80211_hw *hw,INIT_LIST_HEAD (&mvif->sta.poll_list); mvif->sta.wcid.idx = idx; - mvif->sta.wcid.ext_phy = mvif->mt76.band_idx; + mvif->sta.wcid.phy_idx = mvif->mt76.band_idx; mvif->sta.wcid.hw_key_idx =-1 ;mt76_packet_id_init (&mvif->sta.wcid);
@@ -650,7 +650,7 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, msta->vif = mvif; msta->wcid.sta =1 ; msta->wcid.idx = idx; - msta->wcid.ext_phy = mvif->mt76.band_idx; + msta->wcid.phy_idx = mvif->mt76.band_idx; phy = mvif->mt76.band_idx ?mt7615_ext_phy (dev) : &dev->phy; err =mt76_connac_pm_wake (phy->mt76, &dev->pm);
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +1 -1
@@ -597,7 +597,7 @@ bool mt76_connac2_mac_add_txs_skb(struct mt76_dev *dev, struct mt76_wcid *wcid, fallthrough;case MT_PHY_TYPE_OFDM : mphy = &dev->phy; -if (wcid->ext_phy && dev->phys[MT_BAND1 ]) +if (wcid->phy_idx ==MT_BAND1 && dev->phys[MT_BAND1 ]) mphy = dev->phys[MT_BAND1 ];if (mphy->chandef.chan->band ==NL80211_BAND_5GHZ )
drivers/net/wireless/mediatek/mt76/mt7915/main.c +2 -2
@@ -227,7 +227,7 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,INIT_LIST_HEAD (&mvif->sta.rc_list);INIT_LIST_HEAD (&mvif->sta.poll_list); mvif->sta.wcid.idx = idx; - mvif->sta.wcid.ext_phy = ext_phy; + mvif->sta.wcid.phy_idx = ext_phy; mvif->sta.wcid.hw_key_idx =-1 ; mvif->sta.wcid.tx_info |=MT_WCID_TX_INFO_SET ;mt76_packet_id_init (&mvif->sta.wcid);
@@ -660,7 +660,7 @@ int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, msta->vif = mvif; msta->wcid.sta =1 ; msta->wcid.idx = idx; - msta->wcid.ext_phy = ext_phy; + msta->wcid.phy_idx = ext_phy; msta->wcid.tx_info |=MT_WCID_TX_INFO_SET ; msta->jiffies = jiffies;
drivers/net/wireless/mediatek/mt76/mt7921/main.c +2 -2
@@ -336,7 +336,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw,INIT_LIST_HEAD (&mvif->sta.poll_list); mvif->sta.wcid.idx = idx; - mvif->sta.wcid.ext_phy = mvif->mt76.band_idx; + mvif->sta.wcid.phy_idx = mvif->mt76.band_idx; mvif->sta.wcid.hw_key_idx =-1 ; mvif->sta.wcid.tx_info |=MT_WCID_TX_INFO_SET ;mt76_packet_id_init (&mvif->sta.wcid);
@@ -698,7 +698,7 @@ int mt7921_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, msta->vif = mvif; msta->wcid.sta =1 ; msta->wcid.idx = idx; - msta->wcid.ext_phy = mvif->mt76.band_idx; + msta->wcid.phy_idx = mvif->mt76.band_idx; msta->wcid.tx_info |=MT_WCID_TX_INFO_SET ; msta->last_txs = jiffies;
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH v2 4/5 mt76: convert MT_TX_HW_QUEUE_EXT_PHY to MT_TX_HW_QUEUE_PHY
In reply to Lorenzo BianconiReport phy_indx in tx_info->hw_queue. This is a preliminary patch to add mt7990 chipset support
--- drivers/net/wireless/mediatek/mt76/mt76.h | 10 ++++------ drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 8 ++++---- drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 6 ++---- drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c | 3 ++- drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c | 6 +++--- drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 3 ++- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 9 +++------ drivers/net/wireless/mediatek/mt76/testmode.c | 5 +---- drivers/net/wireless/mediatek/mt76/tx.c | 9 ++------- 9 files changed, 23 insertions(+), 36 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76.h +4 -6
@@ -263,7 +263,7 @@ enum mt76_wcid_flags {#define MT76_N_WCIDS 544/* stored in ieee80211_tx_info::hw_queue */ -#define MT_TX_HW_QUEUE_EXT_PHY BIT(3) +#define MT_TX_HW_QUEUE_PHY GENMASK(3, 2)DECLARE_EWMA (signal,10 ,8 );
@@ -1257,12 +1257,10 @@ static inline struct ieee80211_hw * mt76_tx_status_get_hw(struct mt76_dev *dev, struct sk_buff *skb) { struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -struct ieee80211_hw *hw = dev->phy.hw; +u8 phy_idx = (info->hw_queue &MT_TX_HW_QUEUE_PHY ) >>2 ; +struct ieee80211_hw *hw =mt76_phy_hw (dev, phy_idx); -if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && dev->phys[MT_BAND1 ]) - hw = dev->phys[MT_BAND1 ]->hw; - - info->hw_queue &= ~MT_TX_HW_QUEUE_EXT_PHY ; + info->hw_queue &= ~MT_TX_HW_QUEUE_PHY ;return hw; }
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +4 -4
@@ -726,7 +726,7 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,u8 fc_type, fc_stype, p_fmt, q_idx, omac_idx =0 , wmm_idx =0 ;struct ieee80211_tx_info *info =IEEE80211_SKB_CB (skb);struct ieee80211_tx_rate *rate = &info->control.rates[0 ]; -bool ext_phy = info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ; +u8 phy_idx = (info->hw_queue &MT_TX_HW_QUEUE_PHY ) >>2 ;bool multicast =is_multicast_ether_addr (hdr->addr1);struct ieee80211_vif *vif = info->control.vif;bool is_mmio =mt76_is_mmio (&dev->mt76);
@@ -749,7 +749,7 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi, tx_count = msta->rate_count; } -if (ext_phy && dev->mt76.phys[MT_BAND1 ]) +if (phy_idx && dev->mt76.phys[MT_BAND1 ]) mphy = dev->mt76.phys[MT_BAND1 ]; fc_type = (le16_to_cpu (fc) &IEEE80211_FCTL_FTYPE ) >>2 ;
@@ -757,10 +757,10 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,if (beacon) { p_fmt =MT_TX_TYPE_FW ; - q_idx = ext_phy ?MT_LMAC_BCN1 :MT_LMAC_BCN0 ; + q_idx = phy_idx ?MT_LMAC_BCN1 :MT_LMAC_BCN0 ; }else if (skb_get_queue_mapping (skb) >=MT_TXQ_PSD ) { p_fmt = is_mmio ?MT_TX_TYPE_CT :MT_TX_TYPE_SF ; - q_idx = ext_phy ?MT_LMAC_ALTX1 :MT_LMAC_ALTX0 ; + q_idx = phy_idx ?MT_LMAC_ALTX1 :MT_LMAC_ALTX0 ; }else { p_fmt = is_mmio ?MT_TX_TYPE_CT :MT_TX_TYPE_SF ; q_idx = wmm_idx * MT7615_MAX_WMM_SETS +
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +2 -4
@@ -705,10 +705,8 @@ mt7615_mcu_add_beacon_offload(struct mt7615_dev *dev,return -EINVAL ; } -if (mvif->mt76.band_idx) { - info =IEEE80211_SKB_CB (skb); - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; - } + info =IEEE80211_SKB_CB (skb); + info->hw_queue |=FIELD_PREP (MT_TX_HW_QUEUE_PHY , mvif->mt76.band_idx);mt7615_mac_write_txwi (dev, (__le32 *)(req.pkt), skb, wcid,NULL ,0 ,NULL , true);
drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c +2 -1
@@ -77,8 +77,9 @@ int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,if ((info->flags &IEEE80211_TX_CTL_RATE_CTRL_PROBE ) && msta) {struct mt7615_phy *phy = &dev->phy; +u8 phy_idx = (info->hw_queue &MT_TX_HW_QUEUE_PHY ) >>2 ; -if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && mdev->phys[MT_BAND1 ]) +if (phy_idx && mdev->phys[MT_BAND1 ]) phy = mdev->phys[MT_BAND1 ]->priv;spin_lock_bh (&dev->mt76.lock);
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +3 -3
@@ -455,7 +455,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, u32 changed) {struct ieee80211_tx_info *info =IEEE80211_SKB_CB (skb); -bool ext_phy = info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ; +u8 phy_idx = (info->hw_queue &MT_TX_HW_QUEUE_PHY ) >>2 ;struct ieee80211_vif *vif = info->control.vif;struct mt76_phy *mphy = &dev->phy;u8 p_fmt, q_idx, omac_idx =0 , wmm_idx =0 , band_idx =0 ;
@@ -474,7 +474,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, band_idx = mvif->band_idx; } -if (ext_phy && dev->phys[MT_BAND1 ]) +if (phy_idx && dev->phys[MT_BAND1 ]) mphy = dev->phys[MT_BAND1 ];if (inband_disc) {
@@ -502,7 +502,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,FIELD_PREP (MT_TXD1_OWN_MAC , omac_idx);if (!is_mt7921 (dev)) val |=MT_TXD1_VTA ; -if (ext_phy || band_idx) +if (phy_idx || band_idx) val |=MT_TXD1_TGID ; txwi[1 ] =cpu_to_le32 (val);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +2 -1
@@ -665,9 +665,10 @@ void mt7915_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi, struct ieee80211_key_conf *key, u32 changed) {struct ieee80211_tx_info *info =IEEE80211_SKB_CB (skb); +u8 phy_idx = (info->hw_queue &MT_TX_HW_QUEUE_PHY ) >>2 ;struct mt76_phy *mphy = &dev->phy; -if ((info->hw_queue &MT_TX_HW_QUEUE_EXT_PHY ) && dev->phys[MT_BAND1 ]) +if (phy_idx && dev->phys[MT_BAND1 ]) mphy = dev->phys[MT_BAND1 ];mt76_connac2_mac_write_txwi (dev, txwi, skb, wcid, key, pid, changed);
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +3 -6
@@ -1932,8 +1932,7 @@ mt7915_mcu_beacon_inband_discov(struct mt7915_dev *dev, struct ieee80211_vif *vi info->control.vif = vif; info->band = band; -if (ext_phy) - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; + info->hw_queue |=FIELD_PREP (MT_TX_HW_QUEUE_PHY , ext_phy); len =sizeof (*discov) +MT_TXD_SIZE + skb->len; len = (len &0x3 ) ? ((len |0x3 ) +1 ) : len;
@@ -2002,10 +2001,8 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif,return -EINVAL ; } -if (ext_phy) { - info =IEEE80211_SKB_CB (skb); - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; - } + info =IEEE80211_SKB_CB (skb); + info->hw_queue =FIELD_PREP (MT_TX_HW_QUEUE_PHY , ext_phy);mt7915_mcu_beacon_check_caps (phy, vif, skb);
drivers/net/wireless/mediatek/mt76/testmode.c +1 -4
@@ -101,7 +101,6 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)u16 fc =IEEE80211_FTYPE_DATA |IEEE80211_STYPE_DATA |IEEE80211_FCTL_FROMDS ;struct mt76_testmode_data *td = &phy->test; -bool ext_phy = phy != &phy->dev->phy;struct sk_buff **frag_tail, *head;struct ieee80211_tx_info *info;struct ieee80211_hdr *hdr;
@@ -136,9 +135,7 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)IEEE80211_TX_CTL_NO_ACK |IEEE80211_TX_CTL_NO_PS_BUFFER ; -if (ext_phy) - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; - + info->hw_queue |=FIELD_PREP (MT_TX_HW_QUEUE_PHY , phy->band_idx); frag_tail = &skb_shinfo (head)->frag_list;for (i =0 ; i < nfrags; i++) {
drivers/net/wireless/mediatek/mt76/tx.c +2 -7
@@ -310,7 +310,6 @@ mt76_tx(struct mt76_phy *phy, struct ieee80211_sta *sta,struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;struct mt76_queue *q;int qid =skb_get_queue_mapping (skb); -bool ext_phy = phy != &dev->phy;if (mt76_testmode_enabled (phy)) {ieee80211_free_txskb (phy->hw, skb);
@@ -334,9 +333,7 @@ mt76_tx(struct mt76_phy *phy, struct ieee80211_sta *sta,ieee80211_get_tx_rates (info->control.vif, sta, skb, info->control.rates,1 ); -if (ext_phy) - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; - + info->hw_queue |=FIELD_PREP (MT_TX_HW_QUEUE_PHY , phy->band_idx); q = phy->q_tx[qid];spin_lock_bh (&q->lock);
@@ -351,7 +348,6 @@ mt76_txq_dequeue(struct mt76_phy *phy, struct mt76_txq *mtxq) {struct ieee80211_txq *txq =mtxq_to_txq (mtxq);struct ieee80211_tx_info *info; -bool ext_phy = phy != &phy->dev->phy;struct sk_buff *skb; skb =ieee80211_tx_dequeue (phy->hw, txq);
@@ -359,8 +355,7 @@ mt76_txq_dequeue(struct mt76_phy *phy, struct mt76_txq *mtxq)return NULL ; info =IEEE80211_SKB_CB (skb); -if (ext_phy) - info->hw_queue |=MT_TX_HW_QUEUE_EXT_PHY ; + info->hw_queue |=FIELD_PREP (MT_TX_HW_QUEUE_PHY , phy->band_idx);return skb; }
Signature · 1 line
2.36.1
Lorenzo Bianconi
maintainerPATCH v2 5/5 mt76: get rid of mt76_wcid_hw routine
In reply to Lorenzo Bianconimt76_wcid_hw() is no longer used.
--- drivers/net/wireless/mediatek/mt76/mt76.h | 10 ---------- 1 file changed, 10 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76.h +0 -10
@@ -894,16 +894,6 @@ extern struct ieee80211_rate mt76_rates[12];#define mt76_hw (dev) (dev)->mphy.hw -static inline struct ieee80211_hw * -mt76_wcid_hw (struct mt76_dev *dev,u16 wcid) -{ -if (wcid <=MT76_N_WCIDS && -mt76_wcid_mask_test (dev->wcid_phy_mask, wcid)) -return dev->phys[MT_BAND1 ]->hw; - -return dev->phy.hw; -} -bool __mt76_poll (struct mt76_dev *dev,u32 offset,u32 mask,u32 val,int timeout);
Signature · 1 line
2.36.1