linux-mediatek.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] mt76: mt7921u: enable HW beacon filter
@ 2022-06-16  1:10 sean.wang
  2022-06-16  1:10 ` [PATCH 2/2] mt76: mt7921: enable HW beacon filter in the initialization stage sean.wang
  2022-06-17 10:18 ` [PATCH 1/2] mt76: mt7921u: enable HW beacon filter Felix Fietkau
  0 siblings, 2 replies; 4+ messages in thread
From: sean.wang @ 2022-06-16  1:10 UTC (permalink / raw)
  To: nbd, lorenzo.bianconi
  Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
	Deren.Wu, km.lin, jenhao.yang, robin.chiu, Eddie.Chen, ch.yeh,
	posh.sun, ted.huang, Eric.Liang, Stella.Chang, Tom.Chou,
	steve.lee, jsiuda, frankgor, jemele, abhishekpandit, shawnku,
	linux-wireless, linux-mediatek

From: Sean Wang <sean.wang@mediatek.com>

HW beacon filter and HW connection monitor can be supported on MT7921U
as well so we enable them to be consistent with MT7921[E,S].

Tested-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
index acf6567368b7..d803a7dd5f83 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
@@ -677,8 +677,7 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
 	if (changed & BSS_CHANGED_ASSOC) {
 		mt7921_mcu_sta_update(dev, NULL, vif, true,
 				      MT76_STA_INFO_STATE_ASSOC);
-		if (dev->pm.enable)
-			mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
+		mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
 	}
 
 	if (changed & BSS_CHANGED_ARP_FILTER) {
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] mt76: mt7921: enable HW beacon filter in the initialization stage
  2022-06-16  1:10 [PATCH 1/2] mt76: mt7921u: enable HW beacon filter sean.wang
@ 2022-06-16  1:10 ` sean.wang
  2022-06-17 10:18 ` [PATCH 1/2] mt76: mt7921u: enable HW beacon filter Felix Fietkau
  1 sibling, 0 replies; 4+ messages in thread
From: sean.wang @ 2022-06-16  1:10 UTC (permalink / raw)
  To: nbd, lorenzo.bianconi
  Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
	Deren.Wu, km.lin, jenhao.yang, robin.chiu, Eddie.Chen, ch.yeh,
	posh.sun, ted.huang, Eric.Liang, Stella.Chang, Tom.Chou,
	steve.lee, jsiuda, frankgor, jemele, abhishekpandit, shawnku,
	linux-wireless, linux-mediatek

From: Sean Wang <sean.wang@mediatek.com>

The current driver has worked with HW beacon filter and connection
monitor all the way, here we move the enablement into the initialization
stage like other HW features being done to get rid of others are
confused why these configurations would be changed at runtime.

We still leave a way to turn off these offload features in debugfs knobs
but that is just for debugging purposes.

Tested-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7921/init.c |  1 +
 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 16 +++++++++++++++-
 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c  |  5 -----
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
index 48a10aaecc62..5f3e2507975c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
@@ -96,6 +96,7 @@ mt7921_init_wiphy(struct ieee80211_hw *hw)
 	ieee80211_hw_set(hw, WANT_MONITOR_VIF);
 	ieee80211_hw_set(hw, SUPPORTS_PS);
 	ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS);
+	ieee80211_hw_set(hw, CONNECTION_MONITOR);
 
 	if (dev->pm.enable)
 		ieee80211_hw_set(hw, CONNECTION_MONITOR);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
index d803a7dd5f83..c7f95d83885a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
@@ -352,6 +352,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw,
 		mtxq->wcid = idx;
 	}
 
+	vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
 out:
 	mt7921_mutex_release(dev);
 
