wctc4xxp: Reload the firmware if a fatal alert was received.
authorShaun Ruffell <sruffell@digium.com>
Tue, 3 Jun 2014 15:07:33 +0000 (10:07 -0500)
committerRuss Meyerriecks <rmeyerriecks@digium.com>
Thu, 5 Jun 2014 16:35:42 +0000 (11:35 -0500)
commit2010bc64334fe994061f20eb1fe7ee609f785f07
tree55afefe290644c4c1fa25fa2d9379a7930e96866
parent624f30bbf6a98e2b883a1aac72ca25098a67ef97
wctc4xxp: Reload the firmware if a fatal alert was received.

The driver will now automatically reload the firmware when there are no open
channels if the firmware reports a fatal error. If the firmware reports an
error, but it was not fatal, it will leave things running and try to reload when
all channels are shut down. The driver will also halt channel processing and
reload the firmware if a channel ever failed to be created.

The thought is that if the DTE reports a non-fatal error, I cannot be certain
what the state is, and it should be reset when possible without impacting
otherwise functioning card.  If there are problems, presumably all users would
hang up and the driver will then reload the firmware.

If the error is fatal, then all processing is halted to encourage everyone to
hang up. The card is probably not working at this point anyway, so there is no
point in trying to communicate with it.

Also included in this change is a compile-time selectable debug sysfs attribute
that will allow forcing an alert condition for testing the recovery.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
drivers/dahdi/wctc4xxp/base.c