提交 0cd545d6 编写于 作者: D Dave Hansen 提交者: Jeff Garzik

[PATCH] hostap update

Create sysfs "device" files for hostap

I was writing some scripts to automatically build kismet source lines,
and I noticed that hostap devices don't have device files, unlike my
prism54 and ipw2200 cards:

$ ls -l /sys/class/net/eth0/device
/sys/class/net/eth0/device -> ../../../devices/pci0000:00/0000:00:1e.0/0000:02:01.0
$ ls -l /sys/class/net/wifi0
ls: /sys/class/net/wifi0/device: No such file or directory
$ ls -l /sys/class/net/wlan0
ls: /sys/class/net/wlan0/device: No such file or directory

The following (quite small) patch makes sure that both the wlan and wifi
net devices have that pointer to the bus device.

This way, I can do things like

        for i in /sys/class/net/*; do
                if ! [ -e $i/device/drive ]; then
                        continue;
                fi;
                driver=$(basename $(readlink $i/device/driver))
                case $driver in
                        hostap*)
                                echo -- hostap,$i,$i-$driver
                                break;
                        ipw2?00)
                                echo -- $driver,$i,$i-$driver
                                break;
                        prism54)
                                echo prism54g,$i
                esac
        done

Which should generate a working set of source lines for kismet no matter
what order I plug the cards in.

It might also be handy to have a link between the two net devices, but
that's a patch for another day.

That patch is against 2.6.13-rc1-mm1.

-- Dave
Signed-off-by: NDave Hansen <haveblue@us.ibm.com>
Signed-off-by: NJouni Malinen <jkmaline@cc.hut.fi>
Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
上级 0ef79ee2
...@@ -137,6 +137,7 @@ struct net_device * hostap_add_interface(struct local_info *local, ...@@ -137,6 +137,7 @@ struct net_device * hostap_add_interface(struct local_info *local,
if (strchr(dev->name, '%')) if (strchr(dev->name, '%'))
ret = dev_alloc_name(dev, dev->name); ret = dev_alloc_name(dev, dev->name);
SET_NETDEV_DEV(dev, mdev->class_dev.dev);
if (ret >= 0) if (ret >= 0)
ret = register_netdevice(dev); ret = register_netdevice(dev);
......
...@@ -725,7 +725,8 @@ static int prism2_config(dev_link_t *link) ...@@ -725,7 +725,8 @@ static int prism2_config(dev_link_t *link)
} }
/* Need to allocate net_device before requesting IRQ handler */ /* Need to allocate net_device before requesting IRQ handler */
dev = prism2_init_local_data(&prism2_pccard_funcs, 0); dev = prism2_init_local_data(&prism2_pccard_funcs, 0,
&handle_to_dev(link->handle));
if (dev == NULL) if (dev == NULL)
goto failed; goto failed;
link->priv = dev; link->priv = dev;
......
...@@ -3268,7 +3268,8 @@ static void prism2_clear_set_tim_queue(local_info_t *local) ...@@ -3268,7 +3268,8 @@ static void prism2_clear_set_tim_queue(local_info_t *local)
static struct net_device * static struct net_device *
prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx) prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
struct device *sdev)
{ {
struct net_device *dev; struct net_device *dev;
struct hostap_interface *iface; struct hostap_interface *iface;
...@@ -3439,6 +3440,7 @@ while (0) ...@@ -3439,6 +3440,7 @@ while (0)
rtnl_lock(); rtnl_lock();
ret = dev_alloc_name(dev, "wifi%d"); ret = dev_alloc_name(dev, "wifi%d");
SET_NETDEV_DEV(dev, sdev);
if (ret >= 0) if (ret >= 0)
ret = register_netdevice(dev); ret = register_netdevice(dev);
rtnl_unlock(); rtnl_unlock();
......
...@@ -308,7 +308,8 @@ static int prism2_pci_probe(struct pci_dev *pdev, ...@@ -308,7 +308,8 @@ static int prism2_pci_probe(struct pci_dev *pdev,
pci_set_master(pdev); pci_set_master(pdev);
#endif /* PRISM2_BUS_MASTER */ #endif /* PRISM2_BUS_MASTER */
dev = prism2_init_local_data(&prism2_pci_funcs, cards_found); dev = prism2_init_local_data(&prism2_pci_funcs, cards_found,
&pdev->dev);
if (dev == NULL) if (dev == NULL)
goto fail; goto fail;
iface = netdev_priv(dev); iface = netdev_priv(dev);
......
...@@ -522,7 +522,8 @@ static int prism2_plx_probe(struct pci_dev *pdev, ...@@ -522,7 +522,8 @@ static int prism2_plx_probe(struct pci_dev *pdev,
* not present; but are there really such cards in use(?) */ * not present; but are there really such cards in use(?) */
} }
dev = prism2_init_local_data(&prism2_plx_funcs, cards_found); dev = prism2_init_local_data(&prism2_plx_funcs, cards_found,
&pdev->dev);
if (dev == NULL) if (dev == NULL)
goto fail; goto fail;
iface = netdev_priv(dev); iface = netdev_priv(dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册