mt76: mt7915: clean hw queue before starting new testmode tx
Add a testmode mcu command to clean up hw tx queue before a new testmode tx starts. Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
c46df37f72
commit
8efe387cc7
|
@ -50,6 +50,7 @@ enum {
|
||||||
MCU_ATE_SET_TRX = 0x1,
|
MCU_ATE_SET_TRX = 0x1,
|
||||||
MCU_ATE_SET_FREQ_OFFSET = 0xa,
|
MCU_ATE_SET_FREQ_OFFSET = 0xa,
|
||||||
MCU_ATE_SET_SLOT_TIME = 0x13,
|
MCU_ATE_SET_SLOT_TIME = 0x13,
|
||||||
|
MCU_ATE_CLEAN_TXQUEUE = 0x1c,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mt7915_mcu_rxd {
|
struct mt7915_mcu_rxd {
|
||||||
|
|
|
@ -132,6 +132,21 @@ mt7915_tm_set_trx(struct mt7915_phy *phy, int type, bool en)
|
||||||
sizeof(req), false);
|
sizeof(req), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
mt7915_tm_clean_hwq(struct mt7915_phy *phy, u8 wcid)
|
||||||
|
{
|
||||||
|
struct mt7915_dev *dev = phy->dev;
|
||||||
|
struct mt7915_tm_cmd req = {
|
||||||
|
.testmode_en = 1,
|
||||||
|
.param_idx = MCU_ATE_CLEAN_TXQUEUE,
|
||||||
|
.param.clean.wcid = wcid,
|
||||||
|
.param.clean.band = phy != &dev->phy,
|
||||||
|
};
|
||||||
|
|
||||||
|
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_ATE_CTRL, &req,
|
||||||
|
sizeof(req), false);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mt7915_tm_set_slot_time(struct mt7915_phy *phy, u8 slot_time, u8 sifs)
|
mt7915_tm_set_slot_time(struct mt7915_phy *phy, u8 slot_time, u8 sifs)
|
||||||
{
|
{
|
||||||
|
@ -408,6 +423,7 @@ mt7915_tm_set_tx_frames(struct mt7915_phy *phy, bool en)
|
||||||
u32 ipg = td->tx_ipg;
|
u32 ipg = td->tx_ipg;
|
||||||
|
|
||||||
mt7915_tm_set_trx(phy, TM_MAC_RX_RXV, false);
|
mt7915_tm_set_trx(phy, TM_MAC_RX_RXV, false);
|
||||||
|
mt7915_tm_clean_hwq(phy, dev->mt76.global_wcid.idx);
|
||||||
|
|
||||||
if (en) {
|
if (en) {
|
||||||
mutex_unlock(&dev->mt76.mutex);
|
mutex_unlock(&dev->mt76.mutex);
|
||||||
|
|
|
@ -26,6 +26,13 @@ struct mt7915_tm_slot_time {
|
||||||
u8 _rsv1[5];
|
u8 _rsv1[5];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct mt7915_tm_clean_txq {
|
||||||
|
bool sta_pause;
|
||||||
|
u8 wcid; /* 256 sta */
|
||||||
|
u8 band;
|
||||||
|
u8 rsv;
|
||||||
|
};
|
||||||
|
|
||||||
struct mt7915_tm_cmd {
|
struct mt7915_tm_cmd {
|
||||||
u8 testmode_en;
|
u8 testmode_en;
|
||||||
u8 param_idx;
|
u8 param_idx;
|
||||||
|
@ -35,6 +42,7 @@ struct mt7915_tm_cmd {
|
||||||
struct mt7915_tm_trx trx;
|
struct mt7915_tm_trx trx;
|
||||||
struct mt7915_tm_freq_offset freq;
|
struct mt7915_tm_freq_offset freq;
|
||||||
struct mt7915_tm_slot_time slot;
|
struct mt7915_tm_slot_time slot;
|
||||||
|
struct mt7915_tm_clean_txq clean;
|
||||||
u8 test[72];
|
u8 test[72];
|
||||||
} param;
|
} param;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
Loading…
Reference in New Issue