To be able to reproduce this bug a bit easier, i added usbautosuspend to ath9k_htc. There is some interesting statistic of power usage for now: ar9271: • power on + wifi on = 160 uA • "ifconfig wlan0 down" without autosuspend = 60 uA • "ifconfig wlan0" down with autosupend = 1,6 uA
Current problem is to bring adapter back. Am 17.05.2013 20:51, schrieb Oleksij Rempel: > Am 17.05.2013 17:37, schrieb Adrian Chadd: >> On 17 May 2013 05:00, Oleksij Rempel <li...@rempel-privat.de> wrote: >> >>>>>> here is a workaround for this issue, please test it: >>>>>> https://github.com/olerem/open-ath9k-htc-firmware/commits/suspend >>>>> >>>>> It seems to work just right on the PC. I'll test on the RPi and let you >>>>> know. >>>> >>>> Works on the RPi as well! Are there any implications for this being a >>>> workaround and not a proper fix? >>> >>> Yes, i do not know what i did. I will need to find out, what it actually >>> should do. >> >> ... hm, is this reset type not working? Is this the whole "reset >> through watchdog" versus "reset through reset" thing you talked about >> a couple weeks ago? > > No, it is different issue, at least at different path. > I did some more test and i'll try now to reflect all collected informations: > - Only ar9271 devices are affected. ar7010 seems to be fine. > - the issue is in: > target_firmware/magpie_fw_dev/target/hif/k2_fw_usb_api.c: > in _fw_usb_suspend_reboot() > > this function is called from two points: > - _fw_usbfifo_recv_command(), this one is triggered if host go to supend > - _fw_usb_fw_task(), this function is called on different events, > including reset, some cases if suspend? and resume? last was never > called. I'll need to check how exactly this part is working. > > So, _fw_usb_suspend_reboot() should theoretically prepare adapter for > suspend, to reduce power consumption. But there are fallowing problems > with this function: > - some hosts will completely power down this device. Absolutely no power > is consumed and all preparations made by this function are lost (cald > reset). > - some hosts keep usb port powered to be able to charge some device. It > is done only on laptops/pcs connected to power supply (i have one of > this, so i was able to check it). In this case we go to some undefined > state, and probably prepared to receive firmware. In this state device > use about 40mA. > - in all cases linux will do reset on resume. So all side effects > produced by _fw_usb_suspend_reboot() are reseted. This is why it is so > hard to reproduce this case. > > The problem what we now have is passed from _fw_usb_fw_task(), in this > case adapter will restart to boot loader and got ready to receive > firmware. But it looks like usb descriptor in this case is incomplete: > > here is brocken descriptor: > Bus 003 Device 002: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 255 Vendor Specific Class > bDeviceSubClass 255 Vendor Specific Subclass > bDeviceProtocol 255 Vendor Specific Protocol > bMaxPacketSize0 64 > idVendor 0x0cf3 Atheros Communications, Inc. > idProduct 0x9271 AR9271 802.11n > bcdDevice 1.08 > iManufacturer 16 > iProduct 32 > iSerial 48 > bNumConfigurations 1 > ---end--- > > > here is ok descriptor: > > Bus 003 Device 003: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 255 Vendor Specific Class > bDeviceSubClass 255 Vendor Specific Subclass > bDeviceProtocol 255 Vendor Specific Protocol > bMaxPacketSize0 64 > idVendor 0x0cf3 Atheros Communications, Inc. > idProduct 0x9271 AR9271 802.11n > bcdDevice 1.08 > iManufacturer 16 ATHEROS > iProduct 32 UB91C > iSerial 48 12345 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 60 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0x80 > (Bus Powered) > MaxPower 500mA > --- and some more -------- > > > after i disabled this function... see my workaround patch. I got > fallowing process. Host send suspend command.... no changes was made, > (currently i do not know what should we send as response), host trying > to send it some more times and the send reset. After this, adapter is > rebooting and firmware is uploaded... so it comes to normal working state. > > There is no way to support WoW here. So, there is no need to have some > sort of reduced power state. I assume, we can remove most part of > suspend sequence from firmware. And replace it with some correct > response to the host that every thing is ok, or that we do not support > this bit. > -- Regards, Oleksij _______________________________________________ ath9k-devel mailing list ath9k-devel@lists.ath9k.org https://lists.ath9k.org/mailman/listinfo/ath9k-devel