diff options
author | merge <null@invalid> | 2008-11-26 21:18:18 +0000 |
---|---|---|
committer | Andy Green <agreen@pads.home.warmcat.com> | 2008-11-26 21:18:18 +0000 |
commit | e21ce7019cc3b9495be8678ef2c41569cc03021e (patch) | |
tree | 34311d5cda8c87664ca3e368c8c82a9640d14dca /drivers/ar6000/ar6000/ar6000_drv.h | |
parent | bcc54765697f64a6270e5e2373d41153e5f1871a (diff) |
MERGE-via-balaji-tracking-hist-MERGE-via-stable-tracking-hist-ar6k-break-down-insane-allocat
balaji-tracking-hist top was MERGE-via-stable-tracking-hist-ar6k-break-down-insane-allocat / 6a9c6db399ca60d371ec6b42986608e8bc4a636f ... parent commitmessage:
From: merge <null@invalid>
MERGE-via-stable-tracking-hist-ar6k-break-down-insane-allocat
stable-tracking-hist top was ar6k-break-down-insane-allocat / ac6b4c5fae9b497401eeb3e47cc21932839c18a2 ... parent commitmessage:
From: Werner Almesberger <werner@openmoko.org>
ar6k-break-down-insane-allocation.patch
The Atheros WLAN stack kmallocs almost 64kB of contiguous kernel
memory for a structure containing almost entirely buffers.
As is commonly known , this kind of large allocation has a very
high risk of failing as kernel memory fragments during the life of
a system.
This patch allocates the buffers indiviudually, thus shrinking the
structure to a size below 4kB.
Note: this is untested. These buffers are only used with Atheros'
raw interface, which none of the code we have, including wmiconfig,
even seems to know about.
This may fix bug #2133. Code follows Atheros' style, so checkpatch
hates it.
Signed-off-by: Werner Almesberger <werner@openmoko.org>
Diffstat (limited to 'drivers/ar6000/ar6000/ar6000_drv.h')
-rw-r--r-- | drivers/ar6000/ar6000/ar6000_drv.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/ar6000/ar6000/ar6000_drv.h b/drivers/ar6000/ar6000/ar6000_drv.h index 9e8ce0216a4..d5ff7774885 100644 --- a/drivers/ar6000/ar6000/ar6000_drv.h +++ b/drivers/ar6000/ar6000/ar6000_drv.h @@ -268,8 +268,8 @@ typedef struct ar6_softc { struct semaphore raw_htc_write_sem[HTC_RAW_STREAM_NUM_MAX]; wait_queue_head_t raw_htc_read_queue[HTC_RAW_STREAM_NUM_MAX]; wait_queue_head_t raw_htc_write_queue[HTC_RAW_STREAM_NUM_MAX]; - raw_htc_buffer raw_htc_read_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_READ_BUFFERS_NUM]; - raw_htc_buffer raw_htc_write_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_WRITE_BUFFERS_NUM]; + raw_htc_buffer *raw_htc_read_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_READ_BUFFERS_NUM]; + raw_htc_buffer *raw_htc_write_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_WRITE_BUFFERS_NUM]; A_BOOL write_buffer_available[HTC_RAW_STREAM_NUM_MAX]; A_BOOL read_buffer_available[HTC_RAW_STREAM_NUM_MAX]; #endif |