Fix 'Driver using old /proc/net/wireless support, please fix driver !' message.
authorBenoit Boissinot <bboissin+ipw2100@gmail.com>
Thu, 15 Sep 2005 17:30:28 +0000 (17:30 +0000)
committerJames Ketrenos <jketreno@linux.intel.com>
Mon, 7 Nov 2005 23:51:54 +0000 (17:51 -0600)
Wireless extensions moved the get_wireless_stats handler from being
in net_device into wireless_handler.

Signed-off-by: Benoit Boissinot <benoit.boissinot@ens-lyon.org>
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.h

index 0b1c6fe54262fe074423286992830f5fa83c778d..b89ede14419c76ab2071f95e75f2be77661a66fd 100644 (file)
@@ -125,6 +125,7 @@ static int ipw_send_qos_info_command(struct ipw_priv *priv, struct ieee80211_qos
                                     *qos_param);
 #endif                         /* CONFIG_IPW_QOS */
 
+static struct iw_statistics *ipw_get_wireless_stats(struct net_device *dev);
 static void ipw_remove_current_network(struct ipw_priv *priv);
 static void ipw_rx(struct ipw_priv *priv);
 static int ipw_queue_tx_reclaim(struct ipw_priv *priv,
@@ -8883,6 +8884,13 @@ static int ipw_wx_get_range(struct net_device *dev,
        range->num_frequency = i;
 
        up(&priv->sem);
+
+       /* Event capability (kernel + driver) */
+       range->event_capa[0] = (IW_EVENT_CAPA_K_0 |
+                               IW_EVENT_CAPA_MASK(SIOCGIWTHRSPY) |
+                               IW_EVENT_CAPA_MASK(SIOCGIWAP));
+       range->event_capa[1] = IW_EVENT_CAPA_K_1;
+
        IPW_DEBUG_WX("GET Range\n");
        return 0;
 }
@@ -9999,10 +10007,9 @@ static struct iw_handler_def ipw_wx_handler_def = {
        .num_private_args = ARRAY_SIZE(ipw_priv_args),
        .private = ipw_priv_handler,
        .private_args = ipw_priv_args,
+       .get_wireless_stats = ipw_get_wireless_stats,
 };
 
-static struct iw_public_data ipw_wx_data;
-
 /*
  * Get wireless statistics.
  * Called by /proc/net/wireless
@@ -11487,9 +11494,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        SET_MODULE_OWNER(net_dev);
        SET_NETDEV_DEV(net_dev, &pdev->dev);
 
-       ipw_wx_data.spy_data = &priv->ieee->spy_data;
-       ipw_wx_data.ieee80211 = priv->ieee;
-
        down(&priv->sem);
 
        priv->ieee->hard_start_xmit = ipw_net_hard_start_xmit;
@@ -11514,8 +11518,9 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        net_dev->get_stats = ipw_net_get_stats;
        net_dev->set_multicast_list = ipw_net_set_multicast_list;
        net_dev->set_mac_address = ipw_net_set_mac_address;
-       net_dev->get_wireless_stats = ipw_get_wireless_stats;
-       net_dev->wireless_data = &ipw_wx_data;
+       priv->wireless_data.spy_data = &priv->ieee->spy_data;
+       priv->wireless_data.ieee80211 = priv->ieee;
+       net_dev->wireless_data = &priv->wireless_data;
        net_dev->wireless_handlers = &ipw_wx_handler_def;
        net_dev->ethtool_ops = &ipw_ethtool_ops;
        net_dev->irq = pdev->irq;
index 28f1216f8ea41591b755b3405032e8c229491700..3e7699430c6c2a8925b35c84637a33d5ec3305da 100644 (file)
@@ -1228,6 +1228,8 @@ struct ipw_priv {
 
        struct iw_statistics wstats;
 
+       struct iw_public_data wireless_data;
+
        struct workqueue_struct *workqueue;
 
        struct work_struct adhoc_check;