]> err.no Git - linux-2.6/blobdiff - drivers/net/wireless/rtl8180_dev.c
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
[linux-2.6] / drivers / net / wireless / rtl8180_dev.c
index 4b7b032c194a1dec59c6ecbd7d7dcd090c31131f..5e9a8ace0d815b4a660dc19aaa953e66aa6864e9 100644 (file)
@@ -36,6 +36,7 @@ MODULE_LICENSE("GPL");
 static struct pci_device_id rtl8180_table[] __devinitdata = {
        /* rtl8185 */
        { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8185) },
+       { PCI_DEVICE(PCI_VENDOR_ID_BELKIN, 0x700f) },
        { PCI_DEVICE(PCI_VENDOR_ID_BELKIN, 0x701f) },
 
        /* rtl8180 */
@@ -134,13 +135,15 @@ static void rtl8180_handle_tx(struct ieee80211_hw *dev, unsigned int prio)
        while (skb_queue_len(&ring->queue)) {
                struct rtl8180_tx_desc *entry = &ring->desc[ring->idx];
                struct sk_buff *skb;
-               struct ieee80211_tx_status status = { {0} };
+               struct ieee80211_tx_status status;
                struct ieee80211_tx_control *control;
                u32 flags = le32_to_cpu(entry->flags);
 
                if (flags & RTL8180_TX_DESC_FLAG_OWN)
                        return;
 
+               memset(&status, 0, sizeof(status));
+
                ring->idx = (ring->idx + 1) % ring->entries;
                skb = __skb_dequeue(&ring->queue);
                pci_unmap_single(priv->pdev, le32_to_cpu(entry->tx_buf),
@@ -236,7 +239,8 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb,
                kmemdup(control, sizeof(*control), GFP_ATOMIC);
 
        if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
-               rts_duration = ieee80211_rts_duration(dev, priv->if_id, skb->len, control);
+               rts_duration = ieee80211_rts_duration(dev, priv->vif, skb->len,
+                                                     control);
 
        if (!priv->r8185) {
                unsigned int remainder;
@@ -638,6 +642,8 @@ static int rtl8180_add_interface(struct ieee80211_hw *dev,
                return -EOPNOTSUPP;
        }
 
+       priv->vif = conf->vif;
+
        rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
        rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->MAC[0],
                          cpu_to_le32(*(u32 *)conf->mac_addr));
@@ -653,6 +659,7 @@ static void rtl8180_remove_interface(struct ieee80211_hw *dev,
 {
        struct rtl8180_priv *priv = dev->priv;
        priv->mode = IEEE80211_IF_TYPE_MNTR;
+       priv->vif = NULL;
 }
 
 static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
@@ -664,14 +671,13 @@ static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
        return 0;
 }
 
-static int rtl8180_config_interface(struct ieee80211_hw *dev, int if_id,
+static int rtl8180_config_interface(struct ieee80211_hw *dev,
+                                   struct ieee80211_vif *vif,
                                    struct ieee80211_if_conf *conf)
 {
        struct rtl8180_priv *priv = dev->priv;
        int i;
 
-       priv->if_id = if_id;
-
        for (i = 0; i < ETH_ALEN; i++)
                rtl818x_iowrite8(priv, &priv->map->BSSID[i], conf->bssid[i]);