linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset
@ 2021-04-15 13:41 sean.wang
  2021-04-15 13:41 ` [PATCH 2/2] mt76: mt7921: abort uncompleted scan by " sean.wang
  2021-04-15 13:53 ` [PATCH 1/2] mt76: mt7921: add debugfs knob for performing " Lorenzo Bianconi
  0 siblings, 2 replies; 5+ messages in thread
From: sean.wang @ 2021-04-15 13:41 UTC (permalink / raw)
  To: nbd, lorenzo.bianconi
  Cc: sean.wang, Soul.Huang, YN.Chen, robin.chiu, ch.yeh, posh.sun,
	Eric.Liang, Stella.Chang, linux-wireless, linux-mediatek

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

Introduce chip_reset knob in mt7921 debugfs to export a way to users
able to trigger wifi reset.

Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
index 024524173115..1342a0b645e3 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
@@ -302,6 +302,16 @@ static int mt7921_config(void *data, u64 val)
 
 DEFINE_DEBUGFS_ATTRIBUTE(fops_config, NULL, mt7921_config, "%lld\n");
 
+static int mt7921_chip_reset(void *data, u64 val)
+{
+	struct mt7921_dev *dev = data;
+
+	mt7921_reset(&dev->mt76);
+
+	return 0;
+}
+DEFINE_DEBUGFS_ATTRIBUTE(fops_reset, NULL, mt7921_chip_reset, "%lld\n");
+
 int mt7921_init_debugfs(struct mt7921_dev *dev)
 {
 	struct dentry *dir;
@@ -322,6 +332,7 @@ int mt7921_init_debugfs(struct mt7921_dev *dev)
 	debugfs_create_file("idle-timeout", 0600, dir, dev,
 			    &fops_pm_idle_timeout);
 	debugfs_create_file("chip_config", 0600, dir, dev, &fops_config);
+	debugfs_create_file("chip_reset", 0600, dir, dev, &fops_reset);
 
 	return 0;
 }
-- 
2.25.1


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

