aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/hso.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-08-31 17:08:19 -0400
committerDavid S. Miller <davem@davemloft.net>2009-09-11 15:54:55 -0400
commit384912ed194e43c03ad1cdaa09b0b1e488c34d46 (patch)
treebdaae15252819543cff0900941238d2b99bb2300 /drivers/net/usb/hso.c
parentf510c35de0e63e1066db83d2fdce99e6dbde0c80 (diff)
net: Add DEVTYPE support for Ethernet based devices
The Ethernet framing is used for a lot of devices these days. Most prominent are WiFi and WiMAX based devices. However for userspace application it is important to classify these devices correctly and not only see them as Ethernet devices. The daemons like HAL, DeviceKit or even NetworkManager with udev support tries to do the classification in userspace with a lot trickery and extra system calls. This is not good and actually reaches its limitations. Especially since the kernel does know the type of the Ethernet device it is pretty stupid. To solve this problem the underlying device type needs to be set and then the value will be exported as DEVTYPE via uevents and available within udev. # cat /sys/class/net/wlan0/uevent DEVTYPE=wlan INTERFACE=wlan0 IFINDEX=5 This is similar to subsystems like USB and SCSI that distinguish between hosts, devices, disks, partitions etc. The new SET_NETDEV_DEVTYPE() is a convenience helper to set the actual device type. All device types are free form, but for convenience the same strings as used with RFKILL are choosen. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb/hso.c')
-rw-r--r--drivers/net/usb/hso.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 3f9c92a2afcb..fa4e58196c21 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -2535,6 +2535,10 @@ static void hso_create_rfkill(struct hso_device *hso_dev,
2535 } 2535 }
2536} 2536}
2537 2537
2538static struct device_type hso_type = {
2539 .name = "wwan",
2540};
2541
2538/* Creates our network device */ 2542/* Creates our network device */
2539static struct hso_device *hso_create_net_device(struct usb_interface *interface, 2543static struct hso_device *hso_create_net_device(struct usb_interface *interface,
2540 int port_spec) 2544 int port_spec)
@@ -2575,6 +2579,7 @@ static struct hso_device *hso_create_net_device(struct usb_interface *interface,
2575 goto exit; 2579 goto exit;
2576 } 2580 }
2577 SET_NETDEV_DEV(net, &interface->dev); 2581 SET_NETDEV_DEV(net, &interface->dev);
2582 SET_NETDEV_DEVTYPE(net, &hso_type);
2578 2583
2579 /* registering our net device */ 2584 /* registering our net device */
2580 result = register_netdev(net); 2585 result = register_netdev(net);