Port new net_device_ops changes, this ports work from:
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Wed, 4 Feb 2009 08:53:05 +0000 (00:53 -0800)
committerLuis R. Rodriguez <lrodriguez@atheros.com>
Wed, 4 Feb 2009 08:53:05 +0000 (00:53 -0800)
    mac80211: convert master interface to netdev_ops
    mac80211: convert to net_device_ops

2.6.27 and 2.6.28 get the old stuff.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
compat/compat.diff

index 2e85d535547d1c1c6726e7234cc78f8a99212f1b..0efa60305349c943c4af52baf4d4eb3b95afb9b7 100644 (file)
@@ -180,27 +180,9 @@ index a0c860f..9c6f214 100644
 -      zd_chip_control_leds(&mac->chip, LED_OFF);
 +      zd_chip_control_leds(&mac->chip, LED_OFF_ZD);
  }
---- a/net/mac80211/main.c      2009-01-23 12:56:18.000000000 -0800
-+++ b/net/mac80211/main.c      2009-01-23 12:56:24.000000000 -0800
-@@ -485,6 +485,7 @@
-               return;
-       }
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28))
-       if (!test_sta_flags(sta, WLAN_STA_PS) && !skb->requeue) {
-               /* Software retry the packet once */
-               skb->requeue = 1;
-@@ -492,6 +493,7 @@
-               dev_queue_xmit(skb);
-               return;
-       }
-+#endif
- #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       if (net_ratelimit())
---- a/net/mac80211/rx.c        2009-01-15 16:35:33.000000000 -0800
-+++ b/net/mac80211/rx.c        2009-01-15 16:35:33.000000000 -0800
-@@ -780,12 +780,17 @@
+--- a/net/mac80211/rx.c        2009-02-04 00:21:05.000000000 -0800
++++ b/net/mac80211/rx.c        2009-02-04 00:20:41.000000000 -0800
+@@ -771,12 +771,17 @@
  
        /* Send all buffered frames to the station */
        while ((skb = skb_dequeue(&sta->tx_filtered)) != NULL) {
@@ -218,7 +200,7 @@ index a0c860f..9c6f214 100644
                sent++;
  #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
                printk(KERN_DEBUG "%s: STA %pM aid %d send PS frame "
-@@ -794,6 +799,9 @@
+@@ -785,6 +790,9 @@
  #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
                skb->requeue = 1;
                dev_queue_xmit(skb);
@@ -317,3 +299,120 @@ index a0c860f..9c6f214 100644
        dev->irq = sdev->irq;
        SET_ETHTOOL_OPS(dev, &b44_ethtool_ops);
  
+--- a/net/mac80211/iface.c     2009-02-04 00:14:56.000000000 -0800
++++ b/net/mac80211/iface.c     2009-02-04 00:19:28.000000000 -0800
+@@ -658,6 +658,7 @@
+       WARN_ON(flushed);
+ }
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ static const struct net_device_ops ieee80211_dataif_ops = {
+       .ndo_open               = ieee80211_open,
+       .ndo_stop               = ieee80211_stop,
+@@ -677,11 +678,22 @@
+       .ndo_change_mtu         = ieee80211_change_mtu,
+       .ndo_set_mac_address    = eth_mac_addr,
+ };
++#endif
+ static void ieee80211_if_setup(struct net_device *dev)
+ {
+       ether_setup(dev);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+       dev->netdev_ops = &ieee80211_dataif_ops;
++#else
++      dev->hard_start_xmit = ieee80211_subif_start_xmit;
++      dev->set_multicast_list = ieee80211_set_multicast_list;
++      dev->change_mtu = ieee80211_change_mtu;
++      dev->open = ieee80211_open;
++      dev->stop = ieee80211_stop;
++      /* we will validate the address ourselves in ->open */
++      dev->validate_addr = NULL;
++#endif
+       dev->wireless_handlers = &ieee80211_iw_handler_def;
+       dev->destructor = free_netdev;
+ }
+@@ -697,7 +709,11 @@
+       /* and set some type-dependent values */
+       sdata->vif.type = type;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+       sdata->dev->netdev_ops = &ieee80211_dataif_ops;
++#else
++      sdata->dev->hard_start_xmit = ieee80211_subif_start_xmit;
++#endif
+       sdata->wdev.iftype = type;
+       /* only monitor differs */
+@@ -718,7 +734,11 @@
+               break;
+       case NL80211_IFTYPE_MONITOR:
+               sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+               sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
++#else
++              sdata->dev->hard_start_xmit = ieee80211_monitor_start_xmit;
++#endif
+               sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
+                                     MONITOR_FLAG_OTHER_BSS;
+               break;
+@@ -824,6 +844,10 @@
+       if (ret)
+               goto fail;
++#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28))
++      ndev->uninit = ieee80211_teardown_sdata;
++#endif
++
+       if (ieee80211_vif_is_mesh(&sdata->vif) &&
+           params && params->mesh_id_len)
+               ieee80211_sdata_set_mesh_id(sdata,
+--- a/net/mac80211/main.c      2009-02-04 00:10:33.000000000 -0800
++++ b/net/mac80211/main.c      2009-02-04 00:07:50.000000000 -0800
+@@ -485,6 +485,7 @@
+               return;
+       }
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28))
+       if (!test_sta_flags(sta, WLAN_STA_PS) && !skb->requeue) {
+               /* Software retry the packet once */
+               skb->requeue = 1;
+@@ -492,6 +493,7 @@
+               dev_queue_xmit(skb);
+               return;
+       }
++#endif
+ #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
+       if (net_ratelimit())
+@@ -791,6 +793,7 @@
+ }
+ EXPORT_SYMBOL(ieee80211_alloc_hw);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ static const struct net_device_ops ieee80211_master_ops = {
+       .ndo_start_xmit = ieee80211_master_start_xmit,
+       .ndo_open = ieee80211_master_open,
+@@ -798,12 +801,22 @@
+       .ndo_set_multicast_list = ieee80211_master_set_multicast_list,
+       .ndo_select_queue = ieee80211_select_queue,
+ };
++#endif
+ static void ieee80211_master_setup(struct net_device *mdev)
+ {
+       mdev->type = ARPHRD_IEEE80211;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+       mdev->netdev_ops = &ieee80211_master_ops;
+       mdev->header_ops = &ieee80211_header_ops;
++#else
++      mdev->hard_start_xmit = ieee80211_master_start_xmit;
++      mdev->open = ieee80211_master_open;
++      mdev->stop = ieee80211_master_stop;
++      mdev->header_ops = &ieee80211_header_ops;
++      mdev->set_multicast_list = ieee80211_master_set_multicast_list;
++      mdev->select_queue = ieee80211_select_queue;
++#endif
+       mdev->tx_queue_len = 1000;
+       mdev->addr_len = ETH_ALEN;
+ }