Date: Tue, 20 Feb 2007 15:45:59 +0000 (UTC) From: Luigi Rizzo <luigi@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/dev/iwi if_iwi.c if_iwivar.h Message-ID: <200702201545.l1KFjxF8052100@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
luigi 2007-02-20 15:45:59 UTC FreeBSD src repository Modified files: sys/dev/iwi if_iwi.c if_iwivar.h Log: 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) race condition. + 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702201545.l1KFjxF8052100>