mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
mt76: mt7915: rework debugfs fixed-rate knob
Switch to use new mt7915_mcu_set_fixed_rate_ctrl(). Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
70fd1333cd
commit
9a93364d65
|
|
@ -481,19 +481,71 @@ int mt7915_init_debugfs(struct mt7915_phy *phy)
|
|||
#ifdef CONFIG_MAC80211_DEBUGFS
|
||||
/** per-station debugfs **/
|
||||
|
||||
static int mt7915_sta_fixed_rate_set(void *data, u64 rate)
|
||||
static ssize_t mt7915_sta_fixed_rate_set(struct file *file,
|
||||
const char __user *user_buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct ieee80211_sta *sta = data;
|
||||
struct ieee80211_sta *sta = file->private_data;
|
||||
struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv;
|
||||
struct mt7915_dev *dev = msta->vif->phy->dev;
|
||||
struct ieee80211_vif *vif;
|
||||
struct sta_phy phy = {};
|
||||
char buf[100];
|
||||
int ret;
|
||||
u32 field;
|
||||
u8 i, gi, he_ltf;
|
||||
|
||||
/* usage: <he ltf> <tx mode> <ldpc> <stbc> <bw> <gi> <nss> <mcs>
|
||||
* <tx mode>: see enum mt76_phy_type
|
||||
if (count >= sizeof(buf))
|
||||
return -EINVAL;
|
||||
|
||||
if (copy_from_user(buf, user_buf, count))
|
||||
return -EFAULT;
|
||||
|
||||
if (count && buf[count - 1] == '\n')
|
||||
buf[count - 1] = '\0';
|
||||
else
|
||||
buf[count] = '\0';
|
||||
|
||||
/* mode - cck: 0, ofdm: 1, ht: 2, gf: 3, vht: 4, he_su: 8, he_er: 9
|
||||
* bw - bw20: 0, bw40: 1, bw80: 2, bw160: 3
|
||||
* nss - vht: 1~4, he: 1~4, others: ignore
|
||||
* mcs - cck: 0~4, ofdm: 0~7, ht: 0~32, vht: 0~9, he_su: 0~11, he_er: 0~2
|
||||
* gi - (ht/vht) lgi: 0, sgi: 1; (he) 0.8us: 0, 1.6us: 1, 3.2us: 2
|
||||
* ldpc - off: 0, on: 1
|
||||
* stbc - off: 0, on: 1
|
||||
* he_ltf - 1xltf: 0, 2xltf: 1, 4xltf: 2
|
||||
*/
|
||||
return mt7915_mcu_set_fixed_rate(msta->vif->phy->dev, sta, rate);
|
||||
if (sscanf(buf, "%hhu %hhu %hhu %hhu %hhu %hhu %hhu %hhu",
|
||||
&phy.type, &phy.bw, &phy.nss, &phy.mcs, &gi,
|
||||
&phy.ldpc, &phy.stbc, &he_ltf) != 8) {
|
||||
dev_warn(dev->mt76.dev,
|
||||
"format: Mode BW NSS MCS (HE)GI LDPC STBC HE_LTF\n");
|
||||
field = RATE_PARAM_AUTO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
phy.ldpc = (phy.bw || phy.ldpc) * GENMASK(2, 0);
|
||||
for (i = 0; i <= phy.bw; i++) {
|
||||
phy.sgi |= gi << (i << sta->he_cap.has_he);
|
||||
phy.he_ltf |= he_ltf << (i << sta->he_cap.has_he);
|
||||
}
|
||||
field = RATE_PARAM_FIXED;
|
||||
|
||||
out:
|
||||
vif = container_of((void *)msta->vif, struct ieee80211_vif, drv_priv);
|
||||
ret = mt7915_mcu_set_fixed_rate_ctrl(dev, vif, sta, &phy, field);
|
||||
if (ret)
|
||||
return -EFAULT;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
DEFINE_DEBUGFS_ATTRIBUTE(fops_fixed_rate, NULL,
|
||||
mt7915_sta_fixed_rate_set, "%llx\n");
|
||||
static const struct file_operations fops_fixed_rate = {
|
||||
.write = mt7915_sta_fixed_rate_set,
|
||||
.open = simple_open,
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
static int
|
||||
mt7915_queues_show(struct seq_file *s, void *data)
|
||||
|
|
|
|||
|
|
@ -2073,6 +2073,7 @@ int mt7915_mcu_set_fixed_rate_ctrl(struct mt7915_dev *dev,
|
|||
switch (field) {
|
||||
case RATE_PARAM_AUTO:
|
||||
break;
|
||||
case RATE_PARAM_FIXED:
|
||||
case RATE_PARAM_FIXED_MCS:
|
||||
case RATE_PARAM_FIXED_GI:
|
||||
case RATE_PARAM_FIXED_HE_LTF:
|
||||
|
|
|
|||
|
|
@ -416,8 +416,6 @@ int mt7915_set_channel(struct mt7915_phy *phy);
|
|||
int mt7915_mcu_set_chan_info(struct mt7915_phy *phy, int cmd);
|
||||
int mt7915_mcu_set_tx(struct mt7915_dev *dev, struct ieee80211_vif *vif);
|
||||
int mt7915_mcu_update_edca(struct mt7915_dev *dev, void *req);
|
||||
int mt7915_mcu_set_fixed_rate(struct mt7915_dev *dev,
|
||||
struct ieee80211_sta *sta, u32 rate);
|
||||
int mt7915_mcu_set_fixed_rate_ctrl(struct mt7915_dev *dev,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user