diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2011-02-12 20:43:42 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-02-14 15:51:21 -0500 |
commit | 8662b2518ff7995002378058488326ef7cb80de8 (patch) | |
tree | e7b0d1c7fca5820a46ac2411a5b4a8e36f8779c4 /drivers/net/wireless/zd1211rw/zd_usb.h | |
parent | eefdbec1ea8b7093d2c09d1825f68438701723cf (diff) | |
download | talos-obmc-linux-8662b2518ff7995002378058488326ef7cb80de8.tar.gz talos-obmc-linux-8662b2518ff7995002378058488326ef7cb80de8.zip |
zd1211rw: move async iowrite16v up to callers
Writing beacon to device happen through multiple write command calls.
zd_usb_iowrite16v uses synchronous urb call and with multiple write
commands in row causes high CPU usage.
Make asynchronous zd_usb_iowrite16v_async available outside zd_usb.c
and use where possible.
This lower CPU usage from ~10% to ~2% on Intel Atom when running
AP-mode with 100 TU beacon interval.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_usb.h')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.h b/drivers/net/wireless/zd1211rw/zd_usb.h index 929142692063..b3df2c8116cc 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.h +++ b/drivers/net/wireless/zd1211rw/zd_usb.h @@ -273,6 +273,10 @@ static inline int zd_usb_ioread16(struct zd_usb *usb, u16 *value, return zd_usb_ioread16v(usb, value, (const zd_addr_t *)&addr, 1); } +void zd_usb_iowrite16v_async_start(struct zd_usb *usb); +int zd_usb_iowrite16v_async_end(struct zd_usb *usb, unsigned int timeout); +int zd_usb_iowrite16v_async(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs, + unsigned int count); int zd_usb_iowrite16v(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs, unsigned int count); |