aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorYogesh Ashok Powar <yogeshp@marvell.com>2012-01-11 23:06:11 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-01-24 14:21:12 -0500
commit9da9a3b29ba6a9a98e437f24576f13cbe259997b (patch)
treeaa59108d6e5ef4ad27f82f6c5a3f3c77893ae43e /drivers
parentcebcab9e18725d8249f607af787ee92107a665b7 (diff)
mwifiex: use bss_type and bss_num to retrieve priv
Current implementation, for retrieving priv from adapter, uses bss_index. In multi interface environment supporting different types, bss_index may not be unique. Use bss_type along with bss_num to retrieve the priv. bss_index is removed with this change. Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com> Signed-off-by: Kiran Divekar <dkiran@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/mwifiex/11n_aggr.c3
-rw-r--r--drivers/net/wireless/mwifiex/cfg80211.c1
-rw-r--r--drivers/net/wireless/mwifiex/cmdevt.c3
-rw-r--r--drivers/net/wireless/mwifiex/decl.h6
-rw-r--r--drivers/net/wireless/mwifiex/init.c5
-rw-r--r--drivers/net/wireless/mwifiex/main.c23
-rw-r--r--drivers/net/wireless/mwifiex/main.h3
-rw-r--r--drivers/net/wireless/mwifiex/sta_rx.c6
-rw-r--r--drivers/net/wireless/mwifiex/sta_tx.c3
-rw-r--r--drivers/net/wireless/mwifiex/txrx.c6
-rw-r--r--drivers/net/wireless/mwifiex/util.c3
-rw-r--r--drivers/net/wireless/mwifiex/wmm.c3
12 files changed, 31 insertions, 34 deletions
diff --git a/drivers/net/wireless/mwifiex/11n_aggr.c b/drivers/net/wireless/mwifiex/11n_aggr.c
index 079e5532e686..ea6832dc6677 100644
--- a/drivers/net/wireless/mwifiex/11n_aggr.c
+++ b/drivers/net/wireless/mwifiex/11n_aggr.c
@@ -182,7 +182,8 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
182 skb_reserve(skb_aggr, headroom + sizeof(struct txpd)); 182 skb_reserve(skb_aggr, headroom + sizeof(struct txpd));
183 tx_info_aggr = MWIFIEX_SKB_TXCB(skb_aggr); 183 tx_info_aggr = MWIFIEX_SKB_TXCB(skb_aggr);
184 184
185 tx_info_aggr->bss_index = tx_info_src->bss_index; 185 tx_info_aggr->bss_type = tx_info_src->bss_type;
186 tx_info_aggr->bss_num = tx_info_src->bss_num;
186 skb_aggr->priority = skb_src->priority; 187 skb_aggr->priority = skb_src->priority;
187 188
188 do { 189 do {
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index c3b6c4652cd6..36f67da8fa4f 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -1217,7 +1217,6 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
1217 priv->frame_type = MWIFIEX_DATA_FRAME_TYPE_ETH_II; 1217 priv->frame_type = MWIFIEX_DATA_FRAME_TYPE_ETH_II;
1218 priv->bss_priority = 0; 1218 priv->bss_priority = 0;
1219 priv->bss_role = MWIFIEX_BSS_ROLE_STA; 1219 priv->bss_role = MWIFIEX_BSS_ROLE_STA;
1220 priv->bss_index = 0;
1221 priv->bss_num = 0; 1220 priv->bss_num = 0;
1222 1221
1223 break; 1222 break;
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
index 6e0a3eaecf70..6623db69e157 100644
--- a/drivers/net/wireless/mwifiex/cmdevt.c
+++ b/drivers/net/wireless/mwifiex/cmdevt.c
@@ -391,7 +391,8 @@ int mwifiex_process_event(struct mwifiex_adapter *adapter)
391 391
392 if (skb) { 392 if (skb) {
393 rx_info = MWIFIEX_SKB_RXCB(skb); 393 rx_info = MWIFIEX_SKB_RXCB(skb);
394 rx_info->bss_index = priv->bss_index; 394 rx_info->bss_num = priv->bss_num;
395 rx_info->bss_type = priv->bss_type;
395 } 396 }
396 397
397 if (eventcause != EVENT_PS_SLEEP && eventcause != EVENT_PS_AWAKE) { 398 if (eventcause != EVENT_PS_SLEEP && eventcause != EVENT_PS_AWAKE) {
diff --git a/drivers/net/wireless/mwifiex/decl.h b/drivers/net/wireless/mwifiex/decl.h
index ae17ce02a3d0..3735c775495c 100644
--- a/drivers/net/wireless/mwifiex/decl.h
+++ b/drivers/net/wireless/mwifiex/decl.h
@@ -102,7 +102,8 @@ struct mwifiex_wait_queue {
102}; 102};
103 103
104struct mwifiex_rxinfo { 104struct mwifiex_rxinfo {
105 u8 bss_index; 105 u8 bss_num;
106 u8 bss_type;
106 struct sk_buff *parent; 107 struct sk_buff *parent;
107 u8 use_count; 108 u8 use_count;
108}; 109};
@@ -110,7 +111,8 @@ struct mwifiex_rxinfo {
110struct mwifiex_txinfo { 111struct mwifiex_txinfo {
111 u32 status_code; 112 u32 status_code;
112 u8 flags; 113 u8 flags;
113 u8 bss_index; 114 u8 bss_num;
115 u8 bss_type;
114}; 116};
115 117
116enum mwifiex_wmm_ac_e { 118enum mwifiex_wmm_ac_e {
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
index e05b417a3fae..e13b6d99171a 100644
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
@@ -526,8 +526,9 @@ static void mwifiex_delete_bss_prio_tbl(struct mwifiex_private *priv)
526 cur = &adapter->bss_prio_tbl[i].bss_prio_cur; 526 cur = &adapter->bss_prio_tbl[i].bss_prio_cur;
527 lock = &adapter->bss_prio_tbl[i].bss_prio_lock; 527 lock = &adapter->bss_prio_tbl[i].bss_prio_lock;
528 dev_dbg(adapter->dev, "info: delete BSS priority table," 528 dev_dbg(adapter->dev, "info: delete BSS priority table,"
529 " index = %d, i = %d, head = %p, cur = %p\n", 529 " bss_type = %d, bss_num = %d, i = %d,"
530 priv->bss_index, i, head, *cur); 530 " head = %p, cur = %p\n",
531 priv->bss_type, priv->bss_num, i, head, *cur);
531 if (*cur) { 532 if (*cur) {
532 spin_lock_irqsave(lock, flags); 533 spin_lock_irqsave(lock, flags);
533 if (list_empty(head)) { 534 if (list_empty(head)) {
diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
index 84be196188cc..1a0775d19ade 100644
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
@@ -424,8 +424,8 @@ mwifiex_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
424 struct sk_buff *new_skb; 424 struct sk_buff *new_skb;
425 struct mwifiex_txinfo *tx_info; 425 struct mwifiex_txinfo *tx_info;
426 426
427 dev_dbg(priv->adapter->dev, "data: %lu BSS(%d): Data <= kernel\n", 427 dev_dbg(priv->adapter->dev, "data: %lu BSS(%d-%d): Data <= kernel\n",
428 jiffies, priv->bss_index); 428 jiffies, priv->bss_type, priv->bss_num);
429 429
430 if (priv->adapter->surprise_removed) { 430 if (priv->adapter->surprise_removed) {
431 kfree_skb(skb); 431 kfree_skb(skb);
@@ -458,7 +458,8 @@ mwifiex_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
458 } 458 }
459 459
460 tx_info = MWIFIEX_SKB_TXCB(skb); 460 tx_info = MWIFIEX_SKB_TXCB(skb);
461 tx_info->bss_index = priv->bss_index; 461 tx_info->bss_num = priv->bss_num;
462 tx_info->bss_type = priv->bss_type;
462 mwifiex_fill_buffer(skb); 463 mwifiex_fill_buffer(skb);
463 464
464 mwifiex_wmm_add_buf_txqueue(priv->adapter, skb); 465 mwifiex_wmm_add_buf_txqueue(priv->adapter, skb);
@@ -531,8 +532,8 @@ mwifiex_tx_timeout(struct net_device *dev)
531{ 532{
532 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); 533 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
533 534
534 dev_err(priv->adapter->dev, "%lu : Tx timeout, bss_index=%d\n", 535 dev_err(priv->adapter->dev, "%lu : Tx timeout, bss_type-num = %d-%d\n",
535 jiffies, priv->bss_index); 536 jiffies, priv->bss_type, priv->bss_num);
536 mwifiex_set_trans_start(dev); 537 mwifiex_set_trans_start(dev);
537 priv->num_tx_timeout++; 538 priv->num_tx_timeout++;
538} 539}
@@ -605,18 +606,6 @@ int is_command_pending(struct mwifiex_adapter *adapter)
605} 606}
606 607
607/* 608/*
608 * This function returns the correct private structure pointer based
609 * upon the BSS number.
610 */
611struct mwifiex_private *
612mwifiex_bss_index_to_priv(struct mwifiex_adapter *adapter, u8 bss_index)
613{
614 if (!adapter || (bss_index >= adapter->priv_num))
615 return NULL;
616 return adapter->priv[bss_index];
617}
618
619/*
620 * This is the main work queue function. 609 * This is the main work queue function.
621 * 610 *
622 * It handles the main process, which in turn handles the complete 611 * It handles the main process, which in turn handles the complete
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
index 3186aa437f42..6712ea89ef78 100644
--- a/drivers/net/wireless/mwifiex/main.h
+++ b/drivers/net/wireless/mwifiex/main.h
@@ -352,7 +352,6 @@ struct mwifiex_private;
352 352
353struct mwifiex_private { 353struct mwifiex_private {
354 struct mwifiex_adapter *adapter; 354 struct mwifiex_adapter *adapter;
355 u8 bss_index;
356 u8 bss_type; 355 u8 bss_type;
357 u8 bss_role; 356 u8 bss_role;
358 u8 bss_priority; 357 u8 bss_priority;
@@ -884,8 +883,6 @@ mwifiex_netdev_get_priv(struct net_device *dev)
884 return (struct mwifiex_private *) (*(unsigned long *) netdev_priv(dev)); 883 return (struct mwifiex_private *) (*(unsigned long *) netdev_priv(dev));
885} 884}
886 885
887struct mwifiex_private *mwifiex_bss_index_to_priv(struct mwifiex_adapter
888 *adapter, u8 bss_index);
889int mwifiex_init_shutdown_fw(struct mwifiex_private *priv, 886int mwifiex_init_shutdown_fw(struct mwifiex_private *priv,
890 u32 func_init_shutdown); 887 u32 func_init_shutdown);
891int mwifiex_add_card(void *, struct semaphore *, struct mwifiex_if_ops *, u8); 888int mwifiex_add_card(void *, struct semaphore *, struct mwifiex_if_ops *, u8);
diff --git a/drivers/net/wireless/mwifiex/sta_rx.c b/drivers/net/wireless/mwifiex/sta_rx.c
index 5e1ef7e5da4f..d7a5d7616f22 100644
--- a/drivers/net/wireless/mwifiex/sta_rx.c
+++ b/drivers/net/wireless/mwifiex/sta_rx.c
@@ -43,7 +43,8 @@ int mwifiex_process_rx_packet(struct mwifiex_adapter *adapter,
43{ 43{
44 int ret; 44 int ret;
45 struct mwifiex_rxinfo *rx_info = MWIFIEX_SKB_RXCB(skb); 45 struct mwifiex_rxinfo *rx_info = MWIFIEX_SKB_RXCB(skb);
46 struct mwifiex_private *priv = adapter->priv[rx_info->bss_index]; 46 struct mwifiex_private *priv = mwifiex_get_priv_by_id(adapter,
47 rx_info->bss_num, rx_info->bss_type);
47 struct rx_packet_hdr *rx_pkt_hdr; 48 struct rx_packet_hdr *rx_pkt_hdr;
48 struct rxpd *local_rx_pd; 49 struct rxpd *local_rx_pd;
49 int hdr_chop; 50 int hdr_chop;
@@ -124,7 +125,8 @@ int mwifiex_process_sta_rx_packet(struct mwifiex_adapter *adapter,
124 struct rx_packet_hdr *rx_pkt_hdr; 125 struct rx_packet_hdr *rx_pkt_hdr;
125 u8 ta[ETH_ALEN]; 126 u8 ta[ETH_ALEN];
126 u16 rx_pkt_type; 127 u16 rx_pkt_type;
127 struct mwifiex_private *priv = adapter->priv[rx_info->bss_index]; 128 struct mwifiex_private *priv = mwifiex_get_priv_by_id(adapter,
129 rx_info->bss_num, rx_info->bss_type);
128 130
129 if (!priv) 131 if (!priv)
130 return -1; 132 return -1;
diff --git a/drivers/net/wireless/mwifiex/sta_tx.c b/drivers/net/wireless/mwifiex/sta_tx.c
index d97facd70e88..94d31a94620a 100644
--- a/drivers/net/wireless/mwifiex/sta_tx.c
+++ b/drivers/net/wireless/mwifiex/sta_tx.c
@@ -136,7 +136,8 @@ int mwifiex_send_null_packet(struct mwifiex_private *priv, u8 flags)
136 return -1; 136 return -1;
137 137
138 tx_info = MWIFIEX_SKB_TXCB(skb); 138 tx_info = MWIFIEX_SKB_TXCB(skb);
139 tx_info->bss_index = priv->bss_index; 139 tx_info->bss_num = priv->bss_num;
140 tx_info->bss_type = priv->bss_type;
140 skb_reserve(skb, sizeof(struct txpd) + INTF_HEADER_LEN); 141 skb_reserve(skb, sizeof(struct txpd) + INTF_HEADER_LEN);
141 skb_push(skb, sizeof(struct txpd)); 142 skb_push(skb, sizeof(struct txpd));
142 143
diff --git a/drivers/net/wireless/mwifiex/txrx.c b/drivers/net/wireless/mwifiex/txrx.c
index d9274a1b77ac..9a6eacc9d6f9 100644
--- a/drivers/net/wireless/mwifiex/txrx.c
+++ b/drivers/net/wireless/mwifiex/txrx.c
@@ -48,7 +48,8 @@ int mwifiex_handle_rx_packet(struct mwifiex_adapter *adapter,
48 if (!priv) 48 if (!priv)
49 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); 49 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
50 50
51 rx_info->bss_index = priv->bss_index; 51 rx_info->bss_num = priv->bss_num;
52 rx_info->bss_type = priv->bss_type;
52 53
53 return mwifiex_process_sta_rx_packet(adapter, skb); 54 return mwifiex_process_sta_rx_packet(adapter, skb);
54} 55}
@@ -130,7 +131,8 @@ int mwifiex_write_data_complete(struct mwifiex_adapter *adapter,
130 return 0; 131 return 0;
131 132
132 tx_info = MWIFIEX_SKB_TXCB(skb); 133 tx_info = MWIFIEX_SKB_TXCB(skb);
133 priv = mwifiex_bss_index_to_priv(adapter, tx_info->bss_index); 134 priv = mwifiex_get_priv_by_id(adapter, tx_info->bss_num,
135 tx_info->bss_type);
134 if (!priv) 136 if (!priv)
135 goto done; 137 goto done;
136 138
diff --git a/drivers/net/wireless/mwifiex/util.c b/drivers/net/wireless/mwifiex/util.c
index 06976f517f66..9c48f37069f7 100644
--- a/drivers/net/wireless/mwifiex/util.c
+++ b/drivers/net/wireless/mwifiex/util.c
@@ -159,7 +159,8 @@ int mwifiex_recv_packet(struct mwifiex_adapter *adapter, struct sk_buff *skb)
159 return -1; 159 return -1;
160 160
161 rx_info = MWIFIEX_SKB_RXCB(skb); 161 rx_info = MWIFIEX_SKB_RXCB(skb);
162 priv = mwifiex_bss_index_to_priv(adapter, rx_info->bss_index); 162 priv = mwifiex_get_priv_by_id(adapter, rx_info->bss_num,
163 rx_info->bss_type);
163 if (!priv) 164 if (!priv)
164 return -1; 165 return -1;
165 166
diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c
index 6c239c3c8249..e6a2cb127d2b 100644
--- a/drivers/net/wireless/mwifiex/wmm.c
+++ b/drivers/net/wireless/mwifiex/wmm.c
@@ -603,7 +603,8 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_adapter *adapter,
603 struct sk_buff *skb) 603 struct sk_buff *skb)
604{ 604{
605 struct mwifiex_txinfo *tx_info = MWIFIEX_SKB_TXCB(skb); 605 struct mwifiex_txinfo *tx_info = MWIFIEX_SKB_TXCB(skb);
606 struct mwifiex_private *priv = adapter->priv[tx_info->bss_index]; 606 struct mwifiex_private *priv = mwifiex_get_priv_by_id(adapter,
607 tx_info->bss_num, tx_info->bss_type);
607 u32 tid; 608 u32 tid;
608 struct mwifiex_ra_list_tbl *ra_list; 609 struct mwifiex_ra_list_tbl *ra_list;
609 u8 ra[ETH_ALEN], tid_down; 610 u8 ra[ETH_ALEN], tid_down;