mt76: move mt76x02_set_tx_ackto in mt76x02-lib module
Move mt76x02_set_tx_ackto and mt76x02_set_coverage_class routines in mt76x02-lib module in order to be reused by mt76x0 driver. This is a preliminary patch to unify drv_bss_info_changed mac80211 callback between mt76x0 and mt76x2 drivers Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
4cb23b650a
commit
3670405193
@ -117,8 +117,8 @@ void mt76x0_bss_info_changed(struct ieee80211_hw *hw,
|
||||
if (changed & BSS_CHANGED_ERP_SLOT) {
|
||||
int slottime = info->use_short_slot ? 9 : 20;
|
||||
|
||||
mt76_rmw_field(dev, MT_BKOFF_SLOT_CFG,
|
||||
MT_BKOFF_SLOT_CFG_SLOTTIME, slottime);
|
||||
dev->slottime = slottime;
|
||||
mt76x02_set_tx_ackto(dev);
|
||||
}
|
||||
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
|
@ -104,6 +104,7 @@ static const struct ieee80211_ops mt76x0e_ops = {
|
||||
.flush = mt76x0e_flush,
|
||||
.set_tim = mt76x0e_set_tim,
|
||||
.release_buffered_frames = mt76_release_buffered_frames,
|
||||
.set_coverage_class = mt76x02_set_coverage_class,
|
||||
};
|
||||
|
||||
static int mt76x0e_register_device(struct mt76x02_dev *dev)
|
||||
|
@ -133,6 +133,9 @@ s8 mt76x02_tx_get_max_txpwr_adj(struct mt76x02_dev *dev,
|
||||
s8 mt76x02_tx_get_txpwr_adj(struct mt76x02_dev *dev, s8 txpwr,
|
||||
s8 max_txpwr_adj);
|
||||
void mt76x02_tx_set_txpwr_auto(struct mt76x02_dev *dev, s8 txpwr);
|
||||
void mt76x02_set_tx_ackto(struct mt76x02_dev *dev);
|
||||
void mt76x02_set_coverage_class(struct ieee80211_hw *hw,
|
||||
s16 coverage_class);
|
||||
int mt76x02_insert_hdr_pad(struct sk_buff *skb);
|
||||
void mt76x02_remove_hdr_pad(struct sk_buff *skb, int len);
|
||||
void mt76x02_tx_complete(struct mt76_dev *dev, struct sk_buff *skb);
|
||||
|
@ -438,6 +438,36 @@ int mt76x02_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_conf_tx);
|
||||
|
||||
void mt76x02_set_tx_ackto(struct mt76x02_dev *dev)
|
||||
{
|
||||
u8 ackto, sifs, slottime = dev->slottime;
|
||||
|
||||
/* As defined by IEEE 802.11-2007 17.3.8.6 */
|
||||
slottime += 3 * dev->coverage_class;
|
||||
mt76_rmw_field(dev, MT_BKOFF_SLOT_CFG,
|
||||
MT_BKOFF_SLOT_CFG_SLOTTIME, slottime);
|
||||
|
||||
sifs = mt76_get_field(dev, MT_XIFS_TIME_CFG,
|
||||
MT_XIFS_TIME_CFG_OFDM_SIFS);
|
||||
|
||||
ackto = slottime + sifs;
|
||||
mt76_rmw_field(dev, MT_TX_TIMEOUT_CFG,
|
||||
MT_TX_TIMEOUT_CFG_ACKTO, ackto);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_set_tx_ackto);
|
||||
|
||||
void mt76x02_set_coverage_class(struct ieee80211_hw *hw,
|
||||
s16 coverage_class)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
mutex_lock(&dev->mt76.mutex);
|
||||
dev->coverage_class = coverage_class;
|
||||
mt76x02_set_tx_ackto(dev);
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_set_coverage_class);
|
||||
|
||||
void mt76x02_sta_rate_tbl_update(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta)
|
||||
|
@ -58,7 +58,6 @@ int mt76x2_init_hardware(struct mt76x02_dev *dev);
|
||||
void mt76x2_stop_hardware(struct mt76x02_dev *dev);
|
||||
int mt76x2_eeprom_init(struct mt76x02_dev *dev);
|
||||
int mt76x2_apply_calibration_data(struct mt76x02_dev *dev, int channel);
|
||||
void mt76x2_set_tx_ackto(struct mt76x02_dev *dev);
|
||||
|
||||
void mt76x2_phy_set_antenna(struct mt76x02_dev *dev);
|
||||
int mt76x2_phy_start(struct mt76x02_dev *dev);
|
||||
|
@ -153,7 +153,7 @@ static int mt76x2_mac_reset(struct mt76x02_dev *dev, bool hard)
|
||||
MT_CH_TIME_CFG_EIFS_AS_BUSY |
|
||||
FIELD_PREP(MT_CH_TIME_CFG_CH_TIMER_CLR, 1));
|
||||
|
||||
mt76x2_set_tx_ackto(dev);
|
||||
mt76x02_set_tx_ackto(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -260,23 +260,6 @@ mt76x2_power_on(struct mt76x02_dev *dev)
|
||||
mt76x2_power_on_rf(dev, 1);
|
||||
}
|
||||
|
||||
void mt76x2_set_tx_ackto(struct mt76x02_dev *dev)
|
||||
{
|
||||
u8 ackto, sifs, slottime = dev->slottime;
|
||||
|
||||
/* As defined by IEEE 802.11-2007 17.3.8.6 */
|
||||
slottime += 3 * dev->coverage_class;
|
||||
mt76_rmw_field(dev, MT_BKOFF_SLOT_CFG,
|
||||
MT_BKOFF_SLOT_CFG_SLOTTIME, slottime);
|
||||
|
||||
sifs = mt76_get_field(dev, MT_XIFS_TIME_CFG,
|
||||
MT_XIFS_TIME_CFG_OFDM_SIFS);
|
||||
|
||||
ackto = slottime + sifs;
|
||||
mt76_rmw_field(dev, MT_TX_TIMEOUT_CFG,
|
||||
MT_TX_TIMEOUT_CFG_ACKTO, ackto);
|
||||
}
|
||||
|
||||
int mt76x2_init_hardware(struct mt76x02_dev *dev)
|
||||
{
|
||||
int ret;
|
||||
|
@ -158,7 +158,7 @@ mt76x2_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
int slottime = info->use_short_slot ? 9 : 20;
|
||||
|
||||
dev->slottime = slottime;
|
||||
mt76x2_set_tx_ackto(dev);
|
||||
mt76x02_set_tx_ackto(dev);
|
||||
}
|
||||
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
@ -170,17 +170,6 @@ mt76x2_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
{
|
||||
}
|
||||
|
||||
static void mt76x2_set_coverage_class(struct ieee80211_hw *hw,
|
||||
s16 coverage_class)
|
||||
{
|
||||
struct mt76x02_dev *dev = hw->priv;
|
||||
|
||||
mutex_lock(&dev->mt76.mutex);
|
||||
dev->coverage_class = coverage_class;
|
||||
mt76x2_set_tx_ackto(dev);
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
}
|
||||
|
||||
static int
|
||||
mt76x2_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set)
|
||||
{
|
||||
@ -257,7 +246,7 @@ const struct ieee80211_ops mt76x2_ops = {
|
||||
.wake_tx_queue = mt76_wake_tx_queue,
|
||||
.sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
|
||||
.release_buffered_frames = mt76_release_buffered_frames,
|
||||
.set_coverage_class = mt76x2_set_coverage_class,
|
||||
.set_coverage_class = mt76x02_set_coverage_class,
|
||||
.get_survey = mt76_get_survey,
|
||||
.set_tim = mt76x2_set_tim,
|
||||
.set_antenna = mt76x2_set_antenna,
|
||||
|
Loading…
Reference in New Issue
Block a user