On Mon, Dec 02, 2019 at 05:40:20PM +0100, Exuvo wrote: > Sorry for the late reply > > The patch for increasing the amount did not work, i'll get around to > testing with the commit reverted. So, revert of that commit makes the problem gone ? > As an aside what function can i call at that point in the code to print the > value in num_proto_errs? I assume some kernel special printf? It's printk. You can add line like this to print values: printk("status %d num_proto_errs %u\n", status, rt2x00dev->num_proto_errs); Stanislaw > On Fri, 27 Sep 2019, 10:03 Stanislaw Gruszka, <sgruszka@xxxxxxxxxx> wrote: > > > On Thu, Sep 26, 2019 at 06:32:23PM +0200, Anton Olsson wrote: > > > Hello I have a USB based ID 148f:3070 Ralink Technology, Corp. > > RT2870/RT3070 Wireless Adapter, that stops working with recent kernels. It > > works on kernel 5.1.15 and does not work with 5.2.7 or 5.3.1 (I have not > > tested other versions). I use it in AP mode. > > > > > > I found this similar bug report > > https://marc.info/?l=linux-wireless&m=156630037103575&w=2 but that did > > not have related error messages so I assume this is different? > > > > > > Logs of working kernel 5.1.15-arch1-1-ARCH. > > > [ 78.680555] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, > > rev 0201 detected > > > [ 78.690992] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 > > detected > > > [ 78.799625] ieee80211 phy0: Selected rate control algorithm > > 'minstrel_ht' > > > sep 26 17:13:03 kernel: usbcore: registered new interface driver > > rt2800usb > > > sep 26 17:13:03 systemd[1]: Found device RT2870/RT3070 Wireless Adapter. > > > [ 113.812454] ieee80211 phy0: rt2x00lib_request_firmware: Info - > > Loading firmware file 'rt2870.bin' > > > [ 113.905279] ieee80211 phy0: rt2x00lib_request_firmware: Info - > > Firmware detected - version: 0.36 > > > [ 114.028703] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor > > Request 0x06 failed for offset 0x0404 with error -71 > > > > > > The last error there does not seem to affect the operation of the device. > > > > > > Logs of not working with kernel 5.3.1, 5.2.7 has similar output. > > > sep 26 17:06:12 kernel: ieee80211 phy0: rt2x00_set_rt: Info - RT chipset > > 3070, rev 0201 detected > > > sep 26 17:06:12 kernel: ieee80211 phy0: rt2x00_set_rf: Info - RF chipset > > 0005 detected > > > sep 26 17:06:12 kernel: ieee80211 phy0: Selected rate control algorithm > > 'minstrel_ht' > > > sep 26 17:06:12 kernel: usbcore: registered new interface driver > > rt2800usb > > > sep 26 17:06:12 systemd[1]: Found device RT2870/RT3070 Wireless Adapter. > > > sep 26 17:06:21 ieee80211 phy0: rt2x00lib_request_firmware: Info - > > Loading firmware file 'rt2870.bin' > > > sep 26 17:06:21 ieee80211 phy0: rt2x00lib_request_firmware: Info - > > Firmware detected - version: 0.36 > > > sep 26 17:06:21 ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor > > Request 0x06 failed for offset 0x0404 with> > > > sep 26 17:06:22 ieee80211 phy0: rt2800_wait_csr_ready: Error - Unstable > > hardware > > > sep 26 17:06:22 ieee80211 phy0: rt2800usb_set_device_state: Error - > > Device failed to enter state 4 (-5) > > > > > > Unable to bring up the network interface here. > > > > This most likely is the problem introduced by commit: > > > > commit e383c70474db32b9d4a3de6dfbd08784d19e6751 > > Author: Stanislaw Gruszka <sgruszka@xxxxxxxxxx> > > Date: Tue Mar 12 10:51:42 2019 +0100 > > > > rt2x00: check number of EPROTO errors > > > > Plase check below patch that increase number of EPROTO checks > > before marking device removed. If it does not help, plese > > check if reverting above commits helps. > > > > diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c > > b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c > > index bc2dfef0de22..215c3f092306 100644 > > --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c > > +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c > > @@ -30,7 +30,7 @@ static bool rt2x00usb_check_usb_error(struct rt2x00_dev > > *rt2x00dev, int status) > > else > > rt2x00dev->num_proto_errs = 0; > > > > - if (rt2x00dev->num_proto_errs > 3) > > + if (rt2x00dev->num_proto_errs > 8) > > return true; > > > > return false; > >