mcs7830: Implement link state detection
Subsystems (3)
PATCH 1/1 mcs7830: Implement link state detection
Add .status callback that detects link state changes.
Tested with MCS7832CV-AA chip (9710:7830, identified as rev.C by the driver). Fixes https://bugzilla.kernel.org/show_bug.cgi?id=28532
Signed-off-by Ondrej Zary <[email protected]>
drivers/net/usb/mcs7830.c +23 -2
@@ -629,11 +629,31 @@ static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb)return skb->len >0 ; } +static void mcs7830_status (struct usbnet *dev,struct urb *urb) +{ +u8 *buf = urb->transfer_buffer; +bool link; + +if (urb->actual_length <16 ) +return ; + + link = !(buf[1 ] &0x20 ); +if (netif_carrier_ok (dev->net) != link) { +if (link) { +netif_carrier_on (dev->net); +usbnet_defer_kevent (dev,EVENT_LINK_RESET ); + }else +netif_carrier_off (dev->net); +netdev_dbg (dev->net,"Link Status is: %d\n" , link); + } +} +static const struct driver_info moschip_info = { .description ="MOSCHIP 7830/7832/7730 usb-NET adapter" , .bind = mcs7830_bind, .rx_fixup = mcs7830_rx_fixup, - .flags =FLAG_ETHER , + .flags =FLAG_ETHER |FLAG_LINK_INTR , + .status = mcs7830_status, .in =1 , .out =2 , };
@@ -642,7 +662,8 @@ static const struct driver_info sitecom_info = { .description = "Sitecom LN-30 usb-NET adapter", .bind = mcs7830_bind, .rx_fixup = mcs7830_rx_fixup, - .flags = FLAG_ETHER, + .flags = FLAG_ETHER | FLAG_LINK_INTR, + .status = mcs7830_status, .in = 1, .out = 2, };
Signature · 1 line
Ondrej Zary
From: Ondrej Zary <[email protected]>
Date: Fri, 1 Jun 2012 22:29:08 +0200
Quoted 5 lines
Add .status callback that detects link state changes.
Tested with MCS7832CV-AA chip (9710:7830, identified as rev.C by the driver). Fixes https://bugzilla.kernel.org/show_bug.cgi?id=28532Signed-off-by Ondrej Zary <[email protected]>
Applied.