Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d9268fb9a124d067cf93710a85bb6c158d131c97
Commit:     d9268fb9a124d067cf93710a85bb6c158d131c97
Parent:     198cefb9320ea0aa1be43a93b398435447583081
Author:     David Woodhouse <[EMAIL PROTECTED]>
AuthorDate: Sun Dec 9 16:22:21 2007 -0500
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 15:06:27 2008 -0800

    libertas: stop using ieee80211 for radiotap device
    
    There seems to be no point in doing it as an ieee80211 device instead of
    a normal netdev, and when we override its ->priv and then call
    free_ieee80211() it has a distressing tendency to crash horribly.
    
    Signed-off-by: David Woodhouse <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 drivers/net/wireless/libertas/dev.h  |    2 -
 drivers/net/wireless/libertas/main.c |   36 ++++++++++++++-------------------
 2 files changed, 15 insertions(+), 23 deletions(-)

diff --git a/drivers/net/wireless/libertas/dev.h 
b/drivers/net/wireless/libertas/dev.h
index a9c3adc..04cf33d 100644
--- a/drivers/net/wireless/libertas/dev.h
+++ b/drivers/net/wireless/libertas/dev.h
@@ -10,7 +10,6 @@
 #include <linux/wireless.h>
 #include <linux/ethtool.h>
 #include <linux/debugfs.h>
-#include <net/ieee80211.h>
 
 #include "defs.h"
 #include "scan.h"
@@ -114,7 +113,6 @@ struct lbs_private {
        struct net_device_stats stats;
        struct net_device *mesh_dev; /* Virtual device */
        struct net_device *rtap_net_dev;
-       struct ieee80211_device *ieee;
 
        struct iw_statistics wstats;
        struct lbs_mesh_stats mstats;
diff --git a/drivers/net/wireless/libertas/main.c 
b/drivers/net/wireless/libertas/main.c
index 5c8cb00..55dce8d 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -1448,7 +1448,7 @@ static int lbs_rtap_hard_start_xmit(struct sk_buff *skb, 
struct net_device *dev)
 static struct net_device_stats *lbs_rtap_get_stats(struct net_device *dev)
 {
        struct lbs_private *priv = dev->priv;
-       return &priv->ieee->stats;
+       return &priv->stats;
 }
 
 
@@ -1457,42 +1457,36 @@ void lbs_remove_rtap(struct lbs_private *priv)
        if (priv->rtap_net_dev == NULL)
                return;
        unregister_netdev(priv->rtap_net_dev);
-       free_ieee80211(priv->rtap_net_dev);
+       free_netdev(priv->rtap_net_dev);
        priv->rtap_net_dev = NULL;
 }
 
 int lbs_add_rtap(struct lbs_private *priv)
 {
        int rc = 0;
+       struct net_device *rtap_dev;
 
        if (priv->rtap_net_dev)
                return -EPERM;
 
-       priv->rtap_net_dev = alloc_ieee80211(0);
-       if (priv->rtap_net_dev == NULL)
+       rtap_dev = alloc_netdev(0, "rtap%d", ether_setup);
+       if (rtap_dev == NULL)
                return -ENOMEM;
 
+       rtap_dev->type = ARPHRD_IEEE80211_RADIOTAP;
+       rtap_dev->open = lbs_rtap_open;
+       rtap_dev->stop = lbs_rtap_stop;
+       rtap_dev->get_stats = lbs_rtap_get_stats;
+       rtap_dev->hard_start_xmit = lbs_rtap_hard_start_xmit;
+       rtap_dev->set_multicast_list = lbs_set_multicast_list;
+       rtap_dev->priv = priv;
 
-       priv->ieee = netdev_priv(priv->rtap_net_dev);
-
-       strcpy(priv->rtap_net_dev->name, "rtap%d");
-
-       priv->rtap_net_dev->type = ARPHRD_IEEE80211_RADIOTAP;
-       priv->rtap_net_dev->open = lbs_rtap_open;
-       priv->rtap_net_dev->stop = lbs_rtap_stop;
-       priv->rtap_net_dev->get_stats = lbs_rtap_get_stats;
-       priv->rtap_net_dev->hard_start_xmit = lbs_rtap_hard_start_xmit;
-       priv->rtap_net_dev->set_multicast_list = lbs_set_multicast_list;
-       priv->rtap_net_dev->priv = priv;
-
-       priv->ieee->iw_mode = IW_MODE_MONITOR;
-
-       rc = register_netdev(priv->rtap_net_dev);
+       rc = register_netdev(rtap_dev);
        if (rc) {
-               free_ieee80211(priv->rtap_net_dev);
-               priv->rtap_net_dev = NULL;
+               free_netdev(rtap_dev);
                return rc;
        }
+       priv->rtap_net_dev = rtap_dev;
 
        return 0;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to