cvs commit: src/sys/dev/iwi if_iwi.c if_iwivar.h
luigi at FreeBSD.org
Tue Feb 20 15:46:10 UTC 2007
luigi 2007-02-20 15:45:59 UTC
FreeBSD src repository
sys/dev/iwi if_iwi.c if_iwivar.h
Address a few issues with the iwi driver, namely:
+ do not release the dma-ble region used for downloading firmware.
This should fix the problems that some people were seeing, due to
memory becoming too fragmented which prevented subsequent allocations
of a suitable contiguous region of memory;
+ document the firmware format and usage in if_iwivar.h
+ use a loop to allocate the four tx rings, instead of replicating
the body of the loop.
+ add debugging code IWI_LOCK_ASSERT() to detect missing locks.
These only do a printf, and should go away once we figure out why
the driver sometimes freezes the system due to a (yet unidentified)
+ add a device_printf() in iwi_ioctl() in certain conditions
(see comment in the code). This helps preventing the race condition
mentioned above, and makes the system survive. This printf will
also go away once fixing this bug is completed.
+ change iwi_getfw() to return 0 on success, 1 on error, consistently
with other functions.
+ fix the argument of a sizeof() in iwi_get_firmware()
+ use le32toh() to access little-endian fields
+ simplify error handling in iwi_load_firmware() and iwi_init_locked()
The bugs fixed by this commit (the freezing one especially) are serious
enough to call for a quick MFC
MFC after: 3 days
Revision Changes Path
1.47 +127 -78 src/sys/dev/iwi/if_iwi.c
1.13 +20 -0 src/sys/dev/iwi/if_iwivar.h
More information about the cvs-src