@@ -495,8 +496,21 @@ static void
 mt7921_pm_interface_iter(void *priv, u8 *mac, struct ieee80211_vif *vif)
 {
 	struct mt7921_dev *dev = priv;
+	struct ieee80211_hw *hw = mt76_hw(dev);
+	bool pm_enable = dev->pm.enable;
+	int err;
 
-	mt7921_mcu_set_beacon_filter(dev, vif, dev->pm.enable);
+	err = mt7921_mcu_set_beacon_filter(dev, vif, pm_enable);
+	if (err < 0)
+		return;
+
+	if (pm_enable) {
+		vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
+		ieee80211_hw_set(hw, CONNECTION_MONITOR);
+	} else {
+		vif->driver_flags &= ~IEEE80211_VIF_BEACON_FILTER;
+		__clear_bit(IEEE80211_HW_CONNECTION_MONITOR, hw->flags);
+	}
 }
 
 static void
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
index d0a7c3128d5a..823019f9c2dc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
@@ -1134,7 +1134,6 @@ int mt7921_mcu_set_beacon_filter(struct mt7921_dev *dev,
 				 struct ieee80211_vif *vif,
 				 bool enable)
 {
-	struct ieee80211_hw *hw = mt76_hw(dev);
 	int err;
 
 	if (enable) {
@@ -1142,8 +1141,6 @@ int mt7921_mcu_set_beacon_filter(struct mt7921_dev *dev,
 		if (err)
 			return err;
 
-		vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
-		ieee80211_hw_set(hw, CONNECTION_MONITOR);
 		mt76_set(dev, MT_WF_RFCR(0), MT_WF_RFCR_DROP_OTHER_BEACON);
 
 		return 0;
@@ -1153,8 +1150,6 @@ int mt7921_mcu_set_beacon_filter(struct mt7921_dev *dev,
 	if (err)
 		return err;
 
-	vif->driver_flags &= ~IEEE80211_VIF_BEACON_FILTER;
-	__clear_bit(IEEE80211_HW_CONNECTION_MONITOR, hw->flags);
 	mt76_clear(dev, MT_WF_RFCR(0), MT_WF_RFCR_DROP_OTHER_BEACON);
 
 	return 0;
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] mt76: mt7921u: enable HW beacon filter
  2022-06-16  1:10 [PATCH 1/2] mt76: mt7921u: enable HW beacon filter sean.wang
  2022-06-16  1:10 ` [PATCH 2/2] mt76: mt7921: enable HW beacon filter in the initialization stage sean.wang
@ 2022-06-17 10:18 ` Felix Fietkau
  1 sibling, 0 replies; 4+ messages in thread
From: Felix Fietkau @ 2022-06-17 10:18 UTC (permalink / raw)
  To: sean.wang, lorenzo.bianconi
  Cc: Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang, Deren.Wu, km.lin,
	jenhao.yang, robin.chiu, Eddie.Chen, ch.yeh, posh.sun, ted.huang,
	Eric.Liang, Stella.Chang, Tom.Chou, steve.lee, jsiuda, frankgor,
	jemele, abhishekpandit, shawnku, linux-wireless, linux-mediatek


On 16.06.22 03:10, sean.wang@mediatek.com wrote:
> From: Sean Wang <sean.wang@mediatek.com>
> 
> HW beacon filter and HW connection monitor can be supported on MT7921U
> as well so we enable them to be consistent with MT7921[E,S].
> 
> Tested-by: Deren Wu <deren.wu@mediatek.com>
> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
> ---
>   drivers/net/wireless/mediatek/mt76/mt7921/main.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> index acf6567368b7..d803a7dd5f83 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> @@ -677,8 +677,7 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
>   	if (changed & BSS_CHANGED_ASSOC) {
>   		mt7921_mcu_sta_update(dev, NULL, vif, true,
>   				      MT76_STA_INFO_STATE_ASSOC);
> -		if (dev->pm.enable)
> -			mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
> +		mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
To me it looks like patch description and code change don't really 
match. Could you please explain why you change it so that the beacon 
filter is enabled even if PM isn't?

- Felix


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] mt76: mt7921u: enable HW beacon filter
       [not found] <092a2631-4e91-203e-9199-96fd3c689afa@nbd.name--annotate>
@ 2022-06-17 22:37 ` sean.wang
  0 siblings, 0 replies; 4+ messages in thread
From: sean.wang @ 2022-06-17 22:37 UTC (permalink / raw)
  To: nbd
  Cc: lorenzo.bianconi, sean.wang, Soul.Huang, YN.Chen, Leon.Yen,
	Eric-SY.Chang, Mark-YW.Chen, Deren.Wu, km.lin, jenhao.yang,
	robin.chiu, Eddie.Chen, ch.yeh, posh.sun, ted.huang, Eric.Liang,
	Stella.Chang, Tom.Chou, steve.lee, jsiuda, frankgor, jemele,
	abhishekpandit, shawnku, linux-wireless, linux-mediatek

From: Sean Wang <sean.wang@mediatek.com>

>>On 16.06.22 03:10, sean.wang@mediatek.com wrote:
>> From: Sean Wang <sean.wang@mediatek.com>
>>
>> HW beacon filter and HW connection monitor can be supported on MT7921U
>> as well so we enable them to be consistent with MT7921[E,S].
>>
>> Tested-by: Deren Wu <deren.wu@mediatek.com>
>> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>> ---
>>   drivers/net/wireless/mediatek/mt76/mt7921/main.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
>> b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
>> index acf6567368b7..d803a7dd5f83 100644
>> --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
>> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
>> @@ -677,8 +677,7 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
>>	if (changed & BSS_CHANGED_ASSOC) {
>>		mt7921_mcu_sta_update(dev, NULL, vif, true,
>>				      MT76_STA_INFO_STATE_ASSOC);
>> -		if (dev->pm.enable)
>> -			mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
>> +		mt7921_mcu_set_beacon_filter(dev, vif, info->assoc);
>To me it looks like patch description and code change don't really match. Could you please explain why you change it so that the beacon filter is enabled even if PM isn't?

dev->pm.enable is supposed to control runtime pm only and not related to hw beacon filter.

MT7921U still cannot support runtime pm as eafe031fd664 ("mt76: mt7921: disable runtime pm for usb") said.
but it doesn't only disable runtime pm but also would block the hw beacon filter to be enabled on MT7921U.
So here I correct dev->pm.enable usage to allow hw beacon filter enabled for MT7921U.

>
>- Felix
>




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-06-17 22:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16  1:10 [PATCH 1/2] mt76: mt7921u: enable HW beacon filter sean.wang
2022-06-16  1:10 ` [PATCH 2/2] mt76: mt7921: enable HW beacon filter in the initialization stage sean.wang
2022-06-17 10:18 ` [PATCH 1/2] mt76: mt7921u: enable HW beacon filter Felix Fietkau
     [not found] <092a2631-4e91-203e-9199-96fd3c689afa@nbd.name--annotate>
2022-06-17 22:37 ` sean.wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).