mt7603: set sifs/slot timing registers

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2016-02-06 19:16:51 +01:00
parent e70b2f8281
commit 073d1d2491
5 changed files with 30 additions and 0 deletions
+1
View File
@@ -99,6 +99,7 @@ struct mt7603_dev {
u8 rssi_offset[3];
u8 slottime;
s16 coverage_class;
struct mt7603_mcu mcu;
+1
View File
@@ -327,6 +327,7 @@ int mt7603_register_device(struct mt7603_dev *dev)
dev->rx_chains = 2;
dev->tx_chains = 2;
dev->slottime = 9;
ret = mt7603_init_hardware(dev);
if (ret)
+15
View File
@@ -50,9 +50,24 @@ void mt7603_mac_set_timing(struct mt7603_dev *dev)
int offset = 3 * dev->coverage_class;
u32 reg_offset = MT76_SET(MT_TIMEOUT_VAL_PLCP, offset) |
MT76_SET(MT_TIMEOUT_VAL_CCA, offset);
int sifs;
u32 val;
if (dev->chandef.chan->band == IEEE80211_BAND_5GHZ)
sifs = 16;
else
sifs = 10;
mt7603_mac_stop(dev);
mt76_wr(dev, MT_TIMEOUT_CCK, cck + reg_offset);
mt76_wr(dev, MT_TIMEOUT_OFDM, ofdm + reg_offset);
val = MT76_SET(MT_IFS_EIFS, 360) |
MT76_SET(MT_IFS_RIFS, 2) |
MT76_SET(MT_IFS_SIFS, sifs) |
MT76_SET(MT_IFS_SLOT, dev->slottime);
mt7603_mac_start(dev);
}
static void
+7
View File
@@ -145,6 +145,7 @@ mt7603_config(struct ieee80211_hw *hw, u32 changed)
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
ret = mt7603_set_channel(dev, &hw->conf.chandef);
mt7603_mac_set_timing(dev);
}
mutex_unlock(&dev->mutex);
@@ -197,6 +198,12 @@ static void
mt7603_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_bss_conf *info, u32 changed)
{
struct mt7603_dev *dev = hw->priv;
if (changed & BSS_CHANGED_ERP_SLOT) {
dev->slottime = info->use_short_slot ? 9 : 20;
mt7603_mac_set_timing(dev);
}
}
static int
+6
View File
@@ -222,6 +222,12 @@
#define MT_TIMEOUT_VAL_PLCP GENMASK(15, 0)
#define MT_TIMEOUT_VAL_CCA GENMASK(31, 16)
#define MT_IFS MT_WF_TMAC(0x0a4)
#define MT_IFS_EIFS GENMASK(8, 0)
#define MT_IFS_RIFS GENMASK(14, 10)
#define MT_IFS_SIFS GENMASK(22, 16)
#define MT_IFS_SLOT GENMASK(30, 24)
#define MT_WF_RMAC_BASE 0x21800
#define MT_WF_RMAC(ofs) (MT_WF_RMAC_BASE + (ofs))