diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-18 19:31:26 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:09:36 -0500 |
commit | 32bfd35d4b63bd63de4bb0d791ef049c3c868726 (patch) | |
tree | c1c213a35a00bcbe71a2ecc6521e19dec66cf6eb /drivers/net/wireless/rt2x00 | |
parent | f653211197f3841f383fa9757ef8ce182c6cf627 (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.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 5 |
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, | |||
929 | void rt2x00mac_remove_interface(struct ieee80211_hw *hw, | 929 | void rt2x00mac_remove_interface(struct ieee80211_hw *hw, |
930 | struct ieee80211_if_init_conf *conf); | 930 | struct ieee80211_if_init_conf *conf); |
931 | int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); | 931 | int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); |
932 | int rt2x00mac_config_interface(struct ieee80211_hw *hw, int if_id, | 932 | int rt2x00mac_config_interface(struct ieee80211_hw *hw, |
933 | struct ieee80211_vif *vif, | ||
933 | struct ieee80211_if_conf *conf); | 934 | struct ieee80211_if_conf *conf); |
934 | int rt2x00mac_get_stats(struct ieee80211_hw *hw, | 935 | int 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 | } |
266 | EXPORT_SYMBOL_GPL(rt2x00mac_config); | 266 | EXPORT_SYMBOL_GPL(rt2x00mac_config); |
267 | 267 | ||
268 | int rt2x00mac_config_interface(struct ieee80211_hw *hw, int if_id, | 268 | int 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; |