mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
mt76: set runtime stream caps by mt76_phy
This patch can support concurrent dual-band operation. Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
5517f78b00
commit
bb3e3fec50
|
|
@ -116,12 +116,12 @@ static void mt76_led_cleanup(struct mt76_dev *dev)
|
|||
led_classdev_unregister(&dev->led_cdev);
|
||||
}
|
||||
|
||||
static void mt76_init_stream_cap(struct mt76_dev *dev,
|
||||
static void mt76_init_stream_cap(struct mt76_phy *phy,
|
||||
struct ieee80211_supported_band *sband,
|
||||
bool vht)
|
||||
{
|
||||
struct ieee80211_sta_ht_cap *ht_cap = &sband->ht_cap;
|
||||
int i, nstream = hweight8(dev->phy.antenna_mask);
|
||||
int i, nstream = hweight8(phy->antenna_mask);
|
||||
struct ieee80211_sta_vht_cap *vht_cap;
|
||||
u16 mcs_map = 0;
|
||||
|
||||
|
|
@ -153,12 +153,12 @@ static void mt76_init_stream_cap(struct mt76_dev *dev,
|
|||
vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
|
||||
}
|
||||
|
||||
void mt76_set_stream_caps(struct mt76_dev *dev, bool vht)
|
||||
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
|
||||
{
|
||||
if (dev->cap.has_2ghz)
|
||||
mt76_init_stream_cap(dev, &dev->phy.sband_2g.sband, false);
|
||||
if (dev->cap.has_5ghz)
|
||||
mt76_init_stream_cap(dev, &dev->phy.sband_5g.sband, vht);
|
||||
if (phy->dev->cap.has_2ghz)
|
||||
mt76_init_stream_cap(phy, &phy->sband_2g.sband, false);
|
||||
if (phy->dev->cap.has_5ghz)
|
||||
mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76_set_stream_caps);
|
||||
|
||||
|
|
@ -199,7 +199,7 @@ mt76_init_sband(struct mt76_dev *dev, struct mt76_sband *msband,
|
|||
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
||||
ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
|
||||
|
||||
mt76_init_stream_cap(dev, sband, vht);
|
||||
mt76_init_stream_cap(&dev->phy, sband, vht);
|
||||
|
||||
if (!vht)
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -821,7 +821,7 @@ void mt76_set_channel(struct mt76_phy *phy);
|
|||
void mt76_update_survey(struct mt76_dev *dev);
|
||||
int mt76_get_survey(struct ieee80211_hw *hw, int idx,
|
||||
struct survey_info *survey);
|
||||
void mt76_set_stream_caps(struct mt76_dev *dev, bool vht);
|
||||
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht);
|
||||
|
||||
int mt76_rx_aggr_start(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tid,
|
||||
u16 ssn, u16 size);
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ mt7615_cap_dbdc_enable(struct mt7615_dev *dev)
|
|||
dev->phy.chainmask = dev->mphy.antenna_mask;
|
||||
dev->mphy.hw->wiphy->available_antennas_rx = dev->phy.chainmask;
|
||||
dev->mphy.hw->wiphy->available_antennas_tx = dev->phy.chainmask;
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(&dev->mphy, true);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -346,7 +346,7 @@ mt7615_cap_dbdc_disable(struct mt7615_dev *dev)
|
|||
dev->phy.chainmask = dev->chainmask;
|
||||
dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
|
||||
dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(&dev->mphy, true);
|
||||
}
|
||||
|
||||
int mt7615_register_ext_phy(struct mt7615_dev *dev)
|
||||
|
|
|
|||
|
|
@ -784,7 +784,7 @@ mt7615_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
|
|||
}
|
||||
phy->chainmask = tx_ant;
|
||||
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(phy->mt76, true);
|
||||
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ static int mt76x2_set_antenna(struct ieee80211_hw *hw, u32 tx_ant,
|
|||
dev->chainmask = (tx_ant == 3) ? 0x202 : 0x101;
|
||||
dev->mphy.antenna_mask = tx_ant;
|
||||
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(&dev->mphy, true);
|
||||
mt76x2_phy_set_antenna(dev);
|
||||
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
|
|
|
|||
|
|
@ -443,7 +443,7 @@ mt7915_cap_dbdc_enable(struct mt7915_dev *dev)
|
|||
dev->mphy.hw->wiphy->available_antennas_rx = dev->phy.chainmask;
|
||||
dev->mphy.hw->wiphy->available_antennas_tx = dev->phy.chainmask;
|
||||
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(&dev->mphy, true);
|
||||
mt7915_set_stream_he_caps(&dev->phy);
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +459,7 @@ mt7915_cap_dbdc_disable(struct mt7915_dev *dev)
|
|||
dev->mphy.hw->wiphy->available_antennas_rx = dev->chainmask;
|
||||
dev->mphy.hw->wiphy->available_antennas_tx = dev->chainmask;
|
||||
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(&dev->mphy, true);
|
||||
mt7915_set_stream_he_caps(&dev->phy);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -741,7 +741,7 @@ mt7915_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
|
|||
}
|
||||
phy->chainmask = tx_ant;
|
||||
|
||||
mt76_set_stream_caps(&dev->mt76, true);
|
||||
mt76_set_stream_caps(phy->mt76, true);
|
||||
mt7915_set_stream_he_caps(phy);
|
||||
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user