linux/drivers
Zhu Yi 0a7bcf261e [PATCH] ipw2200: stack reduction
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>
2006-01-30 20:35:34 -05:00
..
acorn [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
acpi [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
amba [ARM] Remove asm/irq.h includes from ARM drivers 2006-01-09 13:56:42 +00:00
atm [ATM]: Remove unneeded kmalloc() return value casts + tiny whitespace cleanup 2006-01-10 13:09:01 -08:00
base [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
block [PATCH] Fix drivers/block/ps2esdi.c compile 2006-01-16 20:24:45 -08:00
bluetooth [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
cdrom [PATCH] powerpc: remove bitfields from HvLpEvent 2006-01-12 20:09:29 +11:00
char [PATCH] tlclk driver update 2006-01-18 19:25:49 -08:00
connector [PATCH] Switch getnstimestamp() calls to ktime_get_ts() 2006-01-10 08:01:39 -08:00
cpufreq [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
crypto [CRYPTO] Allow AES C/ASM implementations to coexist 2006-01-09 14:15:39 -08:00
dio [PATCH] Add dio_bus_type probe and remove methods 2006-01-13 11:26:07 -08:00
edac [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
eisa
fc4 [SPARC]: introduce a SPARC Kconfig symbol 2005-12-22 23:09:54 -08:00
firmware [PATCH] dell_rbu: fix Bug 5854 2006-01-14 18:27:13 -08:00
hwmon [PATCH] drivers/*rest*: Replace pci_module_init() with pci_register_driver() 2006-01-09 12:13:23 -08:00
i2c [PATCH] Add i2c_bus_type probe and remove methods 2006-01-13 11:26:07 -08:00
ide [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
ieee1394 Actually remove amdtp.[ch], cmp.[ch]. 2006-01-16 19:21:57 -05:00
infiniband [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
input [PATCH] sh: consolidate hp620/hp680/hp690 targets into hp6xx 2006-01-16 23:15:27 -08:00
isdn [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
macintosh Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6 2006-01-14 10:42:40 -08:00
mca
md [PATCH] EDAC: atomic scrub operations 2006-01-18 19:20:30 -08:00
media [PATCH] Fix compile warning in bt8xx module 2006-01-16 23:24:10 -08:00
message [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
mfd [PATCH] Add MCP bus_type probe and remove methods 2006-01-13 11:26:08 -08:00
misc Input: ibmasm - fix input initialization error path 2006-01-10 02:00:39 -05:00
mmc Merge master.kernel.org:/home/rmk/linux-2.6-mmc 2006-01-14 19:44:01 -08:00
mtd [PATCH] build kernel/intermodule.c only when required 2006-01-16 23:15:26 -08:00
net [PATCH] ipw2200: stack reduction 2006-01-30 20:35:34 -05:00
nubus
oprofile [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parisc [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parport [PARISC] Fix parport_gsc by selecting PARPORT_NOT_PC 2006-01-10 21:52:25 -05:00
pci [PATCH] Intel ICH8 SATA: add PCI device IDs 2006-01-17 19:31:54 -05:00
pcmcia [PATCH] Add pcmcia_bus_type probe and remove methods 2006-01-13 11:26:08 -08:00
pnp [PATCH] Add pnp_bus_type probe and remove methods 2006-01-13 11:26:09 -08:00
rapidio [PATCH] Add rio_bus_type probe and remove methods 2006-01-13 11:26:10 -08:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-01-15 16:43:29 -08:00
sbus [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
scsi [PATCH] libata: Code for the IRQ mask flag 2006-01-17 19:37:45 -05:00
serial Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-01-19 22:16:58 -08:00
sh [PATCH] Add superhyway_bus_type probe and remove methods 2006-01-13 11:26:09 -08:00
sn [PATCH] Altix: ioc3 serial support 2006-01-14 18:25:20 -08:00
spi [PATCH] SPI: add spi_butterfly driver 2006-01-13 16:29:56 -08:00
tc
telephony [PATCH] pcmcia: unify attach, EVENT_CARD_INSERTION handlers into one probe callback 2006-01-06 00:03:24 +01:00
usb [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
video [SPARC]: Fix sbusfb build. 2006-01-17 15:53:11 -08:00
w1 spelling: s/usefull/useful/ 2006-01-10 00:08:17 +01:00
zorro [PATCH] Add zorro_bus_type probe and remove methods 2006-01-13 11:26:10 -08:00
Kconfig [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
Makefile [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00