Bug 998342
Summary: | Sierra Wireless v3.10 drivers not working | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | John Henderson <jhen> | ||||
Component: | kernel | Assignee: | Kernel Maintainer List <kernel-maint> | ||||
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 18 | CC: | bjorn, dcbw, gansalmon, itamar, jonathan, kernel-maint, madhu.chinakonda, rob | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | kernel-3.11.10-100.fc18 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2013-12-04 16:49:08 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
John Henderson
2013-08-19 05:19:25 UTC
Hi, Just updated this to reflect that F19 is also affected. Is this an upstream issue? I see there's also a user on Arch with similar difficulties. https://bbs.archlinux.org/viewtopic.php?id=168656 Yes, this is definitely an upstream issue. It is a regression related to the commit 7b0c5f21f ("sierra_net: keep status interrupt URB active") from Dan, so I was hoping he would look into it... John has tested a number of different suggestions in addition to reverting that commit (which will cause another regression for devices needing it), but the exact trigger is still not known. It seems like the firmware of these devices somehow either need the repeated SYNC messages, or need some delayed SYNC message. But I have not been able to find out how to satisfy the firmware without completely disabling the changes from commit 7b0c5f21f. The only DirectIP device I've got does "unfortunately" work without problems both with and without this fix, so I am unable to test either of the firmware bugs. The full results of all John's testing is posted in the whirlpool thread. I believe this post in particualar shows where the problem is: http://forums.whirlpool.net.au/forum-replies.cfm?t=2135188&p=15#r300 But it would be good if Dan or anyone else with a device/firmware needing commit 7b0c5f21f could get involved in the testing. As it is now, it looks like it is best to revert this commit. Confirming this is still the case in Fedora 20. I've just received kernel 3.11.4 (3.11.4-101.fc18.i686) as an upgrade, and the problem persists. I find that the kernel 3.9 drivers I've been using as a work-around will no longer compile with kernel 3.11. So the problem is now getting serious. I can no longer use my Sierra 312U or 320U modems. I've discovered the kernel 3.9 drivers will compile and work in kernel 3.11 if the following line in sierra.c ifnum = port->number - serial->minor; is replaced with: ifnum = port->port_number; Thanks John. That's bought us some time.. I thought it was concluded that the serial driver had nothing to do with this problem? Quoting from the initial comment above: `In fact, it's only "sierra_net.c" that seems to be implicated. For more detailed info, please see: http://forums.whirlpool.net.au/forum-replies.cfm?t=2135188&p=14#r275` So you shouldn't have to do anything in particular to build on v3.11. Just leave the v3.11 version of sierra.c as it is. It's fine. As I couldn't come up with any working solution despite all the tests and debugging John did, I am currently considering posting a proposal to revert the v3.9 -> v3.10 patch that broke this. I assume that will cause regressions for other devices, which probably crash less after v3.10, but it still seems like the best alternative out of the limited options we have. If nothing else, I hope it will wake up Dan :-) That's correct Bjørn. The combination of v3.11 sierra.c and v3.9 sierra_net.c does compile (and work), of course. To be clear, the problem currently is that with the 3.10+ driver, the device does not deliver the Link Status Indication messages (0x78) and thus the net interface never gets set LOWER_UP (eg, RUNNING)? I believe so, based on Johns testing as reported here: http://forums.whirlpool.net.au/forum-replies.cfm?t=2135188&p=15#r300 Quoting from that post: --- Just before the switch statement in v3.9 I added this: netdev_err(dev->net, 'hh.msgid.byte=%x (v3.9)\n", hh.msgid.byte); clearly stamped with v3.9 for positive ID. With v3.10, I get a solitary line in /var/log/messages: Aug 22 00:04:51 localhost kernel: [ 496.732128] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 That's in stark contrast to the multiple occurrences in v3.9: Aug 22 06:54:45 localhost kernel: [ 528.845460] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:45 localhost dhclient[2090]: DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 3 (xid=0x327a6bfb) Aug 22 06:54:45 localhost kernel: [ 528.854737] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:45 localhost kernel: [ 528.861368] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:45 localhost kernel: [ 528.869339] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:45 localhost kernel: [ 528.877367] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.885384] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.893371] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.901382] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.909380] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.917506] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.925260] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.933519] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.941388] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.949386] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.957505] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.965254] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.973508] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.981388] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.989387] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 528.997516] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.005270] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.013390] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.021513] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.029387] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.037510] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.045391] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.053400] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.061516] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.069399] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.081212] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.085527] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.093391] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.101545] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.109385] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.117427] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.125525] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.133527] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.141403] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.149522] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.157532] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.165405] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.173527] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.181532] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.189655] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.189703] IPv6: ADDRCONF(NETDEV_CHANGE): wwan0: link becomes ready Aug 22 06:54:46 localhost avahi-daemon[499]: Registering new address record for fe80::88b7:63ff:feb3:107 on wwan0.*. Aug 22 06:54:46 localhost kernel: [ 529.197525] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.205536] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.213531] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.221534] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.229533] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.237409] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.245532] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.253534] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.261547] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.269536] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.277536] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.285542] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.293541] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.301542] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.309416] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.317542] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.325541] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.333545] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.341544] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.349544] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.357545] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.365546] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.373673] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.381552] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.389422] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.397424] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.405435] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.413552] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.421554] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.429552] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.437552] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.445430] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.453555] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.461557] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.469558] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.477557] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.485443] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.493557] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.501564] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.509685] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.517435] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.525558] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.533563] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.541567] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.549565] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.557564] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.565563] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=62 (v3.9) Aug 22 06:54:46 localhost kernel: [ 529.573571] sierra_net 1-3:1.7 wwan0: hh.msgid.byte=78 (v3.9) --- I've been able to reproduce this on a Sierra device, and it's mystifying. Adding some printks shows that reverting my patch, the restart indication *IS* sent, but nothing is listening for it since the interrupt URB isn't submitted. So the RESTART indications pile up, and they all get received after the interrupt URB is submitted at device open() time. At some point, the queued RESTART indications may overflow the device's buffer, which was the cause of the original crash. In any case, how about the attached patch? It only sends the SYNC when opening the device, after the interrupt URB is submitted. This avoids the issue of sending multiple SYNCs but being deaf to the result, but still works for my devices (USB306, 313U, MC7700): [ 2103.881954] sierra_net 2-1:1.7 wwan0: register 'sierra_net' at usb-0000:00:1d.7-1, Sierra Wireless USB-to-WWAN Modem, 8a:3a:c0:0b:01:07 [ 2103.950189] systemd-udevd[6414]: renamed network interface wwan0 to wwp0s29f7u1i7 [ 2104.883775] scsi 9:0:0:0: Direct-Access SWI SD Card 2.31 PQ: 0 ANSI: 2 [ 2104.884296] sd 9:0:0:0: Attached scsi generic sg2 type 0 [ 2104.887382] sd 9:0:0:0: [sdb] Attached SCSI removable disk [ 2148.270909] sierra_net_dosync: sent two SYNC messages [ 2148.270947] IPv6: ADDRCONF(NETDEV_UP): wwp0s29f7u1i7: link is not ready [ 2148.275125] sierra_net_status: firmware indicates response available [ 2148.275931] sierra_net_kevent: received msg 0x62 len 68 [ 2148.275934] sierra_net_kevent: RESTART received code 0x00 [ 2148.283130] sierra_net_status: firmware indicates response available [ 2148.284508] sierra_net_kevent: received msg 0x78 len 222 [ 2148.284521] IPv6: ADDRCONF(NETDEV_CHANGE): wwp0s29f7u1i7: link becomes ready Created attachment 819297 [details]
sierra-send-sync-on-open.patch
The patch works. I've applied it to sierra_net.c in the kernel 3.11 drivers (my current installation). It's working with both the 312U and the 320U. Thank you very much Dan and Bjørn. John For the record I should document a further development. The patch of sierra_net is not required after all, and sierra_net is not the underlying cause of the problem. Dan discovered and alerted me to the fact that the problem is generated by the usbnet.c driver. I have patched the usbnet.c driver in two 3.11 kernel releases now and can confirm that that patch gives me working Sierra 312U and 320U modems without any patching to sierra_net.c. See: http://permalink.gmane.org/gmane.linux.usb.general/97907 John I also tested the patch when it was posted upstream, and it works for my devices. I'm moving this bug to the kernel now that we know what the issue is. For kernel people: this is commit 52f48d0d9aaa621ffa5e08d79da99a3f8c93b848 in dmiller's net tree and it's queued up for stable too. Great, thanks Dan. This is already in rawhide and should hit the releases soon. I went ahead and added this patch. It didn't make 3.11.10, which is the final 3.11 release. kernel-3.11.10-300.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/kernel-3.11.10-300.fc20 Package kernel-3.11.10-300.fc20: * should fix your issue, * was pushed to the Fedora 20 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing kernel-3.11.10-300.fc20' as soon as you are able to, then reboot. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2013-22531/kernel-3.11.10-300.fc20 then log in and leave karma (feedback). kernel-3.11.10-200.fc19 has been submitted as an update for Fedora 19. https://admin.fedoraproject.org/updates/kernel-3.11.10-200.fc19 kernel-3.11.10-100.fc18 has been submitted as an update for Fedora 18. https://admin.fedoraproject.org/updates/kernel-3.11.10-100.fc18 kernel-3.11.10-300.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report. kernel-3.11.10-200.fc19 has been pushed to the Fedora 19 stable repository. If problems still persist, please make note of it in this bug report. kernel-3.11.10-100.fc18 has been pushed to the Fedora 18 stable repository. If problems still persist, please make note of it in this bug report. kernel-3.11.10-100.fc18 has been pushed to the Fedora 18 stable repository. If problems still persist, please make note of it in this bug report. |