[Prism54-devel] [PATCH/RFC] mgmt_timeout handling

Denis Vlasenko vda at port.imtp.ilyichevsk.odessa.ua
Sun Aug 15 20:13:33 UTC 2004


On Sunday 15 August 2004 01:01, Denis Vlasenko wrote:
> Hi folks,
>
> Here we go again. What do you think about applying this?
>
> Meanwhile, I will do some run testing. Do not apply yet.

I caught the long-sought (by me) 'reset hangs' bug.
It happens rarely.

I did iwconfig <iface> master ... :

21:54:36 ifp: prism54_set_mode(): down_write(mib_sem)
21:54:36 islpci_mgt_transaction(op 1, oid ff020008, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid ff020003, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 10000000, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 17000007, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 19000001, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 10000002, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 19000004, sendlen 8)
21:54:36 islpci_mgt_transaction(op 1, oid 12000000, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 12000001, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 12000002, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 12000004, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 12000005, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 12000006, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 12000007, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 12000003, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 150007e0, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid ff02000c, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 1700000a, sendlen 21)
21:54:36 islpci_mgt_transaction(op 1, oid 17000020, sendlen 21)
21:54:36 islpci_mgt_transaction(op 1, oid ff020003, sendlen 4)
21:54:36 islpci_mgt_transaction(op 0, oid 00000000, sendlen 6)
21:54:36 ifp: prism54_set_mode(): up_write(mib_sem)
21:54:36 ifp: mgt_set_request(): down_write(mib_sem)
21:54:36 islpci_mgt_transaction(op 1, oid 10000002, sendlen 34)
21:54:36 ifp: mgt_set_request(): up_write(mib_sem)
21:54:36 ifp: prism54_set_mode(): down_write(mib_sem)
21:54:36 islpci_mgt_transaction(op 1, oid ff020008, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid ff020003, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 10000000, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 17000007, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 19000001, sendlen 4)
21:54:36 islpci_mgt_transaction(op 1, oid 10000002, sendlen 34)
21:54:36 islpci_mgt_transaction(op 1, oid 19000004, sendlen 8)
21:54:36 ifp: timeout waiting for mgmt response. timeout_left=1000. triggering device
21:54:37 ghost default.hotplug[19592]: invoke /usr/app/hotplug-2004_01_05/script/firmware.agent ()
21:54:37 ghost firmware.agent[19592]: /usr/app/hotplug-2004_01_05/firmware/isl3890 found, loading it into /sys//class/firmware/0000:00:09.0/data
21:54:37 ifp: timeout waiting for mgmt response. oid=19000004. resetting device

	writing DOT11_OID_PSMBUFFER failed.
	here the new reset code kicks in...

21:54:37 ifp: resetting device...
21:54:37 ifp: uploading firmware...
21:54:37 ghost default.hotplug[19607]: invoke /usr/app/hotplug-2004_01_05/script/firmware.agent ()
21:54:37 ifp: islpci_upload_fw: success
21:54:38 ifp: got 'reset complete' IRQ
21:54:38 ifp: calling isl38xx_enable_common_interrupts()
21:54:38 ifp: calling down_write(mib_sem)

	deadlock: we already downed it!

21:54:40 NETDEV WATCHDOG: ifp: transmit timed out
21:54:40 ifp: tx_timeout
21:54:40 NETDEV WATCHDOG: ifp: transmit timed out
21:54:40 ifp: tx_timeout
21:54:42 NETDEV WATCHDOG: ifp: transmit timed out
21:54:42 ifp: tx_timeout
21:54:44 NETDEV WATCHDOG: ifp: transmit timed out
21:54:44 ifp: tx_timeout
21:54:46 NETDEV WATCHDOG: ifp: transmit timed out
21:54:46 ifp: tx_timeout

	we're toast

Argh. So how shall we handle failure in islpci_mgt_transaction(), then?
--
vda



More information about the Prism54-devel mailing list