usbnet: introduce usbnet_link_change API
This patch introduces the API of usbnet_link_change, so that usbnet can handle link change centrally, which may help to implement killing traffic URBs for saving USB bus bandwidth and host controller power. Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
763eff57de
commit
ac64995da8
|
@ -1653,6 +1653,19 @@ int usbnet_manage_power(struct usbnet *dev, int on)
|
|||
}
|
||||
EXPORT_SYMBOL(usbnet_manage_power);
|
||||
|
||||
void usbnet_link_change(struct usbnet *dev, bool link, bool need_reset)
|
||||
{
|
||||
/* update link after link is reseted */
|
||||
if (link && !need_reset)
|
||||
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);
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
static int __usbnet_read_cmd(struct usbnet *dev, u8 cmd, u8 reqtype,
|
||||
u16 value, u16 index, void *data, u16 size)
|
||||
|
|
|
@ -245,5 +245,6 @@ extern void usbnet_get_drvinfo(struct net_device *, struct ethtool_drvinfo *);
|
|||
extern int usbnet_nway_reset(struct net_device *net);
|
||||
|
||||
extern int usbnet_manage_power(struct usbnet *, int);
|
||||
extern void usbnet_link_change(struct usbnet *, bool, bool);
|
||||
|
||||
#endif /* __LINUX_USB_USBNET_H */
|
||||
|
|
Loading…
Reference in New Issue