diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-10-26 20:12:32 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-10-26 20:12:32 +0200 |
commit | 10741b4974b85c825036eb0717ddc7112f96f5fb (patch) | |
tree | 2831132c400ca34a3d934cd3e00af81ec039d96e /device.h | |
parent | 73ea0284506a62324d7b7c92ec4982c2c5aff3b9 (diff) |
recognize stacked interfaces (e.g. dsa) and handle their dependencies
Diffstat (limited to 'device.h')
-rw-r--r-- | device.h | 57 |
1 files changed, 30 insertions, 27 deletions
@@ -5,6 +5,7 @@ #include <netinet/in.h> struct device; +struct device_user; struct device_hotplug_ops; typedef int (*device_state_cb)(struct device *, bool up); @@ -45,6 +46,33 @@ enum { DEV_OPT_TXQUEUELEN = (1 << 2) }; +/* events broadcasted to all users of a device */ +enum device_event { + DEV_EVENT_ADD, + DEV_EVENT_REMOVE, + + DEV_EVENT_SETUP, + DEV_EVENT_TEARDOWN, + DEV_EVENT_UP, + DEV_EVENT_DOWN, + + DEV_EVENT_LINK_UP, + DEV_EVENT_LINK_DOWN, +}; + +/* + * device dependency with callbacks + */ +struct device_user { + struct list_head list; + + bool claimed; + bool hotplug; + + struct device *dev; + void (*cb)(struct device_user *, enum device_event); +}; + /* * link layer device. typically represents a linux network device. * can be used to support VLANs as well @@ -72,6 +100,8 @@ struct device { const struct device_hotplug_ops *hotplug_ops; + struct device_user parent; + /* settings */ unsigned int flags; @@ -80,33 +110,6 @@ struct device { uint8_t macaddr[6]; }; -/* events broadcasted to all users of a device */ -enum device_event { - DEV_EVENT_ADD, - DEV_EVENT_REMOVE, - - DEV_EVENT_SETUP, - DEV_EVENT_TEARDOWN, - DEV_EVENT_UP, - DEV_EVENT_DOWN, - - DEV_EVENT_LINK_UP, - DEV_EVENT_LINK_DOWN, -}; - -/* - * device dependency with callbacks - */ -struct device_user { - struct list_head list; - - bool claimed; - bool hotplug; - - struct device *dev; - void (*cb)(struct device_user *, enum device_event); -}; - struct device_hotplug_ops { int (*add)(struct device *main, struct device *member); int (*del)(struct device *main, struct device *member); |