aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtl8180_dev.c
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/rtl8180_dev.c
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/rtl8180_dev.c')
-rw-r--r--drivers/net/wireless/rtl8180_dev.c11
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
658static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) 662static 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
667static int rtl8180_config_interface(struct ieee80211_hw *dev, int if_id, 671static 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