From 5ec7a2eac86720c65ca6675f28dcf002a3e3bcf2 Mon Sep 17 00:00:00 2001 From: Bo Jiao Date: Wed, 20 Apr 2022 15:11:44 +0800 Subject: [PATCH] mt76: mt7915: disable RX_HDR_TRANS_SHORT This patch disables RX_TRANS_SHORT to make MDP to do header translation when payload less than 8 bytes, hence the (QoS) null data can be encapsulated to 802.3 format. However, WDS requires (QoS) null data in 802.11 format to created vlan AP interfaces. Signed-off-by: Ryder Lee Signed-off-by: lian.chen Signed-off-by: Sujuan Chen Signed-off-by: Bo Jiao --- mt7915/init.c | 3 +++ mt7915/mac.c | 4 ---- mt7915/regs.h | 3 +++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mt7915/init.c b/mt7915/init.c index 243f8a10..1c956d3d 100644 --- a/mt7915/init.c +++ b/mt7915/init.c @@ -453,6 +453,9 @@ static void mt7915_mac_init(struct mt7915_dev *dev) mt76_rmw_field(dev, MT_MDP_DCR1, MT_MDP_DCR1_MAX_RX_LEN, rx_len); + if (!is_mt7915(&dev->mt76)) + mt76_clear(dev, MT_MDP_DCR2, MT_MDP_DCR2_RX_TRANS_SHORT); + /* enable hardware de-agg */ mt76_set(dev, MT_MDP_DCR0, MT_MDP_DCR0_DAMSDU_EN); diff --git a/mt7915/mac.c b/mt7915/mac.c index b47aea6a..1f7a0be0 100644 --- a/mt7915/mac.c +++ b/mt7915/mac.c @@ -837,10 +837,6 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb) if (!status->wcid || !ieee80211_is_data_qos(fc)) return 0; - /* drop no data frame */ - if (fc & cpu_to_le16(IEEE80211_STYPE_NULLFUNC)) - return -EINVAL; - status->aggr = unicast && !ieee80211_is_qos_nullfunc(fc); status->qos_ctl = qos_ctl; diff --git a/mt7915/regs.h b/mt7915/regs.h index e4dbf999..bb0dec84 100644 --- a/mt7915/regs.h +++ b/mt7915/regs.h @@ -158,6 +158,9 @@ enum offs_rev { #define MT_MDP_DCR1 MT_MDP(0x004) #define MT_MDP_DCR1_MAX_RX_LEN GENMASK(15, 3) +#define MT_MDP_DCR2 MT_MDP(0x0e8) +#define MT_MDP_DCR2_RX_TRANS_SHORT BIT(2) + #define MT_MDP_BNRCFR0(_band) MT_MDP(__OFFS(MDP_BNRCFR0) + \ ((_band) << 8)) #define MT_MDP_RCFR0_MCU_RX_MGMT GENMASK(5, 4)