Lines Matching refs:ndp
31 bool ncsi_channel_is_last(struct ncsi_dev_priv *ndp, in ncsi_channel_is_last() argument
37 NCSI_FOR_EACH_PACKAGE(ndp, np) in ncsi_channel_is_last()
49 static void ncsi_report_link(struct ncsi_dev_priv *ndp, bool force_down) in ncsi_report_link() argument
51 struct ncsi_dev *nd = &ndp->ndev; in ncsi_report_link()
63 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_report_link()
91 struct ncsi_dev_priv *ndp = np->ndp; in ncsi_channel_monitor() local
119 nca.ndp = ndp; in ncsi_channel_monitor()
126 netdev_err(ndp->ndev.dev, "Error %d sending GLS\n", in ncsi_channel_monitor()
132 netdev_err(ndp->ndev.dev, "NCSI Channel %d timed out!\n", in ncsi_channel_monitor()
134 ncsi_report_link(ndp, true); in ncsi_channel_monitor()
135 ndp->flags |= NCSI_DEV_RESHUFFLE; in ncsi_channel_monitor()
145 spin_lock_irqsave(&ndp->lock, flags); in ncsi_channel_monitor()
147 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_channel_monitor()
148 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_channel_monitor()
149 ncsi_process_next_channel(ndp); in ncsi_channel_monitor()
261 struct ncsi_package *ncsi_find_package(struct ncsi_dev_priv *ndp, in ncsi_find_package() argument
266 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_find_package()
274 struct ncsi_package *ncsi_add_package(struct ncsi_dev_priv *ndp, in ncsi_add_package() argument
285 np->ndp = ndp; in ncsi_add_package()
290 spin_lock_irqsave(&ndp->lock, flags); in ncsi_add_package()
291 tmp = ncsi_find_package(ndp, id); in ncsi_add_package()
293 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_add_package()
298 list_add_tail_rcu(&np->node, &ndp->packages); in ncsi_add_package()
299 ndp->package_num++; in ncsi_add_package()
300 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_add_package()
307 struct ncsi_dev_priv *ndp = np->ndp; in ncsi_remove_package() local
316 spin_lock_irqsave(&ndp->lock, flags); in ncsi_remove_package()
318 ndp->package_num--; in ncsi_remove_package()
319 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_remove_package()
324 void ncsi_find_package_and_channel(struct ncsi_dev_priv *ndp, in ncsi_find_package_and_channel() argument
332 p = ncsi_find_package(ndp, NCSI_PACKAGE_INDEX(id)); in ncsi_find_package_and_channel()
345 struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, in ncsi_alloc_request() argument
349 int i, limit = ARRAY_SIZE(ndp->requests); in ncsi_alloc_request()
353 spin_lock_irqsave(&ndp->lock, flags); in ncsi_alloc_request()
354 for (i = ndp->request_id; i < limit; i++) { in ncsi_alloc_request()
355 if (ndp->requests[i].used) in ncsi_alloc_request()
358 nr = &ndp->requests[i]; in ncsi_alloc_request()
361 ndp->request_id = i + 1; in ncsi_alloc_request()
366 for (i = NCSI_REQ_START_IDX; i < ndp->request_id; i++) { in ncsi_alloc_request()
367 if (ndp->requests[i].used) in ncsi_alloc_request()
370 nr = &ndp->requests[i]; in ncsi_alloc_request()
373 ndp->request_id = i + 1; in ncsi_alloc_request()
378 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_alloc_request()
384 struct ncsi_dev_priv *ndp = nr->ndp; in ncsi_free_request() local
394 spin_lock_irqsave(&ndp->lock, flags); in ncsi_free_request()
401 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_free_request()
403 if (driven && cmd && --ndp->pending_req_num == 0) in ncsi_free_request()
404 schedule_work(&ndp->work); in ncsi_free_request()
413 struct ncsi_dev_priv *ndp; in ncsi_find_dev() local
415 NCSI_FOR_EACH_DEV(ndp) { in ncsi_find_dev()
416 if (ndp->ndev.dev == dev) in ncsi_find_dev()
417 return &ndp->ndev; in ncsi_find_dev()
426 struct ncsi_dev_priv *ndp = nr->ndp; in ncsi_request_timeout() local
435 spin_lock_irqsave(&ndp->lock, flags); in ncsi_request_timeout()
438 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_request_timeout()
441 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_request_timeout()
448 ncsi_find_package_and_channel(ndp, in ncsi_request_timeout()
459 static void ncsi_suspend_channel(struct ncsi_dev_priv *ndp) in ncsi_suspend_channel() argument
461 struct ncsi_dev *nd = &ndp->ndev; in ncsi_suspend_channel()
468 np = ndp->active_package; in ncsi_suspend_channel()
469 nc = ndp->active_channel; in ncsi_suspend_channel()
470 nca.ndp = ndp; in ncsi_suspend_channel()
477 ndp->pending_req_num = 1; in ncsi_suspend_channel()
482 if (ndp->flags & NCSI_DEV_HWA) in ncsi_suspend_channel()
495 if (ndp->flags & NCSI_DEV_RESHUFFLE) in ncsi_suspend_channel()
505 ndp->pending_req_num = np->channel_num; in ncsi_suspend_channel()
520 ndp->pending_req_num = 1; in ncsi_suspend_channel()
533 ndp->pending_req_num = 1; in ncsi_suspend_channel()
556 ndp->pending_req_num = 1; in ncsi_suspend_channel()
572 if (ndp->flags & NCSI_DEV_RESET) in ncsi_suspend_channel()
575 ncsi_process_next_channel(ndp); in ncsi_suspend_channel()
590 static int clear_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc, in clear_one_vid() argument
625 static int set_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc, in set_one_vid() argument
635 if (list_empty(&ndp->vlan_vids)) in set_one_vid()
644 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) { in set_one_vid()
664 netdev_err(ndp->ndev.dev, in set_one_vid()
702 netdev_err(nca->ndp->ndev.dev, in ncsi_oem_gma_handler_bcm()
727 netdev_err(nca->ndp->ndev.dev, in ncsi_oem_gma_handler_mlx()
748 if (nca->ndp->gma_flag == 1) in ncsi_gma_handler()
761 netdev_err(nca->ndp->ndev.dev, in ncsi_gma_handler()
768 nca->ndp->gma_flag = 1; in ncsi_gma_handler()
777 static bool ncsi_channel_is_tx(struct ncsi_dev_priv *ndp, in ncsi_channel_is_tx() argument
787 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_channel_is_tx()
788 if (!ndp->multi_package && np != nc->package) in ncsi_channel_is_tx()
798 list_for_each_entry_rcu(channel, &ndp->channel_queue, link) { in ncsi_channel_is_tx()
810 list_for_each_entry_rcu(channel, &ndp->channel_queue, link) in ncsi_channel_is_tx()
819 int ncsi_update_tx_channel(struct ncsi_dev_priv *ndp, in ncsi_update_tx_channel() argument
829 if (!package->multi_channel && !ndp->multi_package) in ncsi_update_tx_channel()
830 netdev_warn(ndp->ndev.dev, in ncsi_update_tx_channel()
832 nca.ndp = ndp; in ncsi_update_tx_channel()
836 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_update_tx_channel()
839 if (!ndp->multi_package && np != package) in ncsi_update_tx_channel()
850 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_update_tx_channel()
853 if (!ndp->multi_package && np != package) in ncsi_update_tx_channel()
855 if (!(ndp->package_whitelist & (0x1 << np->id))) in ncsi_update_tx_channel()
888 netdev_err(ndp->ndev.dev, in ncsi_update_tx_channel()
893 netdev_info(ndp->ndev.dev, "NCSI: channel %u enables Tx\n", enable->id); in ncsi_update_tx_channel()
900 netdev_err(ndp->ndev.dev, in ncsi_update_tx_channel()
907 static void ncsi_configure_channel(struct ncsi_dev_priv *ndp) in ncsi_configure_channel() argument
909 struct ncsi_package *np = ndp->active_package; in ncsi_configure_channel()
910 struct ncsi_channel *nc = ndp->active_channel; in ncsi_configure_channel()
912 struct ncsi_dev *nd = &ndp->ndev; in ncsi_configure_channel()
919 nca.ndp = ndp; in ncsi_configure_channel()
924 ndp->pending_req_num = 1; in ncsi_configure_channel()
928 if (ndp->flags & NCSI_DEV_HWA) in ncsi_configure_channel()
936 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
944 ndp->pending_req_num = 1; in ncsi_configure_channel()
952 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
967 ndp->pending_req_num = 1; in ncsi_configure_channel()
972 schedule_work(&ndp->work); in ncsi_configure_channel()
985 ndp->pending_req_num = 1; in ncsi_configure_channel()
992 ret = clear_one_vid(ndp, nc, &nca); in ncsi_configure_channel()
995 schedule_work(&ndp->work); in ncsi_configure_channel()
1002 ret = set_one_vid(ndp, nc, &nca); in ncsi_configure_channel()
1005 schedule_work(&ndp->work); in ncsi_configure_channel()
1012 if (list_empty(&ndp->vlan_vids)) { in ncsi_configure_channel()
1040 else if (ncsi_channel_is_tx(ndp, nc)) in ncsi_configure_channel()
1046 if (ncsi_channel_is_tx(ndp, nc)) in ncsi_configure_channel()
1053 netdev_info(ndp->ndev.dev, in ncsi_configure_channel()
1076 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
1083 netdev_dbg(ndp->ndev.dev, "NCSI: channel %u config done\n", in ncsi_configure_channel()
1088 if (ndp->flags & NCSI_DEV_RESET) { in ncsi_configure_channel()
1105 spin_lock_irqsave(&ndp->lock, flags); in ncsi_configure_channel()
1106 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_configure_channel()
1107 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_configure_channel()
1110 ncsi_process_next_channel(ndp); in ncsi_configure_channel()
1118 netdev_dbg(ndp->ndev.dev, in ncsi_configure_channel()
1125 spin_lock_irqsave(&ndp->lock, flags); in ncsi_configure_channel()
1126 ndp->hot_channel = hot_nc; in ncsi_configure_channel()
1127 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_configure_channel()
1130 ncsi_process_next_channel(ndp); in ncsi_configure_channel()
1140 ncsi_report_link(ndp, true); in ncsi_configure_channel()
1143 static int ncsi_choose_active_channel(struct ncsi_dev_priv *ndp) in ncsi_choose_active_channel() argument
1151 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1152 hot_nc = ndp->hot_channel; in ncsi_choose_active_channel()
1153 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1162 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_choose_active_channel()
1163 if (!(ndp->package_whitelist & (0x1 << np->id))) in ncsi_choose_active_channel()
1194 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1196 &ndp->channel_queue); in ncsi_choose_active_channel()
1197 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1199 netdev_dbg(ndp->ndev.dev, in ncsi_choose_active_channel()
1210 if (with_link && !ndp->multi_package) in ncsi_choose_active_channel()
1214 if (list_empty(&ndp->channel_queue) && found) { in ncsi_choose_active_channel()
1215 netdev_info(ndp->ndev.dev, in ncsi_choose_active_channel()
1218 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1219 list_add_tail_rcu(&found->link, &ndp->channel_queue); in ncsi_choose_active_channel()
1220 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1222 netdev_warn(ndp->ndev.dev, in ncsi_choose_active_channel()
1224 ncsi_report_link(ndp, true); in ncsi_choose_active_channel()
1228 return ncsi_process_next_channel(ndp); in ncsi_choose_active_channel()
1231 static bool ncsi_check_hwa(struct ncsi_dev_priv *ndp) in ncsi_check_hwa() argument
1241 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_check_hwa()
1249 ndp->flags &= ~NCSI_DEV_HWA; in ncsi_check_hwa()
1256 ndp->flags |= NCSI_DEV_HWA; in ncsi_check_hwa()
1260 ndp->flags &= ~NCSI_DEV_HWA; in ncsi_check_hwa()
1264 static void ncsi_probe_channel(struct ncsi_dev_priv *ndp) in ncsi_probe_channel() argument
1266 struct ncsi_dev *nd = &ndp->ndev; in ncsi_probe_channel()
1273 nca.ndp = ndp; in ncsi_probe_channel()
1280 ndp->pending_req_num = 8; in ncsi_probe_channel()
1295 ndp->pending_req_num = 1; in ncsi_probe_channel()
1299 nca.package = ndp->package_probe_id; in ncsi_probe_channel()
1307 ndp->active_package = ncsi_find_package(ndp, in ncsi_probe_channel()
1308 ndp->package_probe_id); in ncsi_probe_channel()
1309 if (!ndp->active_package) { in ncsi_probe_channel()
1312 schedule_work(&ndp->work); in ncsi_probe_channel()
1316 schedule_work(&ndp->work); in ncsi_probe_channel()
1319 ndp->pending_req_num = NCSI_RESERVED_CHANNEL; in ncsi_probe_channel()
1323 nca.package = ndp->active_package->id; in ncsi_probe_channel()
1336 np = ndp->active_package; in ncsi_probe_channel()
1337 ndp->pending_req_num = np->channel_num; in ncsi_probe_channel()
1363 ndp->pending_req_num = 1; in ncsi_probe_channel()
1367 nca.package = ndp->package_probe_id; in ncsi_probe_channel()
1374 ndp->package_probe_id++; in ncsi_probe_channel()
1375 if (ndp->package_probe_id >= 8) { in ncsi_probe_channel()
1377 ndp->flags |= NCSI_DEV_PROBED; in ncsi_probe_channel()
1381 ndp->active_package = NULL; in ncsi_probe_channel()
1388 if (ndp->flags & NCSI_DEV_PROBED) { in ncsi_probe_channel()
1390 ncsi_check_hwa(ndp); in ncsi_probe_channel()
1391 ncsi_choose_active_channel(ndp); in ncsi_probe_channel()
1396 netdev_err(ndp->ndev.dev, in ncsi_probe_channel()
1399 ncsi_report_link(ndp, true); in ncsi_probe_channel()
1404 struct ncsi_dev_priv *ndp = container_of(work, in ncsi_dev_work() local
1406 struct ncsi_dev *nd = &ndp->ndev; in ncsi_dev_work()
1410 ncsi_probe_channel(ndp); in ncsi_dev_work()
1413 ncsi_suspend_channel(ndp); in ncsi_dev_work()
1416 ncsi_configure_channel(ndp); in ncsi_dev_work()
1424 int ncsi_process_next_channel(struct ncsi_dev_priv *ndp) in ncsi_process_next_channel() argument
1430 spin_lock_irqsave(&ndp->lock, flags); in ncsi_process_next_channel()
1431 nc = list_first_or_null_rcu(&ndp->channel_queue, in ncsi_process_next_channel()
1434 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_process_next_channel()
1439 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_process_next_channel()
1446 ndp->active_channel = nc; in ncsi_process_next_channel()
1447 ndp->active_package = nc->package; in ncsi_process_next_channel()
1451 ndp->ndev.state = ncsi_dev_state_config; in ncsi_process_next_channel()
1452 netdev_dbg(ndp->ndev.dev, "NCSI: configuring channel %u\n", in ncsi_process_next_channel()
1454 ncsi_configure_channel(ndp); in ncsi_process_next_channel()
1457 ndp->ndev.state = ncsi_dev_state_suspend; in ncsi_process_next_channel()
1458 netdev_dbg(ndp->ndev.dev, "NCSI: suspending channel %u\n", in ncsi_process_next_channel()
1460 ncsi_suspend_channel(ndp); in ncsi_process_next_channel()
1463 netdev_err(ndp->ndev.dev, "Invalid state 0x%x on %d:%d\n", in ncsi_process_next_channel()
1465 ncsi_report_link(ndp, false); in ncsi_process_next_channel()
1472 ndp->active_channel = NULL; in ncsi_process_next_channel()
1473 ndp->active_package = NULL; in ncsi_process_next_channel()
1474 if (ndp->flags & NCSI_DEV_RESHUFFLE) { in ncsi_process_next_channel()
1475 ndp->flags &= ~NCSI_DEV_RESHUFFLE; in ncsi_process_next_channel()
1476 return ncsi_choose_active_channel(ndp); in ncsi_process_next_channel()
1479 ncsi_report_link(ndp, false); in ncsi_process_next_channel()
1483 static int ncsi_kick_channels(struct ncsi_dev_priv *ndp) in ncsi_kick_channels() argument
1485 struct ncsi_dev *nd = &ndp->ndev; in ncsi_kick_channels()
1491 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_kick_channels()
1502 if ((ndp->ndev.state & 0xff00) == in ncsi_kick_channels()
1521 spin_lock_irqsave(&ndp->lock, flags); in ncsi_kick_channels()
1522 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_kick_channels()
1523 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_kick_channels()
1535 struct ncsi_dev_priv *ndp; in ncsi_vlan_rx_add_vid() local
1550 ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_vlan_rx_add_vid()
1553 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) { in ncsi_vlan_rx_add_vid()
1574 list_add_rcu(&vlan->list, &ndp->vlan_vids); in ncsi_vlan_rx_add_vid()
1578 found = ncsi_kick_channels(ndp) != 0; in ncsi_vlan_rx_add_vid()
1580 return found ? ncsi_process_next_channel(ndp) : 0; in ncsi_vlan_rx_add_vid()
1587 struct ncsi_dev_priv *ndp; in ncsi_vlan_rx_kill_vid() local
1600 ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_vlan_rx_kill_vid()
1603 list_for_each_entry_safe(vlan, tmp, &ndp->vlan_vids, list) in ncsi_vlan_rx_kill_vid()
1616 found = ncsi_kick_channels(ndp) != 0; in ncsi_vlan_rx_kill_vid()
1618 return found ? ncsi_process_next_channel(ndp) : 0; in ncsi_vlan_rx_kill_vid()
1625 struct ncsi_dev_priv *ndp; in ncsi_register_dev() local
1636 ndp = kzalloc(sizeof(*ndp), GFP_ATOMIC); in ncsi_register_dev()
1637 if (!ndp) in ncsi_register_dev()
1640 nd = &ndp->ndev; in ncsi_register_dev()
1644 ndp->pending_req_num = 0; in ncsi_register_dev()
1645 INIT_LIST_HEAD(&ndp->channel_queue); in ncsi_register_dev()
1646 INIT_LIST_HEAD(&ndp->vlan_vids); in ncsi_register_dev()
1647 INIT_WORK(&ndp->work, ncsi_dev_work); in ncsi_register_dev()
1648 ndp->package_whitelist = UINT_MAX; in ncsi_register_dev()
1651 spin_lock_init(&ndp->lock); in ncsi_register_dev()
1652 INIT_LIST_HEAD(&ndp->packages); in ncsi_register_dev()
1653 ndp->request_id = NCSI_REQ_START_IDX; in ncsi_register_dev()
1654 for (i = 0; i < ARRAY_SIZE(ndp->requests); i++) { in ncsi_register_dev()
1655 ndp->requests[i].id = i; in ncsi_register_dev()
1656 ndp->requests[i].ndp = ndp; in ncsi_register_dev()
1657 timer_setup(&ndp->requests[i].timer, ncsi_request_timeout, 0); in ncsi_register_dev()
1661 list_add_tail_rcu(&ndp->node, &ncsi_dev_list); in ncsi_register_dev()
1665 ndp->ptype.type = cpu_to_be16(ETH_P_NCSI); in ncsi_register_dev()
1666 ndp->ptype.func = ncsi_rcv_rsp; in ncsi_register_dev()
1667 ndp->ptype.dev = dev; in ncsi_register_dev()
1668 dev_add_pack(&ndp->ptype); in ncsi_register_dev()
1679 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_start_dev() local
1685 if (!(ndp->flags & NCSI_DEV_PROBED)) { in ncsi_start_dev()
1686 ndp->package_probe_id = 0; in ncsi_start_dev()
1688 schedule_work(&ndp->work); in ncsi_start_dev()
1698 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_stop_dev() local
1709 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_stop_dev()
1723 netdev_dbg(ndp->ndev.dev, "NCSI: Stopping device\n"); in ncsi_stop_dev()
1724 ncsi_report_link(ndp, true); in ncsi_stop_dev()
1730 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_reset_dev() local
1735 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1737 if (!(ndp->flags & NCSI_DEV_RESET)) { in ncsi_reset_dev()
1743 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1751 ndp->flags |= NCSI_DEV_RESET; in ncsi_reset_dev()
1752 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1764 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1769 if (!list_empty(&ndp->channel_queue)) { in ncsi_reset_dev()
1771 list_for_each_entry_safe(nc, tmp, &ndp->channel_queue, link) in ncsi_reset_dev()
1774 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1777 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_reset_dev()
1797 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1798 ndp->flags &= ~NCSI_DEV_RESET; in ncsi_reset_dev()
1799 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1800 return ncsi_choose_active_channel(ndp); in ncsi_reset_dev()
1803 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1804 ndp->flags |= NCSI_DEV_RESET; in ncsi_reset_dev()
1805 ndp->active_channel = active; in ncsi_reset_dev()
1806 ndp->active_package = active->package; in ncsi_reset_dev()
1807 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1810 schedule_work(&ndp->work); in ncsi_reset_dev()
1816 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_unregister_dev() local
1820 dev_remove_pack(&ndp->ptype); in ncsi_unregister_dev()
1822 list_for_each_entry_safe(np, tmp, &ndp->packages, node) in ncsi_unregister_dev()
1826 list_del_rcu(&ndp->node); in ncsi_unregister_dev()
1831 kfree(ndp); in ncsi_unregister_dev()