mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
mt7603: use mcu command to set timing registers, fix OFDM timeout values
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
@@ -226,6 +226,8 @@ void mt7603_mac_watchdog_reset(struct mt7603_dev *dev);
|
||||
int mt7603_mcu_set_channel(struct mt7603_dev *dev);
|
||||
int mt7603_mcu_reg_read(struct mt7603_dev *dev, u32 reg, u32 *val, bool rf);
|
||||
int mt7603_mcu_set_eeprom(struct mt7603_dev *dev);
|
||||
int mt7603_mcu_set_timing(struct mt7603_dev *dev, int slot, int sifs, int rifs,
|
||||
int eifs);
|
||||
void mt7603_mcu_exit(struct mt7603_dev *dev);
|
||||
|
||||
void mt7603_wtbl_init(struct mt7603_dev *dev, int idx, const u8 *addr);
|
||||
|
||||
+5
-13
@@ -43,10 +43,10 @@ mt76_start_tx_ac(struct mt7603_dev *dev, u32 mask)
|
||||
|
||||
void mt7603_mac_set_timing(struct mt7603_dev *dev)
|
||||
{
|
||||
u32 cck = MT76_SET(MT_TIMEOUT_VAL_PLCP, 231) |
|
||||
MT76_SET(MT_TIMEOUT_VAL_CCA, 48);
|
||||
u32 ofdm = MT76_SET(MT_TIMEOUT_VAL_PLCP, 60) |
|
||||
MT76_SET(MT_TIMEOUT_VAL_CCA, 24);
|
||||
u32 cck = MT76_SET(MT_TIMEOUT_VAL_PLCP, 247) |
|
||||
MT76_SET(MT_TIMEOUT_VAL_CCA, 64);
|
||||
u32 ofdm = MT76_SET(MT_TIMEOUT_VAL_PLCP, 113) |
|
||||
MT76_SET(MT_TIMEOUT_VAL_CCA, 64);
|
||||
int offset = 3 * dev->coverage_class;
|
||||
u32 reg_offset = MT76_SET(MT_TIMEOUT_VAL_PLCP, offset) |
|
||||
MT76_SET(MT_TIMEOUT_VAL_CCA, offset);
|
||||
@@ -57,17 +57,9 @@ void mt7603_mac_set_timing(struct mt7603_dev *dev)
|
||||
else
|
||||
sifs = 10;
|
||||
|
||||
mt7603_mac_stop(dev);
|
||||
|
||||
mt7603_mcu_set_timing(dev, dev->slottime + offset, sifs, 2, 360);
|
||||
mt76_wr(dev, MT_TIMEOUT_CCK, cck + reg_offset);
|
||||
mt76_wr(dev, MT_TIMEOUT_OFDM, ofdm + reg_offset);
|
||||
mt76_wr(dev, MT_IFS,
|
||||
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
|
||||
|
||||
@@ -490,6 +490,28 @@ int mt7603_mcu_set_channel(struct mt7603_dev *dev)
|
||||
return mt7603_mcu_set_tx_power(dev);
|
||||
}
|
||||
|
||||
int mt7603_mcu_set_timing(struct mt7603_dev *dev, int slot, int sifs, int rifs,
|
||||
int eifs)
|
||||
{
|
||||
struct {
|
||||
u8 slot_time;
|
||||
u8 sifs_time;
|
||||
u8 rifs_time;
|
||||
u8 __res0;
|
||||
u16 eifs_time;
|
||||
u16 __res1;
|
||||
} req = {
|
||||
.slot_time = slot,
|
||||
.sifs_time = sifs,
|
||||
.rifs_time = rifs,
|
||||
.eifs_time = eifs,
|
||||
};
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = mt7603_mcu_msg_alloc(dev, &req, sizeof(req));
|
||||
return mt7603_mcu_msg_send(dev, skb, MCU_EXT_CMD_SLOT_TIME_SET, MCU_Q_SET, NULL);
|
||||
}
|
||||
|
||||
int mt7603_mcu_reg_read(struct mt7603_dev *dev, u32 reg, u32 *val, bool rf)
|
||||
{
|
||||
struct {
|
||||
|
||||
Reference in New Issue
Block a user