Lines Matching +full:mac +full:- +full:wol

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 1999-2021 Petko Manolov (petkan@nucleusys.com)
75 MODULE_PARM_DESC(loopback, "Enable MAC loopback mode (bit 0)");
80 static int msg_level = -1;
91 struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; in async_ctrl_callback()
92 int status = urb->status; in async_ctrl_callback()
95 dev_dbg(&urb->dev->dev, "%s failed with %d", __func__, status); in async_ctrl_callback()
102 return usb_control_msg_recv(pegasus->usb, 0, PEGASUS_REQ_GET_REGS, in get_registers()
112 ret = usb_control_msg_send(pegasus->usb, 0, PEGASUS_REQ_SET_REGS, in set_registers()
116 netif_dbg(pegasus, drv, pegasus->net, "%s failed with %d\n", __func__, ret); in set_registers()
131 ret = usb_control_msg_send(pegasus->usb, 0, PEGASUS_REQ_SET_REG, in set_register()
135 netif_dbg(pegasus, drv, pegasus->net, "%s failed with %d\n", __func__, ret); in set_register()
142 int ret = -ENOMEM; in update_eth_regs_async()
155 req->bRequestType = PEGASUS_REQT_WRITE; in update_eth_regs_async()
156 req->bRequest = PEGASUS_REQ_SET_REGS; in update_eth_regs_async()
157 req->wValue = cpu_to_le16(0); in update_eth_regs_async()
158 req->wIndex = cpu_to_le16(EthCtrl0); in update_eth_regs_async()
159 req->wLength = cpu_to_le16(3); in update_eth_regs_async()
161 usb_fill_control_urb(async_urb, pegasus->usb, in update_eth_regs_async()
162 usb_sndctrlpipe(pegasus->usb, 0), (void *)req, in update_eth_regs_async()
163 pegasus->eth_regs, 3, async_ctrl_callback, req); in update_eth_regs_async()
167 if (ret == -ENODEV) in update_eth_regs_async()
168 netif_device_detach(pegasus->net); in update_eth_regs_async()
169 netif_err(pegasus, drv, pegasus->net, in update_eth_regs_async()
196 ret = -ETIMEDOUT; in __mii_op()
207 netif_dbg(p, drv, p->net, "%s failed\n", __func__); in __mii_op()
211 /* Returns non-negative int on success, error on failure */
262 ret = -ETIMEDOUT; in read_eprom_word()
273 netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__); in read_eprom_word()
310 if (ret == -ESHUTDOWN) in write_eprom_word()
322 netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__); in write_eprom_word()
323 return -ETIMEDOUT; in write_eprom_word()
347 if (pegasus->features & PEGASUS_II) { in set_ethernet_addr()
360 eth_hw_addr_set(pegasus->net, node_id); in set_ethernet_addr()
364 eth_hw_addr_random(pegasus->net); in set_ethernet_addr()
365 netif_dbg(pegasus, drv, pegasus->net, "software assigned MAC address.\n"); in set_ethernet_addr()
383 if (mii_mode && (pegasus->features & HAS_HOME_PNA)) in reset_mac()
387 set_register(pegasus, Gpio0, pegasus->features); in reset_mac()
393 return -ETIMEDOUT; in reset_mac()
395 if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS || in reset_mac()
396 usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) { in reset_mac()
400 if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_ELCON) { in reset_mac()
411 netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__); in reset_mac()
422 ret = read_mii_word(pegasus, pegasus->phy, MII_LPA, &linkpart); in enable_net_traffic()
435 memcpy(pegasus->eth_regs, data, sizeof(data)); in enable_net_traffic()
438 if (usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS || in enable_net_traffic()
439 usb_dev_id[pegasus->dev_index].vendor == VENDOR_LINKSYS2 || in enable_net_traffic()
440 usb_dev_id[pegasus->dev_index].vendor == VENDOR_DLINK) { in enable_net_traffic()
451 netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__); in enable_net_traffic()
457 pegasus_t *pegasus = urb->context; in read_bulk_callback()
459 u8 *buf = urb->transfer_buffer; in read_bulk_callback()
460 int rx_status, count = urb->actual_length; in read_bulk_callback()
461 int status = urb->status; in read_bulk_callback()
467 net = pegasus->net; in read_bulk_callback()
474 case -ETIME: in read_bulk_callback()
475 netif_dbg(pegasus, rx_err, net, "reset MAC\n"); in read_bulk_callback()
476 pegasus->flags &= ~PEGASUS_RX_BUSY; in read_bulk_callback()
478 case -EPIPE: /* stall, or disconnect from TT */ in read_bulk_callback()
482 case -ENOENT: in read_bulk_callback()
483 case -ECONNRESET: in read_bulk_callback()
484 case -ESHUTDOWN: in read_bulk_callback()
495 rx_status = buf[count - 2]; in read_bulk_callback()
499 net->stats.rx_errors++; in read_bulk_callback()
501 net->stats.rx_length_errors++; in read_bulk_callback()
503 net->stats.rx_crc_errors++; in read_bulk_callback()
505 net->stats.rx_frame_errors++; in read_bulk_callback()
508 if (pegasus->chip == 0x8513) { in read_bulk_callback()
509 pkt_len = le32_to_cpu(*(__le32 *)urb->transfer_buffer); in read_bulk_callback()
511 pegasus->rx_skb->data += 2; in read_bulk_callback()
513 pkt_len = buf[count - 3] << 8; in read_bulk_callback()
514 pkt_len += buf[count - 4]; in read_bulk_callback()
516 pkt_len -= 4; in read_bulk_callback()
527 * at this point we are sure pegasus->rx_skb != NULL in read_bulk_callback()
530 skb_put(pegasus->rx_skb, pkt_len); in read_bulk_callback()
531 pegasus->rx_skb->protocol = eth_type_trans(pegasus->rx_skb, net); in read_bulk_callback()
532 netif_rx(pegasus->rx_skb); in read_bulk_callback()
533 net->stats.rx_packets++; in read_bulk_callback()
534 net->stats.rx_bytes += pkt_len; in read_bulk_callback()
536 if (pegasus->flags & PEGASUS_UNPLUG) in read_bulk_callback()
539 pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net, PEGASUS_MTU, in read_bulk_callback()
542 if (pegasus->rx_skb == NULL) in read_bulk_callback()
545 usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb, in read_bulk_callback()
546 usb_rcvbulkpipe(pegasus->usb, 1), in read_bulk_callback()
547 pegasus->rx_skb->data, PEGASUS_MTU, in read_bulk_callback()
549 rx_status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC); in read_bulk_callback()
550 if (rx_status == -ENODEV) in read_bulk_callback()
551 netif_device_detach(pegasus->net); in read_bulk_callback()
553 pegasus->flags |= PEGASUS_RX_URB_FAIL; in read_bulk_callback()
556 pegasus->flags &= ~PEGASUS_RX_URB_FAIL; in read_bulk_callback()
562 tasklet_schedule(&pegasus->rx_tl); in read_bulk_callback()
570 if (pegasus->flags & PEGASUS_UNPLUG) in rx_fixup()
573 if (pegasus->flags & PEGASUS_RX_URB_FAIL) in rx_fixup()
574 if (pegasus->rx_skb) in rx_fixup()
576 if (pegasus->rx_skb == NULL) in rx_fixup()
577 pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net, in rx_fixup()
580 if (pegasus->rx_skb == NULL) { in rx_fixup()
581 netif_warn(pegasus, rx_err, pegasus->net, "low on memory\n"); in rx_fixup()
582 tasklet_schedule(&pegasus->rx_tl); in rx_fixup()
585 usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb, in rx_fixup()
586 usb_rcvbulkpipe(pegasus->usb, 1), in rx_fixup()
587 pegasus->rx_skb->data, PEGASUS_MTU, in rx_fixup()
590 status = usb_submit_urb(pegasus->rx_urb, GFP_ATOMIC); in rx_fixup()
591 if (status == -ENODEV) in rx_fixup()
592 netif_device_detach(pegasus->net); in rx_fixup()
594 pegasus->flags |= PEGASUS_RX_URB_FAIL; in rx_fixup()
595 tasklet_schedule(&pegasus->rx_tl); in rx_fixup()
597 pegasus->flags &= ~PEGASUS_RX_URB_FAIL; in rx_fixup()
603 pegasus_t *pegasus = urb->context; in write_bulk_callback()
605 int status = urb->status; in write_bulk_callback()
610 net = pegasus->net; in write_bulk_callback()
616 case -EPIPE: in write_bulk_callback()
621 case -ENOENT: in write_bulk_callback()
622 case -ECONNRESET: in write_bulk_callback()
623 case -ESHUTDOWN: in write_bulk_callback()
639 pegasus_t *pegasus = urb->context; in intr_callback()
641 int res, status = urb->status; in intr_callback()
645 net = pegasus->net; in intr_callback()
650 case -ECONNRESET: /* unlink */ in intr_callback()
651 case -ENOENT: in intr_callback()
652 case -ESHUTDOWN: in intr_callback()
655 /* some Pegasus-I products report LOTS of data in intr_callback()
661 if (urb->actual_length >= 6) { in intr_callback()
662 u8 *d = urb->transfer_buffer; in intr_callback()
667 net->stats.tx_errors++; in intr_callback()
669 net->stats.tx_fifo_errors++; in intr_callback()
671 net->stats.tx_aborted_errors++; in intr_callback()
673 net->stats.tx_window_errors++; in intr_callback()
681 /* bytes 3-4 == rx_lostpkt, reg 2E/2F */ in intr_callback()
682 net->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4]; in intr_callback()
686 if (res == -ENODEV) in intr_callback()
687 netif_device_detach(pegasus->net); in intr_callback()
697 usb_unlink_urb(pegasus->tx_urb); in pegasus_tx_timeout()
698 net->stats.tx_errors++; in pegasus_tx_timeout()
705 int count = ((skb->len + 2) & 0x3f) ? skb->len + 2 : skb->len + 3; in pegasus_start_xmit()
707 __u16 l16 = skb->len; in pegasus_start_xmit()
711 ((__le16 *) pegasus->tx_buff)[0] = cpu_to_le16(l16); in pegasus_start_xmit()
712 skb_copy_from_linear_data(skb, pegasus->tx_buff + 2, skb->len); in pegasus_start_xmit()
713 usb_fill_bulk_urb(pegasus->tx_urb, pegasus->usb, in pegasus_start_xmit()
714 usb_sndbulkpipe(pegasus->usb, 2), in pegasus_start_xmit()
715 pegasus->tx_buff, count, in pegasus_start_xmit()
717 if ((res = usb_submit_urb(pegasus->tx_urb, GFP_ATOMIC))) { in pegasus_start_xmit()
720 case -EPIPE: /* stall, or disconnect from TT */ in pegasus_start_xmit()
723 case -ENODEV: /* disconnect() upcoming */ in pegasus_start_xmit()
724 case -EPERM: in pegasus_start_xmit()
725 netif_device_detach(pegasus->net); in pegasus_start_xmit()
728 net->stats.tx_errors++; in pegasus_start_xmit()
732 net->stats.tx_packets++; in pegasus_start_xmit()
733 net->stats.tx_bytes += skb->len; in pegasus_start_xmit()
758 if (pegasus->usb->speed != USB_SPEED_HIGH) { in get_interrupt_interval()
760 netif_info(pegasus, timer, pegasus->net, in get_interrupt_interval()
770 pegasus->intr_interval = interval; in get_interrupt_interval()
780 if (read_mii_word(pegasus, pegasus->phy, MII_BMSR, &tmp)) in set_carrier()
791 usb_free_urb(pegasus->intr_urb); in free_all_urbs()
792 usb_free_urb(pegasus->tx_urb); in free_all_urbs()
793 usb_free_urb(pegasus->rx_urb); in free_all_urbs()
798 usb_kill_urb(pegasus->intr_urb); in unlink_all_urbs()
799 usb_kill_urb(pegasus->tx_urb); in unlink_all_urbs()
800 usb_kill_urb(pegasus->rx_urb); in unlink_all_urbs()
805 int res = -ENOMEM; in alloc_urbs()
807 pegasus->rx_urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_urbs()
808 if (!pegasus->rx_urb) { in alloc_urbs()
811 pegasus->tx_urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_urbs()
812 if (!pegasus->tx_urb) { in alloc_urbs()
813 usb_free_urb(pegasus->rx_urb); in alloc_urbs()
816 pegasus->intr_urb = usb_alloc_urb(0, GFP_KERNEL); in alloc_urbs()
817 if (!pegasus->intr_urb) { in alloc_urbs()
818 usb_free_urb(pegasus->tx_urb); in alloc_urbs()
819 usb_free_urb(pegasus->rx_urb); in alloc_urbs()
829 int res=-ENOMEM; in pegasus_open()
831 if (pegasus->rx_skb == NULL) in pegasus_open()
832 pegasus->rx_skb = __netdev_alloc_skb_ip_align(pegasus->net, in pegasus_open()
835 if (!pegasus->rx_skb) in pegasus_open()
838 set_registers(pegasus, EthID, 6, net->dev_addr); in pegasus_open()
840 usb_fill_bulk_urb(pegasus->rx_urb, pegasus->usb, in pegasus_open()
841 usb_rcvbulkpipe(pegasus->usb, 1), in pegasus_open()
842 pegasus->rx_skb->data, PEGASUS_MTU, in pegasus_open()
844 if ((res = usb_submit_urb(pegasus->rx_urb, GFP_KERNEL))) { in pegasus_open()
845 if (res == -ENODEV) in pegasus_open()
846 netif_device_detach(pegasus->net); in pegasus_open()
851 usb_fill_int_urb(pegasus->intr_urb, pegasus->usb, in pegasus_open()
852 usb_rcvintpipe(pegasus->usb, 3), in pegasus_open()
853 pegasus->intr_buff, sizeof(pegasus->intr_buff), in pegasus_open()
854 intr_callback, pegasus, pegasus->intr_interval); in pegasus_open()
855 if ((res = usb_submit_urb(pegasus->intr_urb, GFP_KERNEL))) { in pegasus_open()
856 if (res == -ENODEV) in pegasus_open()
857 netif_device_detach(pegasus->net); in pegasus_open()
859 usb_kill_urb(pegasus->rx_urb); in pegasus_open()
862 res = enable_net_traffic(net, pegasus->usb); in pegasus_open()
865 "can't enable_net_traffic() - %d\n", res); in pegasus_open()
866 res = -EIO; in pegasus_open()
867 usb_kill_urb(pegasus->rx_urb); in pegasus_open()
868 usb_kill_urb(pegasus->intr_urb); in pegasus_open()
884 if (!(pegasus->flags & PEGASUS_UNPLUG)) in pegasus_close()
886 tasklet_kill(&pegasus->rx_tl); in pegasus_close()
897 strscpy(info->driver, driver_name, sizeof(info->driver)); in pegasus_get_drvinfo()
898 usb_make_path(pegasus->usb, info->bus_info, sizeof(info->bus_info)); in pegasus_get_drvinfo()
905 pegasus_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) in pegasus_get_wol() argument
909 wol->supported = WAKE_MAGIC | WAKE_PHY; in pegasus_get_wol()
910 wol->wolopts = pegasus->wolopts; in pegasus_get_wol()
914 pegasus_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) in pegasus_set_wol() argument
920 if (wol->wolopts & ~WOL_SUPPORTED) in pegasus_set_wol()
921 return -EINVAL; in pegasus_set_wol()
923 if (wol->wolopts & WAKE_MAGIC) in pegasus_set_wol()
925 if (wol->wolopts & WAKE_PHY) in pegasus_set_wol()
928 if (wol->wolopts) in pegasus_set_wol()
929 pegasus->eth_regs[0] |= 0x10; in pegasus_set_wol()
931 pegasus->eth_regs[0] &= ~0x10; in pegasus_set_wol()
932 pegasus->wolopts = wol->wolopts; in pegasus_set_wol()
936 ret = device_set_wakeup_enable(&pegasus->usb->dev, in pegasus_set_wol()
937 wol->wolopts); in pegasus_set_wol()
943 struct ethtool_wolinfo wol; in pegasus_reset_wol() local
945 memset(&wol, 0, sizeof wol); in pegasus_reset_wol()
946 (void) pegasus_set_wol(dev, &wol); in pegasus_reset_wol()
956 mii_ethtool_get_link_ksettings(&pegasus->mii, ecmd); in pegasus_get_link_ksettings()
965 return mii_ethtool_set_link_ksettings(&pegasus->mii, ecmd); in pegasus_set_link_ksettings()
971 return mii_nway_restart(&pegasus->mii); in pegasus_nway_reset()
977 return mii_link_ok(&pegasus->mii); in pegasus_get_link()
983 return pegasus->msg_enable; in pegasus_get_msglevel()
989 pegasus->msg_enable = v; in pegasus_set_msglevel()
1007 __u16 *data = (__u16 *) &rq->ifr_ifru; in pegasus_siocdevprivate()
1013 data[0] = pegasus->phy; in pegasus_siocdevprivate()
1020 return -EPERM; in pegasus_siocdevprivate()
1021 write_mii_word(pegasus, pegasus->phy, data[1] & 0x1f, &data[2]); in pegasus_siocdevprivate()
1025 res = -EOPNOTSUPP; in pegasus_siocdevprivate()
1034 if (net->flags & IFF_PROMISC) { in pegasus_set_multicast()
1035 pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS; in pegasus_set_multicast()
1037 } else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) { in pegasus_set_multicast()
1038 pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST; in pegasus_set_multicast()
1039 pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; in pegasus_set_multicast()
1042 pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST; in pegasus_set_multicast()
1043 pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS; in pegasus_set_multicast()
1074 if ((pegasus->features & HAS_HOME_PNA) && mii_mode) in setup_pegasus_II()
1085 pegasus->chip = 0x8513; in setup_pegasus_II()
1087 pegasus->chip = 0; in setup_pegasus_II()
1093 if (pegasus->features & HAS_HOME_PNA && mii_mode) in setup_pegasus_II()
1100 netif_dbg(pegasus, drv, pegasus->net, "%s failed\n", __func__); in setup_pegasus_II()
1106 set_carrier(pegasus->net); in check_carrier()
1107 if (!(pegasus->flags & PEGASUS_UNPLUG)) { in check_carrier()
1108 queue_delayed_work(system_long_wq, &pegasus->carrier_check, in check_carrier()
1115 struct usb_device_descriptor *udd = &udev->descriptor; in pegasus_blacklisted()
1120 if ((udd->idVendor == cpu_to_le16(VENDOR_BELKIN)) && in pegasus_blacklisted()
1121 (udd->idProduct == cpu_to_le16(0x0121)) && in pegasus_blacklisted()
1122 (udd->bDeviceClass == USB_CLASS_WIRELESS_CONTROLLER) && in pegasus_blacklisted()
1123 (udd->bDeviceProtocol == 1)) in pegasus_blacklisted()
1135 int dev_index = id - pegasus_ids; in pegasus_probe()
1136 int res = -ENOMEM; in pegasus_probe()
1139 return -ENODEV; in pegasus_probe()
1146 pegasus->dev_index = dev_index; in pegasus_probe()
1150 dev_err(&intf->dev, "can't allocate %s\n", "urbs"); in pegasus_probe()
1154 tasklet_setup(&pegasus->rx_tl, rx_fixup); in pegasus_probe()
1156 INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier); in pegasus_probe()
1158 pegasus->intf = intf; in pegasus_probe()
1159 pegasus->usb = dev; in pegasus_probe()
1160 pegasus->net = net; in pegasus_probe()
1163 net->watchdog_timeo = PEGASUS_TX_TIMEOUT; in pegasus_probe()
1164 net->netdev_ops = &pegasus_netdev_ops; in pegasus_probe()
1165 net->ethtool_ops = &ops; in pegasus_probe()
1166 pegasus->mii.dev = net; in pegasus_probe()
1167 pegasus->mii.mdio_read = mdio_read; in pegasus_probe()
1168 pegasus->mii.mdio_write = mdio_write; in pegasus_probe()
1169 pegasus->mii.phy_id_mask = 0x1f; in pegasus_probe()
1170 pegasus->mii.reg_num_mask = 0x1f; in pegasus_probe()
1171 pegasus->msg_enable = netif_msg_init(msg_level, NETIF_MSG_DRV in pegasus_probe()
1174 pegasus->features = usb_dev_id[dev_index].private; in pegasus_probe()
1179 dev_err(&intf->dev, "can't reset MAC\n"); in pegasus_probe()
1180 res = -EIO; in pegasus_probe()
1184 if (pegasus->features & PEGASUS_II) { in pegasus_probe()
1185 dev_info(&intf->dev, "setup Pegasus II specific registers\n"); in pegasus_probe()
1188 pegasus->phy = mii_phy_probe(pegasus); in pegasus_probe()
1189 if (pegasus->phy == 0xff) { in pegasus_probe()
1190 dev_warn(&intf->dev, "can't locate MII phy, using default\n"); in pegasus_probe()
1191 pegasus->phy = 1; in pegasus_probe()
1193 pegasus->mii.phy_id = pegasus->phy; in pegasus_probe()
1195 SET_NETDEV_DEV(net, &intf->dev); in pegasus_probe()
1200 queue_delayed_work(system_long_wq, &pegasus->carrier_check, in pegasus_probe()
1202 dev_info(&intf->dev, "%s, %s, %pM\n", net->name, in pegasus_probe()
1203 usb_dev_id[dev_index].name, net->dev_addr); in pegasus_probe()
1222 dev_dbg(&intf->dev, "unregistering non-bound device?\n"); in pegasus_disconnect()
1226 pegasus->flags |= PEGASUS_UNPLUG; in pegasus_disconnect()
1227 cancel_delayed_work_sync(&pegasus->carrier_check); in pegasus_disconnect()
1228 unregister_netdev(pegasus->net); in pegasus_disconnect()
1231 if (pegasus->rx_skb != NULL) { in pegasus_disconnect()
1232 dev_kfree_skb(pegasus->rx_skb); in pegasus_disconnect()
1233 pegasus->rx_skb = NULL; in pegasus_disconnect()
1235 free_netdev(pegasus->net); in pegasus_disconnect()
1242 netif_device_detach(pegasus->net); in pegasus_suspend()
1243 cancel_delayed_work_sync(&pegasus->carrier_check); in pegasus_suspend()
1244 if (netif_running(pegasus->net)) { in pegasus_suspend()
1245 usb_kill_urb(pegasus->rx_urb); in pegasus_suspend()
1246 usb_kill_urb(pegasus->intr_urb); in pegasus_suspend()
1255 netif_device_attach(pegasus->net); in pegasus_resume()
1256 if (netif_running(pegasus->net)) { in pegasus_resume()
1257 pegasus->rx_urb->status = 0; in pegasus_resume()
1258 pegasus->rx_urb->actual_length = 0; in pegasus_resume()
1259 read_bulk_callback(pegasus->rx_urb); in pegasus_resume()
1261 pegasus->intr_urb->status = 0; in pegasus_resume()
1262 pegasus->intr_urb->actual_length = 0; in pegasus_resume()
1263 intr_callback(pegasus->intr_urb); in pegasus_resume()
1265 queue_delayed_work(system_long_wq, &pegasus->carrier_check, in pegasus_resume()