aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
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/rt2x00
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/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h5
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 5fb9734ade85..94a8a7ce5382 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -372,7 +372,7 @@ struct interface {
372 * to us by the 80211 stack, and is used to request 372 * to us by the 80211 stack, and is used to request
373 * new beacons. 373 * new beacons.
374 */ 374 */
375 int id; 375 struct ieee80211_vif *id;
376 376
377 /* 377 /*
378 * Current working type (IEEE80211_IF_TYPE_*). 378 * Current working type (IEEE80211_IF_TYPE_*).
@@ -929,7 +929,8 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
929void rt2x00mac_remove_interface(struct ieee80211_hw *hw, 929void rt2x00mac_remove_interface(struct ieee80211_hw *hw,
930 struct ieee80211_if_init_conf *conf); 930 struct ieee80211_if_init_conf *conf);
931int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); 931int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf);
932int rt2x00mac_config_interface(struct ieee80211_hw *hw, int if_id, 932int rt2x00mac_config_interface(struct ieee80211_hw *hw,
933 struct ieee80211_vif *vif,
933 struct ieee80211_if_conf *conf); 934 struct ieee80211_if_conf *conf);
934int rt2x00mac_get_stats(struct ieee80211_hw *hw, 935int rt2x00mac_get_stats(struct ieee80211_hw *hw,
935 struct ieee80211_low_level_stats *stats); 936 struct ieee80211_low_level_stats *stats);
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index e99d167d7df6..1d67bcd46bcb 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -181,7 +181,7 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
181 is_interface_present(intf)) 181 is_interface_present(intf))
182 return -ENOBUFS; 182 return -ENOBUFS;
183 183
184 intf->id = conf->if_id; 184 intf->id = conf->vif;
185 intf->type = conf->type; 185 intf->type = conf->type;
186 if (conf->type == IEEE80211_IF_TYPE_AP) 186 if (conf->type == IEEE80211_IF_TYPE_AP)
187 memcpy(&intf->bssid, conf->mac_addr, ETH_ALEN); 187 memcpy(&intf->bssid, conf->mac_addr, ETH_ALEN);
@@ -265,7 +265,8 @@ int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
265} 265}
266EXPORT_SYMBOL_GPL(rt2x00mac_config); 266EXPORT_SYMBOL_GPL(rt2x00mac_config);
267 267
268int rt2x00mac_config_interface(struct ieee80211_hw *hw, int if_id, 268int rt2x00mac_config_interface(struct ieee80211_hw *hw,
269 struct ieee80211_vif *vif,
269 struct ieee80211_if_conf *conf) 270 struct ieee80211_if_conf *conf)
270{ 271{
271 struct rt2x00_dev *rt2x00dev = hw->priv; 272 struct rt2x00_dev *rt2x00dev = hw->priv;