diff options
author | Lorenzo Bianconi <lorenzo@kernel.org> | 2020-04-20 14:39:02 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2020-05-12 19:52:32 +0200 |
commit | 8f997dddc0784f6a9f0abece590a97da817830f8 (patch) | |
tree | c345d1362fee2c95830966022bfe2b64eeecbde1 | |
parent | becdf0d5d7a46f5ed1f12405ffae4b04764fe27c (diff) | |
download | linux-8f997dddc0784f6a9f0abece590a97da817830f8.tar.bz2 |
mt76: mt7615: fix max wtbl size for 7663
Current mt7663 offload firmware can support up to 32 wtbl entries
Fixes: f40ac0f3d3c0 ("mt76: mt7615: introduce mt7663e support")
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h | 11 | ||||
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/util.c | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h b/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h index c9533282e7e3..ffb146840377 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +++ b/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h @@ -12,8 +12,9 @@ #define MT7615_MAX_INTERFACES 4 #define MT7615_MAX_WMM_SETS 4 +#define MT7663_WTBL_SIZE 32 #define MT7615_WTBL_SIZE 128 -#define MT7615_WTBL_RESERVED (MT7615_WTBL_SIZE - 1) +#define MT7615_WTBL_RESERVED (mt7615_wtbl_size(dev) - 1) #define MT7615_WTBL_STA (MT7615_WTBL_RESERVED - \ MT7615_MAX_INTERFACES) @@ -424,6 +425,14 @@ static inline bool mt7615_firmware_offload(struct mt7615_dev *dev) return dev->fw_ver > MT7615_FIRMWARE_V2; } +static inline u16 mt7615_wtbl_size(struct mt7615_dev *dev) +{ + if (is_mt7663(&dev->mt76) && mt7615_firmware_offload(dev)) + return MT7663_WTBL_SIZE; + else + return MT7615_WTBL_SIZE; +} + void mt7615_scan_work(struct work_struct *work); void mt7615_ps_work(struct work_struct *work); void mt7615_init_txpower(struct mt7615_dev *dev, diff --git a/drivers/net/wireless/mediatek/mt76/util.c b/drivers/net/wireless/mediatek/mt76/util.c index 8c60c450125a..07cf71242d9e 100644 --- a/drivers/net/wireless/mediatek/mt76/util.c +++ b/drivers/net/wireless/mediatek/mt76/util.c @@ -46,7 +46,7 @@ int mt76_wcid_alloc(unsigned long *mask, int size) { int i, idx = 0, cur; - for (i = 0; i < size / BITS_PER_LONG; i++) { + for (i = 0; i < DIV_ROUND_UP(size, BITS_PER_LONG); i++) { idx = ffs(~mask[i]); if (!idx) continue; |