diff options
author | Zhu Yi <yi.zhu@intel.com> | 2010-02-25 09:15:28 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-03-11 01:09:38 +0300 |
commit | c03c6aefdc2c1f5785a5b0d1a3f7e48eeaae3505 (patch) | |
tree | 5f00ed890b35708e04da459cfdd37ab9a7f46c23 /drivers/net/wireless/iwmc3200wifi/iwm.h | |
parent | 34dd5feb8b8b15654714731e1dbb34a6d37fb34e (diff) | |
download | linux-c03c6aefdc2c1f5785a5b0d1a3f7e48eeaae3505.tar.xz |
iwmc3200wifi: protect rx_tickets and rx_packets[] lists
Protect rx_tickets and rx_packets[] lists with spinlocks to fix the
race condition for concurrent list operations. In iwmc3200wifi both
sdio_isr_worker and rx_worker workqueues can access the rx ticket
and packets lists at the same time under high rx load.
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/iwm.h')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/iwm.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/iwm.h b/drivers/net/wireless/iwmc3200wifi/iwm.h index 9ad5b3c22eb2..13266c3842f8 100644 --- a/drivers/net/wireless/iwmc3200wifi/iwm.h +++ b/drivers/net/wireless/iwmc3200wifi/iwm.h @@ -269,7 +269,9 @@ struct iwm_priv { struct sk_buff_head rx_list; struct list_head rx_tickets; + spinlock_t ticket_lock; struct list_head rx_packets[IWM_RX_ID_HASH]; + spinlock_t packet_lock[IWM_RX_ID_HASH]; struct workqueue_struct *rx_wq; struct work_struct rx_worker; |