diff options
Diffstat (limited to 'drivers/net/usb')
-rw-r--r-- | drivers/net/usb/smsc95xx.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index 262e7a3c23cb..f2d01cb6f958 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c | |||
@@ -1321,6 +1321,8 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) | |||
1321 | dev->net->ethtool_ops = &smsc95xx_ethtool_ops; | 1321 | dev->net->ethtool_ops = &smsc95xx_ethtool_ops; |
1322 | dev->net->flags |= IFF_MULTICAST; | 1322 | dev->net->flags |= IFF_MULTICAST; |
1323 | dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM; | 1323 | dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD_CSUM; |
1324 | dev->net->min_mtu = ETH_MIN_MTU; | ||
1325 | dev->net->max_mtu = ETH_DATA_LEN; | ||
1324 | dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; | 1326 | dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; |
1325 | 1327 | ||
1326 | pdata->dev = dev; | 1328 | pdata->dev = dev; |
@@ -1598,6 +1600,8 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message) | |||
1598 | return ret; | 1600 | return ret; |
1599 | } | 1601 | } |
1600 | 1602 | ||
1603 | cancel_delayed_work_sync(&pdata->carrier_check); | ||
1604 | |||
1601 | if (pdata->suspend_flags) { | 1605 | if (pdata->suspend_flags) { |
1602 | netdev_warn(dev->net, "error during last resume\n"); | 1606 | netdev_warn(dev->net, "error during last resume\n"); |
1603 | pdata->suspend_flags = 0; | 1607 | pdata->suspend_flags = 0; |
@@ -1840,6 +1844,11 @@ done: | |||
1840 | */ | 1844 | */ |
1841 | if (ret && PMSG_IS_AUTO(message)) | 1845 | if (ret && PMSG_IS_AUTO(message)) |
1842 | usbnet_resume(intf); | 1846 | usbnet_resume(intf); |
1847 | |||
1848 | if (ret) | ||
1849 | schedule_delayed_work(&pdata->carrier_check, | ||
1850 | CARRIER_CHECK_DELAY); | ||
1851 | |||
1843 | return ret; | 1852 | return ret; |
1844 | } | 1853 | } |
1845 | 1854 | ||