From: Andreas Fenkart Date: Fri, 5 Apr 2013 03:03:51 +0000 (-0700) Subject: mwifiex: remove unused tid_tbl_lock from mwifiex_tid_tbl X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=6d2344ec6043a2de8cfa9d8f27909a99ca967a08;p=openwrt%2Fstaging%2Fblogic.git mwifiex: remove unused tid_tbl_lock from mwifiex_tid_tbl ra_list_spinlock is used to protect struct mwifiex_wmm_desc and embedded structures such as ra_list. tid_tbl_lock while more fine grained, is not used but in one function. That function is not called reentrantly. To protect ra_list from concurrent modification ra_list_spinlock must be held. Signed-off-by: Andreas Fenkart Signed-off-by: Avinash Patil Signed-off-by: Bing Zhao Signed-off-by: John W. Linville --- diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c index 003c014d2176..42d7f0adf9bd 100644 --- a/drivers/net/wireless/mwifiex/init.c +++ b/drivers/net/wireless/mwifiex/init.c @@ -533,10 +533,8 @@ int mwifiex_init_lock_list(struct mwifiex_adapter *adapter) if (!adapter->priv[i]) continue; priv = adapter->priv[i]; - for (j = 0; j < MAX_NUM_TID; ++j) { + for (j = 0; j < MAX_NUM_TID; ++j) INIT_LIST_HEAD(&priv->wmm.tid_tbl_ptr[j].ra_list); - spin_lock_init(&priv->wmm.tid_tbl_ptr[j].tid_tbl_lock); - } INIT_LIST_HEAD(&priv->tx_ba_stream_tbl_ptr); INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr); INIT_LIST_HEAD(&priv->sta_list); diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index fef89fd6d77b..622b17f884f0 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h @@ -213,8 +213,6 @@ struct mwifiex_ra_list_tbl { struct mwifiex_tid_tbl { struct list_head ra_list; - /* spin lock for tid table */ - spinlock_t tid_tbl_lock; struct mwifiex_ra_list_tbl *ra_list_curr; }; diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c index 1b039ba0d55b..c1d848882fe2 100644 --- a/drivers/net/wireless/mwifiex/wmm.c +++ b/drivers/net/wireless/mwifiex/wmm.c @@ -927,12 +927,12 @@ mwifiex_wmm_get_highest_priolist_ptr(struct mwifiex_adapter *adapter, if (!tid_ptr->ra_list_curr) continue; - spin_lock_irqsave(&tid_ptr->tid_tbl_lock, - flags); + spin_lock_irqsave(&priv_tmp->wmm. + ra_list_spinlock, flags); is_list_empty = list_empty(&tid_ptr->ra_list); - spin_unlock_irqrestore(&tid_ptr->tid_tbl_lock, - flags); + spin_unlock_irqrestore(&priv_tmp->wmm. + ra_list_spinlock, flags); if (is_list_empty) continue;