diff options
author | Yogesh Ashok Powar <yogeshp@marvell.com> | 2012-01-11 23:06:11 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-01-24 14:21:12 -0500 |
commit | 9da9a3b29ba6a9a98e437f24576f13cbe259997b (patch) | |
tree | aa59108d6e5ef4ad27f82f6c5a3f3c77893ae43e /drivers | |
parent | cebcab9e18725d8249f607af787ee92107a665b7 (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.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/cfg80211.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/decl.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/init.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/main.c | 23 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/main.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_rx.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_tx.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/txrx.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/util.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/wmm.c | 3 |
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 | ||
104 | struct mwifiex_rxinfo { | 104 | struct 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 { | |||
110 | struct mwifiex_txinfo { | 111 | struct 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 | ||
116 | enum mwifiex_wmm_ac_e { | 118 | enum 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 | */ | ||
611 | struct mwifiex_private * | ||
612 | mwifiex_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 | ||
353 | struct mwifiex_private { | 353 | struct 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 | ||
887 | struct mwifiex_private *mwifiex_bss_index_to_priv(struct mwifiex_adapter | ||
888 | *adapter, u8 bss_index); | ||
889 | int mwifiex_init_shutdown_fw(struct mwifiex_private *priv, | 886 | int mwifiex_init_shutdown_fw(struct mwifiex_private *priv, |
890 | u32 func_init_shutdown); | 887 | u32 func_init_shutdown); |
891 | int mwifiex_add_card(void *, struct semaphore *, struct mwifiex_if_ops *, u8); | 888 | int 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; |