Message ID | 20180711122947.GA5309@redhat.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Kalle Valo |
Headers | show |
2018-07-11 14:29 GMT+02:00 Stanislaw Gruszka <sgruszka@redhat.com>: > (correct Felix email address) > > On Fri, Jun 22, 2018 at 05:51:53PM +0200, Janusz Dziedzic wrote: >> 2018-06-22 16:48 GMT+02:00 Stanislaw Gruszka <sgruszka@redhat.com>: >> > Hi >> > >> > On Fri, Jun 22, 2018 at 10:37:35AM +0200, Janusz Dziedzic wrote: >> >> Have this card in my laptop: >> >> 02:00.0 Network controller: MEDIATEK Corp. Device 7612 >> >> >> >> [ 8.478104] mt76x2e 0000:02:00.0: ASIC revision: 76120044 >> >> [ 8.489582] mt76x2e 0000:02:00.0: ROM patch already applied >> >> [ 8.833476] mt76x2e 0000:02:00.0: Firmware Version: 0.0.00 >> >> [ 8.833477] mt76x2e 0000:02:00.0: Build: 1 >> >> [ 8.833479] mt76x2e 0000:02:00.0: Build Time: 201507311614____ >> >> [ 8.856115] mt76x2e 0000:02:00.0: Firmware running! >> >> [ 9.558075] mt76x2e 0000:02:00.0 wlp2s0: renamed from wlan1 >> > >> > I'm just curious. Does the card was installed in the laptop by default? >> > If so what is the model of the laptop? >> > >> No, I just buy this card on aliexpress and put into some dell (MTK >> MT7612 2x2 half miniPCIE). >> >> >> Linux test4 4.17.0-rc7+ #5 SMP Mon May 28 12:35:22 CEST 2018 x86_64 GNU/Linux >> >> >> >> Seems iw scan works correctly and first assoc. After will run some >> >> traffic (iperf in such case) get: >> >> >> >> [ 432.372081] wlp2s0: associate with 52:b4:f7:f0:16:c2 (try 2/3) >> >> [ 432.375255] wlp2s0: RX AssocResp from 52:b4:f7:f0:16:c2 >> >> (capab=0x511 status=0 aid=2) >> >> [ 432.375336] wlp2s0: associated >> >> [ 432.451097] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready >> >> [ 522.562157] mt76x2e 0000:02:00.0: MCU message 31 (seq 13) timed out >> >> [ 524.610281] mt76x2e 0000:02:00.0: MCU message 31 (seq 14) timed out >> >> [ 526.658384] mt76x2e 0000:02:00.0: MCU message 31 (seq 15) timed out >> >> [ 528.258455] mt76x2e 0000:02:00.0: MCU message 30 (seq 1) timed out >> >> [ 529.282499] mt76x2e 0000:02:00.0: MCU message 30 (seq 2) timed out >> >> [ 530.402544] mt76x2e 0000:02:00.0: MCU message 30 (seq 3) timed out >> >> [ 531.426587] mt76x2e 0000:02:00.0: MCU message 30 (seq 4) timed out >> >> [ 531.427444] wlp2s0: authenticate with 52:b4:f7:f0:14:ac >> >> [ 532.450624] mt76x2e 0000:02:00.0: MCU message 30 (seq 5) timed out >> >> [ 533.474666] mt76x2e 0000:02:00.0: MCU message 30 (seq 6) timed out >> >> [ 534.498709] mt76x2e 0000:02:00.0: MCU message 30 (seq 7) timed out >> >> [ 535.522736] mt76x2e 0000:02:00.0: MCU message 30 (seq 8) timed out >> >> [ 535.522807] wlp2s0: send auth to 52:b4:f7:f0:14:ac (try 1/3) >> >> [ 535.726740] wlp2s0: send auth to 52:b4:f7:f0:14:ac (try 2/3) >> >> [ 535.930742] wlp2s0: send auth to 52:b4:f7:f0:14:ac (try 3/3) >> >> [ 536.134747] wlp2s0: authentication with 52:b4:f7:f0:14:ac timed out >> > >> > I observed quite similar issue on some rt2800 devices when >> > I applied this patch: >> > https://github.com/sgruszka/wireless-drivers-next/commit/846d205edd8c36d1b7828fee54bf4cf40bf8cb1a >> > It works on some devices and does not work on others with similar >> > symptoms - correctly associate but stop to work as soon as some >> > data traffic is performed. >> > >> > So, I would check if send IEEE80211_TX_CTL_RATE_CTRL_PROBE frames >> > with qsel = MT_QSEL_EDCA would help. >> > >> Thanks, will check this. > > I guess it does not help? You can check attached patch instead > (note I only compile tested it). > Sure, result below: root@test4:~# uname -a Linux test4 4.18.0-rc4+ #7 SMP Wed Jul 11 15:43:36 CEST 2018 x86_64 GNU/Linux root@test4:~# lspci |grep MEDIA 02:00.0 Network controller: MEDIATEK Corp. Device 7612 test@test4:~$ iperf -s -i2 ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.1.114 port 5001 connected with 192.168.1.103 port 51156 [ ID] Interval Transfer Bandwidth [ 4] 0.0- 2.0 sec 3.21 MBytes 13.5 Mbits/sec [ 4] 2.0- 4.0 sec 0.00 Bytes 0.00 bits/sec [ 4] 4.0- 6.0 sec 0.00 Bytes 0.00 bits/sec [ 4] 6.0- 8.0 sec 0.00 Bytes 0.00 bits/sec [ 4] 8.0-10.0 sec 0.00 Bytes 0.00 bits/sec ... root@test4:~# modprobe -r mt76x2e root@test4:~# modprobe mt76x2e root@test4:~# ifconfig wlp2s0 up SIOCSIFFLAGS: Connection timed out [ 1222.427751] wlp2s0: associated [ 1222.530438] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready [ 1570.177690] wlp2s0: deauthenticating from e2:b4:f7:00:17:4e by local choice (Reason: 3=DEAUTH_LEAVING) [ 1586.686971] mt76x2e 0000:02:00.0: ASIC revision: 76120044 [ 1586.699224] mt76x2e 0000:02:00.0: ROM patch build: 20141115060606a [ 1586.700652] mt76x2e 0000:02:00.0: Firmware Version: 0.0.00 [ 1586.700653] mt76x2e 0000:02:00.0: Build: 1 [ 1586.700655] mt76x2e 0000:02:00.0: Build Time: 201507311614____ [ 1586.721801] mt76x2e 0000:02:00.0: Firmware running! [ 1587.737844] mt76x2e 0000:02:00.0: MCU message 1 (seq 1) timed out [ 1587.738317] ieee80211 phy2: Selected rate control algorithm 'minstrel_ht' [ 1587.741315] mt76x2e 0000:02:00.0 wlp2s0: renamed from wlan0 [ 1609.113782] mt76x2e 0000:02:00.0: MCU message 20 (seq 2) timed out [ 1627.609749] mt76x2e 0000:02:00.0: MCU message 20 (seq 3) timed out [ 1716.985370] mt76x2e 0000:02:00.0: MCU message 20 (seq 4) timed out root@test4:~# modprobe -r mt76x2e root@test4:~# modprobe mt76x2e root@test4:~# ifconfig wlp2s0 up root@test4:~# Seems when data stall (iperf) and next reload driver, works much better - 1st or 2nd try for ifconfig up works correctly. So, for sure patch improve hw (re)start. Regarding iperf - as before :) BR Janusz > Regards > Stanislaw >> >> > Another thing to try is checkout vendor driver and see if there is need >> > to add extra code if device is_mt7612() . >> > >> > Regards >> > Stanislaw >> >> >> >> -- >> Janusz Dziedzic
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2.h b/drivers/net/wireless/mediatek/mt76/mt76x2.h index 71fcfa44fb2e..33318ac8fe81 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2.h +++ b/drivers/net/wireless/mediatek/mt76/mt76x2.h @@ -180,6 +180,7 @@ static inline void mt76x2_irq_disable(struct mt76x2_dev *dev, u32 mask) struct mt76x2_dev *mt76x2_alloc_device(struct device *pdev); int mt76x2_register_device(struct mt76x2_dev *dev); +void mt76x2_set_wlan_state(struct mt76x2_dev *dev, bool enable); void mt76x2_init_debugfs(struct mt76x2_dev *dev); irqreturn_t mt76x2_irq_handler(int irq, void *dev_instance); diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2_init.c index 79ab93613e06..782b350fee65 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2_init.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2_init.c @@ -498,7 +498,7 @@ void mt76x2_set_tx_ackto(struct mt76x2_dev *dev) MT_TX_TIMEOUT_CFG_ACKTO, ackto); } -static void +void mt76x2_set_wlan_state(struct mt76x2_dev *dev, bool enable) { u32 val = mt76_rr(dev, MT_WLAN_FUN_CTRL); diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_pci.c b/drivers/net/wireless/mediatek/mt76/mt76x2_pci.c index e66f047ea448..50f29d8393f1 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2_pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2_pci.c @@ -54,6 +54,8 @@ mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); + mt76x2_set_wlan_state(dev, false); + dev->mt76.rev = mt76_rr(dev, MT_ASIC_VERSION); dev_info(dev->mt76.dev, "ASIC revision: %08x\n", dev->mt76.rev);