[Prism54-devel] [PATCH] handle mgmt timeouts by resetting hardware
Denis Vlasenko
vda at port.imtp.ilyichevsk.odessa.ua
Sun Aug 1 08:54:58 UTC 2004
Patch is against cvs 20040801 + my set_rates patch,
however, I think they do not intersect.
Highlights:
* islpci_mgt_transaction() will reset hardware if mgmt transaction
times out. It takes care not to race with tx timeout reset and
also to not go into endless recursion. Atomic counters and bit ops
are used to guarantee that.
* A watchdog timer is added which wakes up every 2 seconds.
It is an empty function now. The plan is to poll hardware,
probing for hangups. Currently, I still can hit a case when
'iwconfig ethN' is needed to trigger islpci_mgt_transaction()
which times out and triggers reset.
* Reset code mabe a bit more verbose about success/failure.
* Superfluous NULLs killed. Not needed since islpci_mgt_transaction()
sets response to NULL as a first step.
TODO after this patch got merged:
* islpci_mgt_transaction() shall retry transaction after reset.
* make watchdog do lockup detection, maybe by execute some
innocuous mgt transaction.
* look here at current function tree:
islpci_reset(int needed):
clean up rx and mgt rings
if(needed)
islpci_upload_fw()
islpci_reset_if()
islpci_reset_if:
isl38xx_interface_reset()
[waits on waitqueue, which is awakened in irq handler]
if(did not timeout)
isl38xx_enable_common_interrupts()
mgt_commit(priv)
isl38xx_interface_reset:
pokes registers, initiating reset
enables INIT intr
Note that 'clean up rx and mgt rings' stage is run BEFORE
we told hardware to reset itself. Hell knows what it is doing
there. We must make sure it does not interfere with
our cleanups and fw upload.
Patch is tested with heavy pinging across weak link
for several hours.
While it is not 'rock stable' yet, it is much better
than before.
Please apply.
--
vda
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reset.patch
Type: text/x-diff
Size: 15455 bytes
Desc: not available
Url : http://prism54.org/pipermail/prism54-devel/attachments/20040801/b44f4469/reset.bin
More information about the Prism54-devel
mailing list