0a7bcf261e
Checking the stack usage of my kernel, showed that ipw2200 had a few bad offenders. This is on i386 32-bit: 0x00002876 ipw_send_associate: 544 0x000028ee ipw_send_associate: 544 0x000027dc ipw_send_scan_request_ext: 520 0x00002864 ipw_set_sensitivity: 520 0x00005eac ipw_set_rsn_capa: 520 The reason is the host_cmd structure is large (500 bytes). All other functions currently using ipw_send_cmd() suffer from the same problem. This patch introduces ipw_send_cmd_simple() for commands with no data transfer, and ipw_send_cmd_pdu() for commands with a data payload and makes the payload a pointer to the buffer passed in from the caller. As an added bonus, the diffstat looks like this: ipw2200.c | 260 +++++++++++++++++++++----------------------------------------- ipw2200.h | 2 2 files changed, 92 insertions(+), 170 deletions(-) and it shrinks the module a lot as well: Before: text data bss dec hex filename 75177 2472 44 77693 12f7d drivers/net/wireless/ipw2200.ko After: text data bss dec hex filename 61363 2488 44 63895 f997 drivers/net/wireless/ipw2200.ko So about a ~18% reduction in module size. Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||
---|---|---|
.. | ||
hostap | ||
prism54 | ||
airo_cs.c | ||
airo.c | ||
airo.h | ||
airport.c | ||
arlan-main.c | ||
arlan-proc.c | ||
arlan.h | ||
atmel_cs.c | ||
atmel_pci.c | ||
atmel.c | ||
atmel.h | ||
hermes_rid.h | ||
hermes.c | ||
hermes.h | ||
i82586.h | ||
i82593.h | ||
ipw2100.c | ||
ipw2100.h | ||
ipw2200.c | ||
ipw2200.h | ||
Kconfig | ||
Makefile | ||
netwave_cs.c | ||
orinoco_cs.c | ||
orinoco_nortel.c | ||
orinoco_pci.c | ||
orinoco_plx.c | ||
orinoco_tmd.c | ||
orinoco.c | ||
orinoco.h | ||
ray_cs.c | ||
ray_cs.h | ||
rayctl.h | ||
README | ||
spectrum_cs.c | ||
strip.c | ||
todo.txt | ||
wavelan_cs.c | ||
wavelan_cs.h | ||
wavelan_cs.p.h | ||
wavelan.c | ||
wavelan.h | ||
wavelan.p.h | ||
wl3501_cs.c | ||
wl3501.h |
README ------ This directory is mostly for Wireless LAN drivers, in their various incarnations (ISA, PCI, Pcmcia...). This separate directory is needed because a lot of driver work on different bus (typically PCI + Pcmcia) and share 95% of the code. This allow the code and the config options to be in one single place instead of scattered all over the driver tree, which is never 100% satisfactory. Note : if you want more info on the topic of Wireless LANs, you are kindly invited to have a look at the Wireless Howto : http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ Some Wireless LAN drivers, like orinoco_cs, require the use of Wireless Tools to be configured : http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html Special notes for distribution maintainers : 1) wvlan_cs will be discontinued soon in favor of orinoco_cs 2) Please add Wireless Tools support in your scripts Have fun... Jean