This patch introduces the API of usbnet_link_change, so that usbnet can trace the link change, which may help to implement the later runtime PM triggered by usb ethernet link change. Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxxxxx> --- drivers/net/usb/usbnet.c | 13 ++++++++++++- include/linux/usb/usbnet.h | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index e944109..e986e4b 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -677,6 +677,18 @@ static void usbnet_terminate_urbs(struct usbnet *dev) remove_wait_queue(&unlink_wakeup, &wait); } +void usbnet_link_change(struct usbnet *dev, int link, int need_reset) +{ + if (link) + netif_carrier_on(dev->net); + else + netif_carrier_off(dev->net); + + if (need_reset && link) + usbnet_defer_kevent(dev, EVENT_LINK_RESET); +} +EXPORT_SYMBOL(usbnet_link_change); + int usbnet_stop (struct net_device *net) { struct usbnet *dev = netdev_priv(net); @@ -1591,7 +1603,6 @@ int usbnet_resume (struct usb_interface *intf) } EXPORT_SYMBOL_GPL(usbnet_resume); - /*-------------------------------------------------------------------------*/ static int __init usbnet_init(void) diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index f87cf62..1937b74 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h @@ -160,7 +160,7 @@ extern int usbnet_probe(struct usb_interface *, const struct usb_device_id *); extern int usbnet_suspend(struct usb_interface *, pm_message_t); extern int usbnet_resume(struct usb_interface *); extern void usbnet_disconnect(struct usb_interface *); - +extern void usbnet_link_change(struct usbnet *dev, int link, int need_reset); /* Drivers that reuse some of the standard USB CDC infrastructure * (notably, using multiple interfaces according to the CDC -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html