diff options
author | Shengzhen Li <szli@marvell.com> | 2015-03-13 15:07:54 +0300 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-03-16 19:12:25 +0300 |
commit | b2713f67f7a4c3226772c5ac581c7f37d7c473f1 (patch) | |
tree | c17b7a7e0beaf3804be5b19cbcbaf2554a072f41 /drivers/net/wireless/mwifiex/usb.c | |
parent | ea44f4d04c9356dc844af5312a376b6528cec7c5 (diff) | |
download | linux-b2713f67f7a4c3226772c5ac581c7f37d7c473f1.tar.xz |
mwifiex: avoid queue_work while work is ongoing
Current code does not check whether main_work_queue or
rx_work_queue is running when preparing to do queue_work,
this code fix add check before calling queue_work, reducing
unnecessary queue_work switch.
This change instead sets more_task flag to ensure we run main_process
superloop once again.
Signed-off-by: Shengzhen Li <szli@marvell.com>
Signed-off-by: Zhaoyang Liu <liuzy@marvell.com>
Reviewed-by: Cathy Luo <cluo@marvell.com>
Reviewed-by: Amitkumar Karwar <akarwar@marvell.com>
Reviewed-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/mwifiex/usb.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/usb.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/mwifiex/usb.c b/drivers/net/wireless/mwifiex/usb.c index 8beb38c578d0..fd8027f200a0 100644 --- a/drivers/net/wireless/mwifiex/usb.c +++ b/drivers/net/wireless/mwifiex/usb.c @@ -193,7 +193,7 @@ static void mwifiex_usb_rx_complete(struct urb *urb) dev_dbg(adapter->dev, "info: recv_length=%d, status=%d\n", recv_length, status); if (status == -EINPROGRESS) { - queue_work(adapter->workqueue, &adapter->main_work); + mwifiex_queue_main_work(adapter); /* urb for data_ep is re-submitted now; * urb for cmd_ep will be re-submitted in callback @@ -262,7 +262,7 @@ static void mwifiex_usb_tx_complete(struct urb *urb) urb->status ? -1 : 0); } - queue_work(adapter->workqueue, &adapter->main_work); + mwifiex_queue_main_work(adapter); return; } |