|
@@ -891,6 +891,14 @@ struct netdev_fcoe_hbainfo {
|
|
|
* int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh)
|
|
|
* int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq,
|
|
|
* struct net_device *dev)
|
|
|
+ *
|
|
|
+ * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier);
|
|
|
+ * Called to change device carrier. Soft-devices (like dummy, team, etc)
|
|
|
+ * which do not represent real hardware may define this to allow their
|
|
|
+ * userspace components to manage their virtual carrier state. Devices
|
|
|
+ * that determine carrier state from physical hardware properties (eg
|
|
|
+ * network cables) or protocol-dependent mechanisms (eg
|
|
|
+ * USB_CDC_NOTIFY_NETWORK_CONNECTION) should NOT implement this function.
|
|
|
*/
|
|
|
struct net_device_ops {
|
|
|
int (*ndo_init)(struct net_device *dev);
|
|
@@ -1008,6 +1016,8 @@ struct net_device_ops {
|
|
|
int (*ndo_bridge_getlink)(struct sk_buff *skb,
|
|
|
u32 pid, u32 seq,
|
|
|
struct net_device *dev);
|
|
|
+ int (*ndo_change_carrier)(struct net_device *dev,
|
|
|
+ bool new_carrier);
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -2194,6 +2204,8 @@ extern int dev_set_mtu(struct net_device *, int);
|
|
|
extern void dev_set_group(struct net_device *, int);
|
|
|
extern int dev_set_mac_address(struct net_device *,
|
|
|
struct sockaddr *);
|
|
|
+extern int dev_change_carrier(struct net_device *,
|
|
|
+ bool new_carrier);
|
|
|
extern int dev_hard_start_xmit(struct sk_buff *skb,
|
|
|
struct net_device *dev,
|
|
|
struct netdev_queue *txq);
|