When a firmware error occurs,
/var/log/messages shows:
Code:
Feb 20 09:57:12 lucidrine dhclient[25153]: wpi0 down; exiting
Feb 20 09:57:14 lucidrine /bsd: wpi0: fatal firmware error
Feb 20 09:57:14 lucidrine /bsd: firmware error log (count=1):
Feb 20 09:57:14 lucidrine /bsd: error type = "SYSASSERT" (0x00000005)
Feb 20 09:57:14 lucidrine /bsd: error data = 0x00000074
Feb 20 09:57:14 lucidrine /bsd: branch link = 0x000008B600000274
Feb 20 09:57:14 lucidrine /bsd: interrupt link = 0x0000032000004EC4
Feb 20 09:57:14 lucidrine /bsd: time = 3774846438
Feb 20 09:57:14 lucidrine /bsd: driver status:
Feb 20 09:57:14 lucidrine /bsd: tx ring 0: qid=0 cur=4 queued=1
Feb 20 09:57:14 lucidrine /bsd: tx ring 1: qid=1 cur=0 queued=0
Feb 20 09:57:14 lucidrine /bsd: tx ring 2: qid=2 cur=0 queued=0
Feb 20 09:57:14 lucidrine /bsd: tx ring 3: qid=3 cur=0 queued=0
Feb 20 09:57:14 lucidrine /bsd: tx ring 4: qid=4 cur=19 queued=0
Feb 20 09:57:14 lucidrine /bsd: tx ring 5: qid=5 cur=0 queued=0
Feb 20 09:57:14 lucidrine /bsd: rx ring: cur=4
Feb 20 09:57:14 lucidrine /bsd: 802.11 state 4
Is there a way to catch/detect this error in a more convenient way than reading and interpreting
/var/log/messages? In my current setup,
ifstated(8) is used to
ping(8) Google every two minutes (mentioned earlier in this thread) to verify network connectivity. It would be nicer not to generate that network chatter (that often) and do local checks (perhaps, much more often).
After a firmware crash,
$ ifconfig wpi0
continues to report "status: active", so that's not a useful indicator.