zd1211rw: use async urb for write command
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Sat, 12 Feb 2011 18:43:32 +0000 (20:43 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 14 Feb 2011 20:51:21 +0000 (15:51 -0500)
commiteefdbec1ea8b7093d2c09d1825f68438701723cf
tree6dc40b6d25f8dede0522927f48c4a716ff9c88c9
parent37939810b937aba830dd751291fcdc51cae1a6cb
zd1211rw: use async urb for write command

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.

This patch makes zd_usb_iowrite16v use asynchronous urb submit within
zd_usb.c. zd_usb_iowrite16v_async_start is used to initiate writing
multiple commands to device using zd_usb_iowrite16v_async. Each URB
is delayed and submitted to device by next zd_usb_iowrite16v_async
call or by call to zd_usb_iowrite16v_async_end. URBs submitted by
zd_usb_iowrite16v_async have URB_NO_INTERRUPT set and last URB
send by zd_usb_iowrite16v_async_end does not. This lower CPU
usage when doing writes that require multiple URBs.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/wireless/zd1211rw/zd_usb.h