aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43legacy
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-12-18 19:31:26 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:09:36 -0500
commit32bfd35d4b63bd63de4bb0d791ef049c3c868726 (patch)
treec1c213a35a00bcbe71a2ecc6521e19dec66cf6eb /drivers/net/wireless/b43legacy
parentf653211197f3841f383fa9757ef8ce182c6cf627 (diff)
mac80211: dont use interface indices in drivers
This patch gets rid of the if_id stuff where possible in favour of a new per-virtual-interface structure "struct ieee80211_vif". This structure is located at the end of the per-interface structure and contains a variable length driver-use data area. This has two advantages: * removes the need to look up interfaces by if_id, this is better for working with network namespaces and performance * allows drivers to store and retrieve per-interface data without having to allocate own lists/hash tables Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43legacy')
-rw-r--r--drivers/net/wireless/b43legacy/b43legacy.h5
-rw-r--r--drivers/net/wireless/b43legacy/main.c13
-rw-r--r--drivers/net/wireless/b43legacy/xmit.c6
3 files changed, 11 insertions, 13 deletions
diff --git a/drivers/net/wireless/b43legacy/b43legacy.h b/drivers/net/wireless/b43legacy/b43legacy.h
index e4de437b7896..8352a4e1cfc9 100644
--- a/drivers/net/wireless/b43legacy/b43legacy.h
+++ b/drivers/net/wireless/b43legacy/b43legacy.h
@@ -577,10 +577,7 @@ struct b43legacy_wl {
577 * at a time. General information about this interface follows. 577 * at a time. General information about this interface follows.
578 */ 578 */
579 579
580 /* Opaque ID of the operating interface from the ieee80211 580 struct ieee80211_vif *vif;
581 * subsystem. Do not modify.
582 */
583 int if_id;
584 /* MAC address (can be NULL). */ 581 /* MAC address (can be NULL). */
585 u8 mac_addr[ETH_ALEN]; 582 u8 mac_addr[ETH_ALEN];
586 /* Current BSSID (can be NULL). */ 583 /* Current BSSID (can be NULL). */
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
index 575fd9a5874d..2d5735ddad8c 100644
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -976,7 +976,7 @@ static void b43legacy_write_probe_resp_plcp(struct b43legacy_wldev *dev,
976 plcp.data = 0; 976 plcp.data = 0;
977 b43legacy_generate_plcp_hdr(&plcp, size + FCS_LEN, rate); 977 b43legacy_generate_plcp_hdr(&plcp, size + FCS_LEN, rate);
978 dur = ieee80211_generic_frame_duration(dev->wl->hw, 978 dur = ieee80211_generic_frame_duration(dev->wl->hw,
979 dev->wl->if_id, 979 dev->wl->vif,
980 size, 980 size,
981 B43legacy_RATE_TO_100KBPS(rate)); 981 B43legacy_RATE_TO_100KBPS(rate));
982 /* Write PLCP in two parts and timing for packet transfer */ 982 /* Write PLCP in two parts and timing for packet transfer */
@@ -1042,7 +1042,7 @@ static u8 *b43legacy_generate_probe_resp(struct b43legacy_wldev *dev,
1042 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | 1042 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
1043 IEEE80211_STYPE_PROBE_RESP); 1043 IEEE80211_STYPE_PROBE_RESP);
1044 dur = ieee80211_generic_frame_duration(dev->wl->hw, 1044 dur = ieee80211_generic_frame_duration(dev->wl->hw,
1045 dev->wl->if_id, 1045 dev->wl->vif,
1046 *dest_size, 1046 *dest_size,
1047 B43legacy_RATE_TO_100KBPS(rate)); 1047 B43legacy_RATE_TO_100KBPS(rate));
1048 hdr->duration_id = dur; 1048 hdr->duration_id = dur;
@@ -2647,7 +2647,7 @@ static void b43legacy_op_configure_filter(struct ieee80211_hw *hw,
2647} 2647}
2648 2648
2649static int b43legacy_op_config_interface(struct ieee80211_hw *hw, 2649static int b43legacy_op_config_interface(struct ieee80211_hw *hw,
2650 int if_id, 2650 struct ieee80211_vif *vif,
2651 struct ieee80211_if_conf *conf) 2651 struct ieee80211_if_conf *conf)
2652{ 2652{
2653 struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); 2653 struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw);
@@ -2658,7 +2658,7 @@ static int b43legacy_op_config_interface(struct ieee80211_hw *hw,
2658 return -ENODEV; 2658 return -ENODEV;
2659 mutex_lock(&wl->mutex); 2659 mutex_lock(&wl->mutex);
2660 spin_lock_irqsave(&wl->irq_lock, flags); 2660 spin_lock_irqsave(&wl->irq_lock, flags);
2661 B43legacy_WARN_ON(wl->if_id != if_id); 2661 B43legacy_WARN_ON(wl->vif != vif);
2662 if (conf->bssid) 2662 if (conf->bssid)
2663 memcpy(wl->bssid, conf->bssid, ETH_ALEN); 2663 memcpy(wl->bssid, conf->bssid, ETH_ALEN);
2664 else 2664 else
@@ -3177,7 +3177,7 @@ static int b43legacy_op_add_interface(struct ieee80211_hw *hw,
3177 3177
3178 dev = wl->current_dev; 3178 dev = wl->current_dev;
3179 wl->operating = 1; 3179 wl->operating = 1;
3180 wl->if_id = conf->if_id; 3180 wl->vif = conf->vif;
3181 wl->if_type = conf->type; 3181 wl->if_type = conf->type;
3182 memcpy(wl->mac_addr, conf->mac_addr, ETH_ALEN); 3182 memcpy(wl->mac_addr, conf->mac_addr, ETH_ALEN);
3183 3183
@@ -3205,7 +3205,8 @@ static void b43legacy_op_remove_interface(struct ieee80211_hw *hw,
3205 mutex_lock(&wl->mutex); 3205 mutex_lock(&wl->mutex);
3206 3206
3207 B43legacy_WARN_ON(!wl->operating); 3207 B43legacy_WARN_ON(!wl->operating);
3208 B43legacy_WARN_ON(wl->if_id != conf->if_id); 3208 B43legacy_WARN_ON(wl->vif != conf->vif);
3209 wl->vif = NULL;
3209 3210
3210 wl->operating = 0; 3211 wl->operating = 0;
3211 3212
diff --git a/drivers/net/wireless/b43legacy/xmit.c b/drivers/net/wireless/b43legacy/xmit.c
index fa095d43237f..e20c552442d5 100644
--- a/drivers/net/wireless/b43legacy/xmit.c
+++ b/drivers/net/wireless/b43legacy/xmit.c
@@ -223,7 +223,7 @@ static void generate_txhdr_fw3(struct b43legacy_wldev *dev,
223 } else { 223 } else {
224 int fbrate_base100kbps = B43legacy_RATE_TO_100KBPS(rate_fb); 224 int fbrate_base100kbps = B43legacy_RATE_TO_100KBPS(rate_fb);
225 txhdr->dur_fb = ieee80211_generic_frame_duration(dev->wl->hw, 225 txhdr->dur_fb = ieee80211_generic_frame_duration(dev->wl->hw,
226 dev->wl->if_id, 226 txctl->vif,
227 fragment_len, 227 fragment_len,
228 fbrate_base100kbps); 228 fbrate_base100kbps);
229 } 229 }
@@ -312,7 +312,7 @@ static void generate_txhdr_fw3(struct b43legacy_wldev *dev,
312 312
313 if (txctl->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) { 313 if (txctl->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) {
314 ieee80211_ctstoself_get(dev->wl->hw, 314 ieee80211_ctstoself_get(dev->wl->hw,
315 dev->wl->if_id, 315 txctl->vif,
316 fragment_data, 316 fragment_data,
317 fragment_len, txctl, 317 fragment_len, txctl,
318 (struct ieee80211_cts *) 318 (struct ieee80211_cts *)
@@ -321,7 +321,7 @@ static void generate_txhdr_fw3(struct b43legacy_wldev *dev,
321 len = sizeof(struct ieee80211_cts); 321 len = sizeof(struct ieee80211_cts);
322 } else { 322 } else {
323 ieee80211_rts_get(dev->wl->hw, 323 ieee80211_rts_get(dev->wl->hw,
324 dev->wl->if_id, 324 txctl->vif,
325 fragment_data, fragment_len, txctl, 325 fragment_data, fragment_len, txctl,
326 (struct ieee80211_rts *) 326 (struct ieee80211_rts *)
327 (txhdr->rts_frame)); 327 (txhdr->rts_frame));