Message ID | c4c83998a000a6bbbfbbe9d9f179a73e8d6b4e25.1635323366.git.Bo.Jiao@mediatek.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Felix Fietkau |
Headers | show |
Series | add mt7916 support | expand |
> From: Bo Jiao <Bo.Jiao@mediatek.com> > > The mt7916 can support up to 544 wcid entries. > This is an intermediate patch to add mt7916 support. > > Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com> > Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com> > Co-developed-by: Ryder Lee <ryder.lee@mediatek.com> > Signed-off-by: Ryder Lee <ryder.lee@mediatek.com> > Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com> > --- > drivers/net/wireless/mediatek/mt76/mt76.h | 2 +- > drivers/net/wireless/mediatek/mt76/mt7915/init.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 2 +- > drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h | 8 +++++++- > 4 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h > index ce687d5..0f1197e 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt76.h > +++ b/drivers/net/wireless/mediatek/mt76/mt76.h > @@ -225,7 +225,7 @@ enum mt76_wcid_flags { > MT_WCID_FLAG_HDR_TRANS, > }; > > -#define MT76_N_WCIDS 288 > +#define MT76_N_WCIDS 544 is this change ok with older chipset as well? Regards, Lorenzo > > /* stored in ieee80211_tx_info::hw_queue */ > #define MT_TX_HW_QUEUE_EXT_PHY BIT(3) > diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net/wireless/mediatek/mt76/mt7915/init.c > index 8d16c96..4dfa1c1 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c > @@ -430,7 +430,7 @@ static void mt7915_mac_init(struct mt7915_dev *dev) > /* enable hardware de-agg */ > mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN); > > - for (i = 0; i < MT7915_WTBL_SIZE; i++) > + for (i = 0; i < mt7915_wtbl_size(dev); i++) > mt7915_mac_wtbl_update(dev, i, > MT_WTBL_UPDATE_ADM_COUNT_CLEAR); > for (i = 0; i < 2; i++) > diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c > index ba39f3d..4212dbb 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c > @@ -1492,7 +1492,7 @@ static void mt7915_mac_add_txs(struct mt7915_dev *dev, void *data) > if (pid < MT_PACKET_ID_FIRST) > return; > > - if (wcidx >= MT7915_WTBL_SIZE) > + if (wcidx >= mt7915_wtbl_size(dev)) > return; > > rcu_read_lock(); > diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h > index 3e2e900..e8fbe69 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h > @@ -12,7 +12,8 @@ > #define MT7915_MAX_INTERFACES 19 > #define MT7915_MAX_WMM_SETS 4 > #define MT7915_WTBL_SIZE 288 > -#define MT7915_WTBL_RESERVED (MT7915_WTBL_SIZE - 1) > +#define MT7916_WTBL_SIZE 544 > +#define MT7915_WTBL_RESERVED (mt7915_wtbl_size(dev) - 1) > #define MT7915_WTBL_STA (MT7915_WTBL_RESERVED - \ > MT7915_MAX_INTERFACES) > > @@ -477,6 +478,11 @@ static inline bool is_mt7915(struct mt76_dev *dev) > return mt76_chip(dev) == 0x7915; > } > > +static inline u16 mt7915_wtbl_size(struct mt7915_dev *dev) > +{ > + return is_mt7915(&dev->mt76) ? MT7915_WTBL_SIZE : MT7916_WTBL_SIZE; > +} > + > void mt7915_dual_hif_set_irq_mask(struct mt7915_dev *dev, bool write_reg, > u32 clear, u32 set); > > -- > 2.18.0 >
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index ce687d5..0f1197e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/mt76.h @@ -225,7 +225,7 @@ enum mt76_wcid_flags { MT_WCID_FLAG_HDR_TRANS, }; -#define MT76_N_WCIDS 288 +#define MT76_N_WCIDS 544 /* stored in ieee80211_tx_info::hw_queue */ #define MT_TX_HW_QUEUE_EXT_PHY BIT(3) diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net/wireless/mediatek/mt76/mt7915/init.c index 8d16c96..4dfa1c1 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c @@ -430,7 +430,7 @@ static void mt7915_mac_init(struct mt7915_dev *dev) /* enable hardware de-agg */ mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN); - for (i = 0; i < MT7915_WTBL_SIZE; i++) + for (i = 0; i < mt7915_wtbl_size(dev); i++) mt7915_mac_wtbl_update(dev, i, MT_WTBL_UPDATE_ADM_COUNT_CLEAR); for (i = 0; i < 2; i++) diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c index ba39f3d..4212dbb 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c @@ -1492,7 +1492,7 @@ static void mt7915_mac_add_txs(struct mt7915_dev *dev, void *data) if (pid < MT_PACKET_ID_FIRST) return; - if (wcidx >= MT7915_WTBL_SIZE) + if (wcidx >= mt7915_wtbl_size(dev)) return; rcu_read_lock(); diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h index 3e2e900..e8fbe69 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h @@ -12,7 +12,8 @@ #define MT7915_MAX_INTERFACES 19 #define MT7915_MAX_WMM_SETS 4 #define MT7915_WTBL_SIZE 288 -#define MT7915_WTBL_RESERVED (MT7915_WTBL_SIZE - 1) +#define MT7916_WTBL_SIZE 544 +#define MT7915_WTBL_RESERVED (mt7915_wtbl_size(dev) - 1) #define MT7915_WTBL_STA (MT7915_WTBL_RESERVED - \ MT7915_MAX_INTERFACES) @@ -477,6 +478,11 @@ static inline bool is_mt7915(struct mt76_dev *dev) return mt76_chip(dev) == 0x7915; } +static inline u16 mt7915_wtbl_size(struct mt7915_dev *dev) +{ + return is_mt7915(&dev->mt76) ? MT7915_WTBL_SIZE : MT7916_WTBL_SIZE; +} + void mt7915_dual_hif_set_irq_mask(struct mt7915_dev *dev, bool write_reg, u32 clear, u32 set);