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/rtl8180_dev.c | |
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/rtl8180_dev.c')
-rw-r--r-- | drivers/net/wireless/rtl8180_dev.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/rtl8180_dev.c b/drivers/net/wireless/rtl8180_dev.c index 4b7b032c194a..07f37b0ccf91 100644 --- a/drivers/net/wireless/rtl8180_dev.c +++ b/drivers/net/wireless/rtl8180_dev.c | |||
@@ -236,7 +236,8 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
236 | kmemdup(control, sizeof(*control), GFP_ATOMIC); | 236 | kmemdup(control, sizeof(*control), GFP_ATOMIC); |
237 | 237 | ||
238 | if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) | 238 | if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) |
239 | rts_duration = ieee80211_rts_duration(dev, priv->if_id, skb->len, control); | 239 | rts_duration = ieee80211_rts_duration(dev, priv->vif, skb->len, |
240 | control); | ||
240 | 241 | ||
241 | if (!priv->r8185) { | 242 | if (!priv->r8185) { |
242 | unsigned int remainder; | 243 | unsigned int remainder; |
@@ -638,6 +639,8 @@ static int rtl8180_add_interface(struct ieee80211_hw *dev, | |||
638 | return -EOPNOTSUPP; | 639 | return -EOPNOTSUPP; |
639 | } | 640 | } |
640 | 641 | ||
642 | priv->vif = conf->vif; | ||
643 | |||
641 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 644 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
642 | rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->MAC[0], | 645 | rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->MAC[0], |
643 | cpu_to_le32(*(u32 *)conf->mac_addr)); | 646 | cpu_to_le32(*(u32 *)conf->mac_addr)); |
@@ -653,6 +656,7 @@ static void rtl8180_remove_interface(struct ieee80211_hw *dev, | |||
653 | { | 656 | { |
654 | struct rtl8180_priv *priv = dev->priv; | 657 | struct rtl8180_priv *priv = dev->priv; |
655 | priv->mode = IEEE80211_IF_TYPE_MNTR; | 658 | priv->mode = IEEE80211_IF_TYPE_MNTR; |
659 | priv->vif = NULL; | ||
656 | } | 660 | } |
657 | 661 | ||
658 | static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | 662 | static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) |
@@ -664,14 +668,13 @@ static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | |||
664 | return 0; | 668 | return 0; |
665 | } | 669 | } |
666 | 670 | ||
667 | static int rtl8180_config_interface(struct ieee80211_hw *dev, int if_id, | 671 | static int rtl8180_config_interface(struct ieee80211_hw *dev, |
672 | struct ieee80211_vif *vif, | ||
668 | struct ieee80211_if_conf *conf) | 673 | struct ieee80211_if_conf *conf) |
669 | { | 674 | { |
670 | struct rtl8180_priv *priv = dev->priv; | 675 | struct rtl8180_priv *priv = dev->priv; |
671 | int i; | 676 | int i; |
672 | 677 | ||
673 | priv->if_id = if_id; | ||
674 | |||
675 | for (i = 0; i < ETH_ALEN; i++) | 678 | for (i = 0; i < ETH_ALEN; i++) |
676 | rtl818x_iowrite8(priv, &priv->map->BSSID[i], conf->bssid[i]); | 679 | rtl818x_iowrite8(priv, &priv->map->BSSID[i], conf->bssid[i]); |
677 | 680 | ||