* [PATCH 2/2] mt76: mt7921: abort uncompleted scan by wifi reset
  2021-04-15 13:41 [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset sean.wang
@ 2021-04-15 13:41 ` sean.wang
  2021-04-15 13:53 ` [PATCH 1/2] mt76: mt7921: add debugfs knob for performing " Lorenzo Bianconi
  1 sibling, 0 replies; 5+ messages in thread
From: sean.wang @ 2021-04-15 13:41 UTC (permalink / raw)
  To: nbd, lorenzo.bianconi
  Cc: sean.wang, Soul.Huang, YN.Chen, robin.chiu, ch.yeh, posh.sun,
	Eric.Liang, Stella.Chang, linux-wireless, linux-mediatek

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

Scan abort should be required for the uncompleted hardware scan
interrupted by wifi reset. Otherwise, it is possible that the scan
request after wifi reset gets error code -EBUSY from mac80211 and
then blocks the reconnectting to the access point.

Fixes: 215bb6737bef ("mt76: mt7921: add wifi reset support")
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
index 572bab82315a..3145880df6e7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
@@ -1413,6 +1413,14 @@ void mt7921_mac_reset_work(struct work_struct *work)
 	if (i == 10)
 		dev_err(dev->mt76.dev, "chip reset failed\n");
 
+	if (test_and_clear_bit(MT76_HW_SCANNING, &dev->mphy.state)) {
+		struct cfg80211_scan_info info = {
+			.aborted = true,
+		};
+
+		ieee80211_scan_completed(dev->mphy.hw, &info);
+	}
+
 	ieee80211_wake_queues(hw);
 	ieee80211_iterate_active_interfaces(hw,
 					    IEEE80211_IFACE_ITER_RESUME_ALL,
-- 
2.25.1


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

* Re: [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset
  2021-04-15 13:41 [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset sean.wang
  2021-04-15 13:41 ` [PATCH 2/2] mt76: mt7921: abort uncompleted scan by " sean.wang
@ 2021-04-15 13:53 ` Lorenzo Bianconi
  2021-04-15 14:53   ` sean.wang
  1 sibling, 1 reply; 5+ messages in thread
From: Lorenzo Bianconi @ 2021-04-15 13:53 UTC (permalink / raw)
  To: sean.wang
  Cc: nbd, lorenzo.bianconi, Soul.Huang, YN.Chen, robin.chiu, ch.yeh,
	posh.sun, Eric.Liang, Stella.Chang, linux-wireless,
	linux-mediatek

[-- Attachment #1: Type: text/plain, Size: 1502 bytes --]

> From: Sean Wang <sean.wang@mediatek.com>
> 
> Introduce chip_reset knob in mt7921 debugfs to export a way to users
> able to trigger wifi reset.
> 
> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
> ---
>  drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> index 024524173115..1342a0b645e3 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> @@ -302,6 +302,16 @@ static int mt7921_config(void *data, u64 val)
>  
>  DEFINE_DEBUGFS_ATTRIBUTE(fops_config, NULL, mt7921_config, "%lld\n");
>  
> +static int mt7921_chip_reset(void *data, u64 val)
> +{
> +	struct mt7921_dev *dev = data;
> +
> +	mt7921_reset(&dev->mt76);
> +
> +	return 0;
> +}
> +DEFINE_DEBUGFS_ATTRIBUTE(fops_reset, NULL, mt7921_chip_reset, "%lld\n");

can we use chip_config for this?

Regards,
Lorenzo

> +
>  int mt7921_init_debugfs(struct mt7921_dev *dev)
>  {
>  	struct dentry *dir;
> @@ -322,6 +332,7 @@ int mt7921_init_debugfs(struct mt7921_dev *dev)
>  	debugfs_create_file("idle-timeout", 0600, dir, dev,
>  			    &fops_pm_idle_timeout);
>  	debugfs_create_file("chip_config", 0600, dir, dev, &fops_config);
> +	debugfs_create_file("chip_reset", 0600, dir, dev, &fops_reset);
>  
>  	return 0;
>  }
> -- 
> 2.25.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset
  2021-04-15 13:53 ` [PATCH 1/2] mt76: mt7921: add debugfs knob for performing " Lorenzo Bianconi
@ 2021-04-15 14:53   ` sean.wang
  2021-04-15 15:07     ` Lorenzo Bianconi
  0 siblings, 1 reply; 5+ messages in thread
From: sean.wang @ 2021-04-15 14:53 UTC (permalink / raw)
  To: nbd, lorenzo.bianconi
  Cc: sean.wang, Soul.Huang, YN.Chen, robin.chiu, ch.yeh, posh.sun,
	Eric.Liang, Stella.Chang, linux-wireless, linux-mediatek

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

>> From: Sean Wang <sean.wang@mediatek.com>
>>
>> Introduce chip_reset knob in mt7921 debugfs to export a way to users
>> able to trigger wifi reset.
>>
>> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>> ---
>>  drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
>> b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
>> index 024524173115..1342a0b645e3 100644
>> --- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
>> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
>> @@ -302,6 +302,16 @@ static int mt7921_config(void *data, u64 val)
>>
>>  DEFINE_DEBUGFS_ATTRIBUTE(fops_config, NULL, mt7921_config, "%lld\n");
>>
>> +static int mt7921_chip_reset(void *data, u64 val) {
>> +	struct mt7921_dev *dev = data;
>> +
>> +	mt7921_reset(&dev->mt76);
>> +
>> +	return 0;
>> +}
>> +DEFINE_DEBUGFS_ATTRIBUTE(fops_reset, NULL, mt7921_chip_reset,
>> +"%lld\n");
>
>can we use chip_config for this?

i think we can resue the the knob for chip_reset. i will do it in the next version.

>
>Regards,
>Lorenzo
>
>> +
>>  int mt7921_init_debugfs(struct mt7921_dev *dev)  {
>>	struct dentry *dir;
>> @@ -322,6 +332,7 @@ int mt7921_init_debugfs(struct mt7921_dev *dev)
>>	debugfs_create_file("idle-timeout", 0600, dir, dev,
>>			    &fops_pm_idle_timeout);
>>	debugfs_create_file("chip_config", 0600, dir, dev, &fops_config);
>> +	debugfs_create_file("chip_reset", 0600, dir, dev, &fops_reset);
>>
>>	return 0;
>>  }
>> --
>> 2.25.1
>>
>

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

* Re: [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset
  2021-04-15 14:53   ` sean.wang
@ 2021-04-15 15:07     ` Lorenzo Bianconi
  0 siblings, 0 replies; 5+ messages in thread
From: Lorenzo Bianconi @ 2021-04-15 15:07 UTC (permalink / raw)
  To: sean.wang
  Cc: nbd, lorenzo.bianconi, Soul.Huang, YN.Chen, robin.chiu, ch.yeh,
	posh.sun, Eric.Liang, Stella.Chang, linux-wireless,
	linux-mediatek

[-- Attachment #1: Type: text/plain, Size: 1878 bytes --]

> From: Sean Wang <sean.wang@mediatek.com>
> 
> >> From: Sean Wang <sean.wang@mediatek.com>
> >>
> >> Introduce chip_reset knob in mt7921 debugfs to export a way to users
> >> able to trigger wifi reset.
> >>
> >> Signed-off-by: Sean Wang <sean.wang@mediatek.com>
> >> ---
> >>  drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c | 11 +++++++++++
> >>  1 file changed, 11 insertions(+)
> >>
> >> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> >> b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> >> index 024524173115..1342a0b645e3 100644
> >> --- a/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> >> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c
> >> @@ -302,6 +302,16 @@ static int mt7921_config(void *data, u64 val)
> >>
> >>  DEFINE_DEBUGFS_ATTRIBUTE(fops_config, NULL, mt7921_config, "%lld\n");
> >>
> >> +static int mt7921_chip_reset(void *data, u64 val) {
> >> +	struct mt7921_dev *dev = data;
> >> +
> >> +	mt7921_reset(&dev->mt76);
> >> +
> >> +	return 0;
> >> +}
> >> +DEFINE_DEBUGFS_ATTRIBUTE(fops_reset, NULL, mt7921_chip_reset,
> >> +"%lld\n");
> >
> >can we use chip_config for this?
> 
> i think we can resue the the knob for chip_reset. i will do it in the next version.

ack, I agree. Please rename the chip_config in something lile reset or similar.

Thanks,
Lorenzo

> 
> >
> >Regards,
> >Lorenzo
> >
> >> +
> >>  int mt7921_init_debugfs(struct mt7921_dev *dev)  {
> >>	struct dentry *dir;
> >> @@ -322,6 +332,7 @@ int mt7921_init_debugfs(struct mt7921_dev *dev)
> >>	debugfs_create_file("idle-timeout", 0600, dir, dev,
> >>			    &fops_pm_idle_timeout);
> >>	debugfs_create_file("chip_config", 0600, dir, dev, &fops_config);
> >> +	debugfs_create_file("chip_reset", 0600, dir, dev, &fops_reset);
> >>
> >>	return 0;
> >>  }
> >> --
> >> 2.25.1
> >>
> >

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

end of thread, other threads:[~2021-04-15 15:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15 13:41 [PATCH 1/2] mt76: mt7921: add debugfs knob for performing wifi reset sean.wang
2021-04-15 13:41 ` [PATCH 2/2] mt76: mt7921: abort uncompleted scan by " sean.wang
2021-04-15 13:53 ` [PATCH 1/2] mt76: mt7921: add debugfs knob for performing " Lorenzo Bianconi
2021-04-15 14:53   ` sean.wang
2021-04-15 15:07     ` Lorenzo Bianconi

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).