From f4cdc5cbbc98df532ba29add0e476853ffe1f3d3 Mon Sep 17 00:00:00 2001 From: Ondrej Zary Date: Fri, 1 Jun 2012 10:29:08 +0000 Subject: [PATCH] --- yaml --- r: 310419 b: refs/heads/master c: b1ff4f96fd1c63890d78d8939c6e0f2b44ce3113 h: refs/heads/master i: 310417: 6021a6c31950e3fe67829a6058348c1fdf72374c 310415: 6938da0bcbc7074ef8dc3a415805999f22029916 v: v3 --- [refs] | 2 +- trunk/drivers/net/usb/mcs7830.c | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a3c5532df485..b1deea5909ed 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6d7407bfba0b4eb21d843ff1f9e9c86156e502b2 +refs/heads/master: b1ff4f96fd1c63890d78d8939c6e0f2b44ce3113 diff --git a/trunk/drivers/net/usb/mcs7830.c b/trunk/drivers/net/usb/mcs7830.c index add1064f755d..03c2d8d653df 100644 --- a/trunk/drivers/net/usb/mcs7830.c +++ b/trunk/drivers/net/usb/mcs7830.c @@ -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, };