mt76: testmode: add attributes for ipg related parameters
Add attributes for setting tx inter-packet gap (ipg), duty cycle, and transmission time in testmode. Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
fdc9c18eb4
commit
b8cbdb9743
@ -541,6 +541,10 @@ struct mt76_testmode_data {
|
||||
u8 tx_antenna_mask;
|
||||
u8 tx_spe_idx;
|
||||
|
||||
u8 tx_duty_cycle;
|
||||
u32 tx_time;
|
||||
u32 tx_ipg;
|
||||
|
||||
u32 freq_offset;
|
||||
|
||||
u8 tx_power[4];
|
||||
|
@ -17,6 +17,9 @@ static const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS] = {
|
||||
[MT76_TM_ATTR_TX_SPE_IDX] = { .type = NLA_U8 },
|
||||
[MT76_TM_ATTR_TX_POWER_CONTROL] = { .type = NLA_U8 },
|
||||
[MT76_TM_ATTR_TX_POWER] = { .type = NLA_NESTED },
|
||||
[MT76_TM_ATTR_TX_DUTY_CYCLE] = { .type = NLA_U8 },
|
||||
[MT76_TM_ATTR_TX_IPG] = { .type = NLA_U32 },
|
||||
[MT76_TM_ATTR_TX_TIME] = { .type = NLA_U32 },
|
||||
[MT76_TM_ATTR_FREQ_OFFSET] = { .type = NLA_U32 },
|
||||
};
|
||||
|
||||
@ -361,10 +364,18 @@ int mt76_testmode_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
mt76_tm_get_u8(tb[MT76_TM_ATTR_TX_ANTENNA], &td->tx_antenna_mask,
|
||||
1 << (ext_phy * 2), phy->antenna_mask << (ext_phy * 2)) ||
|
||||
mt76_tm_get_u8(tb[MT76_TM_ATTR_TX_SPE_IDX], &td->tx_spe_idx, 0, 27) ||
|
||||
mt76_tm_get_u8(tb[MT76_TM_ATTR_TX_DUTY_CYCLE],
|
||||
&td->tx_duty_cycle, 0, 99) ||
|
||||
mt76_tm_get_u8(tb[MT76_TM_ATTR_TX_POWER_CONTROL],
|
||||
&td->tx_power_control, 0, 1))
|
||||
goto out;
|
||||
|
||||
if (tb[MT76_TM_ATTR_TX_IPG])
|
||||
td->tx_ipg = nla_get_u32(tb[MT76_TM_ATTR_TX_IPG]);
|
||||
|
||||
if (tb[MT76_TM_ATTR_TX_TIME])
|
||||
td->tx_time = nla_get_u32(tb[MT76_TM_ATTR_TX_TIME]);
|
||||
|
||||
if (tb[MT76_TM_ATTR_FREQ_OFFSET])
|
||||
td->freq_offset = nla_get_u32(tb[MT76_TM_ATTR_FREQ_OFFSET]);
|
||||
|
||||
@ -503,6 +514,12 @@ int mt76_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *msg,
|
||||
nla_put_u8(msg, MT76_TM_ATTR_TX_ANTENNA, td->tx_antenna_mask)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_TX_SPE_IDX) &&
|
||||
nla_put_u8(msg, MT76_TM_ATTR_TX_SPE_IDX, td->tx_spe_idx)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_TX_DUTY_CYCLE) &&
|
||||
nla_put_u8(msg, MT76_TM_ATTR_TX_DUTY_CYCLE, td->tx_duty_cycle)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_TX_IPG) &&
|
||||
nla_put_u32(msg, MT76_TM_ATTR_TX_IPG, td->tx_ipg)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_TX_TIME) &&
|
||||
nla_put_u32(msg, MT76_TM_ATTR_TX_TIME, td->tx_time)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_TX_POWER_CONTROL) &&
|
||||
nla_put_u8(msg, MT76_TM_ATTR_TX_POWER_CONTROL, td->tx_power_control)) ||
|
||||
(mt76_testmode_param_present(td, MT76_TM_ATTR_FREQ_OFFSET) &&
|
||||
|
@ -37,6 +37,11 @@
|
||||
* @MT76_TM_ATTR_STATS: statistics (nested, see &enum mt76_testmode_stats_attr)
|
||||
*
|
||||
* @MT76_TM_ATTR_TX_SPE_IDX: tx spatial extension index (u8)
|
||||
*
|
||||
* @MT76_TM_ATTR_TX_DUTY_CYCLE: packet tx duty cycle (u8)
|
||||
* @MT76_TM_ATTR_TX_IPG: tx inter-packet gap, in unit of us (u32)
|
||||
* @MT76_TM_ATTR_TX_TIME: packet transmission time, in unit of us (u32)
|
||||
*
|
||||
*/
|
||||
enum mt76_testmode_attr {
|
||||
MT76_TM_ATTR_UNSPEC,
|
||||
@ -67,6 +72,10 @@ enum mt76_testmode_attr {
|
||||
|
||||
MT76_TM_ATTR_TX_SPE_IDX,
|
||||
|
||||
MT76_TM_ATTR_TX_DUTY_CYCLE,
|
||||
MT76_TM_ATTR_TX_IPG,
|
||||
MT76_TM_ATTR_TX_TIME,
|
||||
|
||||
/* keep last */
|
||||
NUM_MT76_TM_ATTRS,
|
||||
MT76_TM_ATTR_MAX = NUM_MT76_TM_ATTRS - 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user