Lines Matching refs:ndp

33 bool ncsi_channel_is_last(struct ncsi_dev_priv *ndp,  in ncsi_channel_is_last()  argument
39 NCSI_FOR_EACH_PACKAGE(ndp, np) in ncsi_channel_is_last()
51 static void ncsi_report_link(struct ncsi_dev_priv *ndp, bool force_down) in ncsi_report_link() argument
53 struct ncsi_dev *nd = &ndp->ndev; in ncsi_report_link()
65 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_report_link()
93 struct ncsi_dev_priv *ndp = np->ndp; in ncsi_channel_monitor() local
116 netdev_warn(ndp->ndev.dev, in ncsi_channel_monitor()
128 nca.ndp = ndp; in ncsi_channel_monitor()
135 netdev_err(ndp->ndev.dev, "Error %d sending GLS\n", in ncsi_channel_monitor()
141 netdev_err(ndp->ndev.dev, "NCSI Channel %d timed out!\n", in ncsi_channel_monitor()
143 ncsi_report_link(ndp, true); in ncsi_channel_monitor()
144 ndp->flags |= NCSI_DEV_RESHUFFLE; in ncsi_channel_monitor()
153 spin_lock_irqsave(&ndp->lock, flags); in ncsi_channel_monitor()
155 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_channel_monitor()
156 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_channel_monitor()
157 ncsi_process_next_channel(ndp); in ncsi_channel_monitor()
269 struct ncsi_package *ncsi_find_package(struct ncsi_dev_priv *ndp, in ncsi_find_package() argument
274 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_find_package()
282 struct ncsi_package *ncsi_add_package(struct ncsi_dev_priv *ndp, in ncsi_add_package() argument
293 np->ndp = ndp; in ncsi_add_package()
298 spin_lock_irqsave(&ndp->lock, flags); in ncsi_add_package()
299 tmp = ncsi_find_package(ndp, id); in ncsi_add_package()
301 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_add_package()
306 list_add_tail_rcu(&np->node, &ndp->packages); in ncsi_add_package()
307 ndp->package_num++; in ncsi_add_package()
308 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_add_package()
315 struct ncsi_dev_priv *ndp = np->ndp; in ncsi_remove_package() local
324 spin_lock_irqsave(&ndp->lock, flags); in ncsi_remove_package()
326 ndp->package_num--; in ncsi_remove_package()
327 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_remove_package()
332 void ncsi_find_package_and_channel(struct ncsi_dev_priv *ndp, in ncsi_find_package_and_channel() argument
340 p = ncsi_find_package(ndp, NCSI_PACKAGE_INDEX(id)); in ncsi_find_package_and_channel()
353 struct ncsi_request *ncsi_alloc_request(struct ncsi_dev_priv *ndp, in ncsi_alloc_request() argument
357 int i, limit = ARRAY_SIZE(ndp->requests); in ncsi_alloc_request()
361 spin_lock_irqsave(&ndp->lock, flags); in ncsi_alloc_request()
362 for (i = ndp->request_id; i < limit; i++) { in ncsi_alloc_request()
363 if (ndp->requests[i].used) in ncsi_alloc_request()
366 nr = &ndp->requests[i]; in ncsi_alloc_request()
369 ndp->request_id = i + 1; in ncsi_alloc_request()
374 for (i = NCSI_REQ_START_IDX; i < ndp->request_id; i++) { in ncsi_alloc_request()
375 if (ndp->requests[i].used) in ncsi_alloc_request()
378 nr = &ndp->requests[i]; in ncsi_alloc_request()
381 ndp->request_id = i + 1; in ncsi_alloc_request()
386 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_alloc_request()
392 struct ncsi_dev_priv *ndp = nr->ndp; in ncsi_free_request() local
402 spin_lock_irqsave(&ndp->lock, flags); in ncsi_free_request()
409 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_free_request()
411 if (driven && cmd && --ndp->pending_req_num == 0) in ncsi_free_request()
412 schedule_work(&ndp->work); in ncsi_free_request()
421 struct ncsi_dev_priv *ndp; in ncsi_find_dev() local
423 NCSI_FOR_EACH_DEV(ndp) { in ncsi_find_dev()
424 if (ndp->ndev.dev == dev) in ncsi_find_dev()
425 return &ndp->ndev; in ncsi_find_dev()
434 struct ncsi_dev_priv *ndp = nr->ndp; in ncsi_request_timeout() local
443 spin_lock_irqsave(&ndp->lock, flags); in ncsi_request_timeout()
446 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_request_timeout()
449 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_request_timeout()
456 ncsi_find_package_and_channel(ndp, in ncsi_request_timeout()
467 static void ncsi_suspend_channel(struct ncsi_dev_priv *ndp) in ncsi_suspend_channel() argument
469 struct ncsi_dev *nd = &ndp->ndev; in ncsi_suspend_channel()
476 np = ndp->active_package; in ncsi_suspend_channel()
477 nc = ndp->active_channel; in ncsi_suspend_channel()
478 nca.ndp = ndp; in ncsi_suspend_channel()
485 ndp->pending_req_num = 1; in ncsi_suspend_channel()
490 if (ndp->flags & NCSI_DEV_HWA) in ncsi_suspend_channel()
503 if (ndp->flags & NCSI_DEV_RESHUFFLE) in ncsi_suspend_channel()
513 ndp->pending_req_num = np->channel_num; in ncsi_suspend_channel()
528 ndp->pending_req_num = 1; in ncsi_suspend_channel()
541 ndp->pending_req_num = 1; in ncsi_suspend_channel()
564 ndp->pending_req_num = 1; in ncsi_suspend_channel()
580 if (ndp->flags & NCSI_DEV_RESET) in ncsi_suspend_channel()
583 ncsi_process_next_channel(ndp); in ncsi_suspend_channel()
598 static int clear_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc, in clear_one_vid() argument
633 static int set_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc, in set_one_vid() argument
643 if (list_empty(&ndp->vlan_vids)) in set_one_vid()
652 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) { in set_one_vid()
672 netdev_err(ndp->ndev.dev, in set_one_vid()
710 netdev_err(nca->ndp->ndev.dev, in ncsi_oem_gma_handler_bcm()
735 netdev_err(nca->ndp->ndev.dev, in ncsi_oem_gma_handler_mlx()
754 nca->ndp->ndev.dev->dev_addr, ETH_ALEN); in ncsi_oem_smaf_mlx()
763 netdev_err(nca->ndp->ndev.dev, in ncsi_oem_smaf_mlx()
784 if (nca->ndp->gma_flag == 1) in ncsi_gma_handler()
797 netdev_err(nca->ndp->ndev.dev, in ncsi_gma_handler()
810 static bool ncsi_channel_is_tx(struct ncsi_dev_priv *ndp, in ncsi_channel_is_tx() argument
820 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_channel_is_tx()
821 if (!ndp->multi_package && np != nc->package) in ncsi_channel_is_tx()
831 list_for_each_entry_rcu(channel, &ndp->channel_queue, link) { in ncsi_channel_is_tx()
843 list_for_each_entry_rcu(channel, &ndp->channel_queue, link) in ncsi_channel_is_tx()
852 int ncsi_update_tx_channel(struct ncsi_dev_priv *ndp, in ncsi_update_tx_channel() argument
862 if (!package->multi_channel && !ndp->multi_package) in ncsi_update_tx_channel()
863 netdev_warn(ndp->ndev.dev, in ncsi_update_tx_channel()
865 nca.ndp = ndp; in ncsi_update_tx_channel()
869 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_update_tx_channel()
872 if (!ndp->multi_package && np != package) in ncsi_update_tx_channel()
883 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_update_tx_channel()
886 if (!ndp->multi_package && np != package) in ncsi_update_tx_channel()
888 if (!(ndp->package_whitelist & (0x1 << np->id))) in ncsi_update_tx_channel()
921 netdev_err(ndp->ndev.dev, in ncsi_update_tx_channel()
926 netdev_info(ndp->ndev.dev, "NCSI: channel %u enables Tx\n", enable->id); in ncsi_update_tx_channel()
933 netdev_err(ndp->ndev.dev, in ncsi_update_tx_channel()
940 static void ncsi_configure_channel(struct ncsi_dev_priv *ndp) in ncsi_configure_channel() argument
942 struct ncsi_package *np = ndp->active_package; in ncsi_configure_channel()
943 struct ncsi_channel *nc = ndp->active_channel; in ncsi_configure_channel()
945 struct ncsi_dev *nd = &ndp->ndev; in ncsi_configure_channel()
952 nca.ndp = ndp; in ncsi_configure_channel()
957 ndp->pending_req_num = 1; in ncsi_configure_channel()
961 if (ndp->flags & NCSI_DEV_HWA) in ncsi_configure_channel()
969 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
977 ndp->pending_req_num = 1; in ncsi_configure_channel()
985 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
1000 ndp->pending_req_num = 1; in ncsi_configure_channel()
1005 schedule_work(&ndp->work); in ncsi_configure_channel()
1018 ndp->pending_req_num = 1; in ncsi_configure_channel()
1025 ret = clear_one_vid(ndp, nc, &nca); in ncsi_configure_channel()
1028 schedule_work(&ndp->work); in ncsi_configure_channel()
1035 ret = set_one_vid(ndp, nc, &nca); in ncsi_configure_channel()
1038 schedule_work(&ndp->work); in ncsi_configure_channel()
1045 if (list_empty(&ndp->vlan_vids)) { in ncsi_configure_channel()
1073 else if (ncsi_channel_is_tx(ndp, nc)) in ncsi_configure_channel()
1079 if (ncsi_channel_is_tx(ndp, nc)) in ncsi_configure_channel()
1086 netdev_info(ndp->ndev.dev, in ncsi_configure_channel()
1109 netdev_err(ndp->ndev.dev, in ncsi_configure_channel()
1116 netdev_dbg(ndp->ndev.dev, "NCSI: channel %u config done\n", in ncsi_configure_channel()
1121 if (ndp->flags & NCSI_DEV_RESET) { in ncsi_configure_channel()
1138 spin_lock_irqsave(&ndp->lock, flags); in ncsi_configure_channel()
1139 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_configure_channel()
1140 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_configure_channel()
1143 ncsi_process_next_channel(ndp); in ncsi_configure_channel()
1151 netdev_dbg(ndp->ndev.dev, in ncsi_configure_channel()
1158 spin_lock_irqsave(&ndp->lock, flags); in ncsi_configure_channel()
1159 ndp->hot_channel = hot_nc; in ncsi_configure_channel()
1160 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_configure_channel()
1163 ncsi_process_next_channel(ndp); in ncsi_configure_channel()
1173 ncsi_report_link(ndp, true); in ncsi_configure_channel()
1176 static int ncsi_choose_active_channel(struct ncsi_dev_priv *ndp) in ncsi_choose_active_channel() argument
1184 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1185 hot_nc = ndp->hot_channel; in ncsi_choose_active_channel()
1186 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1195 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_choose_active_channel()
1196 if (!(ndp->package_whitelist & (0x1 << np->id))) in ncsi_choose_active_channel()
1227 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1229 &ndp->channel_queue); in ncsi_choose_active_channel()
1230 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1232 netdev_dbg(ndp->ndev.dev, in ncsi_choose_active_channel()
1243 if (with_link && !ndp->multi_package) in ncsi_choose_active_channel()
1247 if (list_empty(&ndp->channel_queue) && found) { in ncsi_choose_active_channel()
1248 netdev_info(ndp->ndev.dev, in ncsi_choose_active_channel()
1251 spin_lock_irqsave(&ndp->lock, flags); in ncsi_choose_active_channel()
1252 list_add_tail_rcu(&found->link, &ndp->channel_queue); in ncsi_choose_active_channel()
1253 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_choose_active_channel()
1255 netdev_warn(ndp->ndev.dev, in ncsi_choose_active_channel()
1257 ncsi_report_link(ndp, true); in ncsi_choose_active_channel()
1261 return ncsi_process_next_channel(ndp); in ncsi_choose_active_channel()
1264 static bool ncsi_check_hwa(struct ncsi_dev_priv *ndp) in ncsi_check_hwa() argument
1274 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_check_hwa()
1282 ndp->flags &= ~NCSI_DEV_HWA; in ncsi_check_hwa()
1289 ndp->flags |= NCSI_DEV_HWA; in ncsi_check_hwa()
1293 ndp->flags &= ~NCSI_DEV_HWA; in ncsi_check_hwa()
1297 static void ncsi_probe_channel(struct ncsi_dev_priv *ndp) in ncsi_probe_channel() argument
1299 struct ncsi_dev *nd = &ndp->ndev; in ncsi_probe_channel()
1306 nca.ndp = ndp; in ncsi_probe_channel()
1313 ndp->pending_req_num = 8; in ncsi_probe_channel()
1328 ndp->pending_req_num = 1; in ncsi_probe_channel()
1332 nca.package = ndp->package_probe_id; in ncsi_probe_channel()
1340 ndp->active_package = ncsi_find_package(ndp, in ncsi_probe_channel()
1341 ndp->package_probe_id); in ncsi_probe_channel()
1342 if (!ndp->active_package) { in ncsi_probe_channel()
1345 schedule_work(&ndp->work); in ncsi_probe_channel()
1350 ndp->mlx_multi_host) in ncsi_probe_channel()
1353 schedule_work(&ndp->work); in ncsi_probe_channel()
1357 ndp->pending_req_num = 1; in ncsi_probe_channel()
1360 nca.package = ndp->active_package->id; in ncsi_probe_channel()
1369 ndp->pending_req_num = 1; in ncsi_probe_channel()
1372 nca.package = ndp->active_package->id; in ncsi_probe_channel()
1382 ndp->pending_req_num = NCSI_RESERVED_CHANNEL; in ncsi_probe_channel()
1386 nca.package = ndp->active_package->id; in ncsi_probe_channel()
1399 np = ndp->active_package; in ncsi_probe_channel()
1400 ndp->pending_req_num = np->channel_num; in ncsi_probe_channel()
1426 ndp->pending_req_num = 1; in ncsi_probe_channel()
1430 nca.package = ndp->package_probe_id; in ncsi_probe_channel()
1437 ndp->package_probe_id++; in ncsi_probe_channel()
1438 if (ndp->package_probe_id >= 8) { in ncsi_probe_channel()
1440 ndp->flags |= NCSI_DEV_PROBED; in ncsi_probe_channel()
1444 ndp->active_package = NULL; in ncsi_probe_channel()
1451 if (ndp->flags & NCSI_DEV_PROBED) { in ncsi_probe_channel()
1453 ncsi_check_hwa(ndp); in ncsi_probe_channel()
1454 ncsi_choose_active_channel(ndp); in ncsi_probe_channel()
1459 netdev_err(ndp->ndev.dev, in ncsi_probe_channel()
1462 ncsi_report_link(ndp, true); in ncsi_probe_channel()
1467 struct ncsi_dev_priv *ndp = container_of(work, in ncsi_dev_work() local
1469 struct ncsi_dev *nd = &ndp->ndev; in ncsi_dev_work()
1473 ncsi_probe_channel(ndp); in ncsi_dev_work()
1476 ncsi_suspend_channel(ndp); in ncsi_dev_work()
1479 ncsi_configure_channel(ndp); in ncsi_dev_work()
1487 int ncsi_process_next_channel(struct ncsi_dev_priv *ndp) in ncsi_process_next_channel() argument
1493 spin_lock_irqsave(&ndp->lock, flags); in ncsi_process_next_channel()
1494 nc = list_first_or_null_rcu(&ndp->channel_queue, in ncsi_process_next_channel()
1497 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_process_next_channel()
1502 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_process_next_channel()
1509 ndp->active_channel = nc; in ncsi_process_next_channel()
1510 ndp->active_package = nc->package; in ncsi_process_next_channel()
1514 ndp->ndev.state = ncsi_dev_state_config; in ncsi_process_next_channel()
1515 netdev_dbg(ndp->ndev.dev, "NCSI: configuring channel %u\n", in ncsi_process_next_channel()
1517 ncsi_configure_channel(ndp); in ncsi_process_next_channel()
1520 ndp->ndev.state = ncsi_dev_state_suspend; in ncsi_process_next_channel()
1521 netdev_dbg(ndp->ndev.dev, "NCSI: suspending channel %u\n", in ncsi_process_next_channel()
1523 ncsi_suspend_channel(ndp); in ncsi_process_next_channel()
1526 netdev_err(ndp->ndev.dev, "Invalid state 0x%x on %d:%d\n", in ncsi_process_next_channel()
1528 ncsi_report_link(ndp, false); in ncsi_process_next_channel()
1535 ndp->active_channel = NULL; in ncsi_process_next_channel()
1536 ndp->active_package = NULL; in ncsi_process_next_channel()
1537 if (ndp->flags & NCSI_DEV_RESHUFFLE) { in ncsi_process_next_channel()
1538 ndp->flags &= ~NCSI_DEV_RESHUFFLE; in ncsi_process_next_channel()
1539 return ncsi_choose_active_channel(ndp); in ncsi_process_next_channel()
1542 ncsi_report_link(ndp, false); in ncsi_process_next_channel()
1546 static int ncsi_kick_channels(struct ncsi_dev_priv *ndp) in ncsi_kick_channels() argument
1548 struct ncsi_dev *nd = &ndp->ndev; in ncsi_kick_channels()
1554 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_kick_channels()
1565 if ((ndp->ndev.state & 0xff00) == in ncsi_kick_channels()
1584 spin_lock_irqsave(&ndp->lock, flags); in ncsi_kick_channels()
1585 list_add_tail_rcu(&nc->link, &ndp->channel_queue); in ncsi_kick_channels()
1586 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_kick_channels()
1598 struct ncsi_dev_priv *ndp; in ncsi_vlan_rx_add_vid() local
1613 ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_vlan_rx_add_vid()
1616 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) { in ncsi_vlan_rx_add_vid()
1637 list_add_rcu(&vlan->list, &ndp->vlan_vids); in ncsi_vlan_rx_add_vid()
1641 found = ncsi_kick_channels(ndp) != 0; in ncsi_vlan_rx_add_vid()
1643 return found ? ncsi_process_next_channel(ndp) : 0; in ncsi_vlan_rx_add_vid()
1650 struct ncsi_dev_priv *ndp; in ncsi_vlan_rx_kill_vid() local
1663 ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_vlan_rx_kill_vid()
1666 list_for_each_entry_safe(vlan, tmp, &ndp->vlan_vids, list) in ncsi_vlan_rx_kill_vid()
1679 found = ncsi_kick_channels(ndp) != 0; in ncsi_vlan_rx_kill_vid()
1681 return found ? ncsi_process_next_channel(ndp) : 0; in ncsi_vlan_rx_kill_vid()
1688 struct ncsi_dev_priv *ndp; in ncsi_register_dev() local
1701 ndp = kzalloc(sizeof(*ndp), GFP_ATOMIC); in ncsi_register_dev()
1702 if (!ndp) in ncsi_register_dev()
1705 nd = &ndp->ndev; in ncsi_register_dev()
1709 ndp->pending_req_num = 0; in ncsi_register_dev()
1710 INIT_LIST_HEAD(&ndp->channel_queue); in ncsi_register_dev()
1711 INIT_LIST_HEAD(&ndp->vlan_vids); in ncsi_register_dev()
1712 INIT_WORK(&ndp->work, ncsi_dev_work); in ncsi_register_dev()
1713 ndp->package_whitelist = UINT_MAX; in ncsi_register_dev()
1716 spin_lock_init(&ndp->lock); in ncsi_register_dev()
1717 INIT_LIST_HEAD(&ndp->packages); in ncsi_register_dev()
1718 ndp->request_id = NCSI_REQ_START_IDX; in ncsi_register_dev()
1719 for (i = 0; i < ARRAY_SIZE(ndp->requests); i++) { in ncsi_register_dev()
1720 ndp->requests[i].id = i; in ncsi_register_dev()
1721 ndp->requests[i].ndp = ndp; in ncsi_register_dev()
1722 timer_setup(&ndp->requests[i].timer, ncsi_request_timeout, 0); in ncsi_register_dev()
1726 list_add_tail_rcu(&ndp->node, &ncsi_dev_list); in ncsi_register_dev()
1730 ndp->ptype.type = cpu_to_be16(ETH_P_NCSI); in ncsi_register_dev()
1731 ndp->ptype.func = ncsi_rcv_rsp; in ncsi_register_dev()
1732 ndp->ptype.dev = dev; in ncsi_register_dev()
1733 dev_add_pack(&ndp->ptype); in ncsi_register_dev()
1739 ndp->mlx_multi_host = true; in ncsi_register_dev()
1748 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_start_dev() local
1754 if (!(ndp->flags & NCSI_DEV_PROBED)) { in ncsi_start_dev()
1755 ndp->package_probe_id = 0; in ncsi_start_dev()
1757 schedule_work(&ndp->work); in ncsi_start_dev()
1767 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_stop_dev() local
1778 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_stop_dev()
1792 netdev_dbg(ndp->ndev.dev, "NCSI: Stopping device\n"); in ncsi_stop_dev()
1793 ncsi_report_link(ndp, true); in ncsi_stop_dev()
1799 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_reset_dev() local
1804 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1806 if (!(ndp->flags & NCSI_DEV_RESET)) { in ncsi_reset_dev()
1812 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1820 ndp->flags |= NCSI_DEV_RESET; in ncsi_reset_dev()
1821 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1833 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1838 if (!list_empty(&ndp->channel_queue)) { in ncsi_reset_dev()
1840 list_for_each_entry_safe(nc, tmp, &ndp->channel_queue, link) in ncsi_reset_dev()
1843 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1846 NCSI_FOR_EACH_PACKAGE(ndp, np) { in ncsi_reset_dev()
1866 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1867 ndp->flags &= ~NCSI_DEV_RESET; in ncsi_reset_dev()
1868 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1869 return ncsi_choose_active_channel(ndp); in ncsi_reset_dev()
1872 spin_lock_irqsave(&ndp->lock, flags); in ncsi_reset_dev()
1873 ndp->flags |= NCSI_DEV_RESET; in ncsi_reset_dev()
1874 ndp->active_channel = active; in ncsi_reset_dev()
1875 ndp->active_package = active->package; in ncsi_reset_dev()
1876 spin_unlock_irqrestore(&ndp->lock, flags); in ncsi_reset_dev()
1879 schedule_work(&ndp->work); in ncsi_reset_dev()
1885 struct ncsi_dev_priv *ndp = TO_NCSI_DEV_PRIV(nd); in ncsi_unregister_dev() local
1889 dev_remove_pack(&ndp->ptype); in ncsi_unregister_dev()
1891 list_for_each_entry_safe(np, tmp, &ndp->packages, node) in ncsi_unregister_dev()
1895 list_del_rcu(&ndp->node); in ncsi_unregister_dev()
1898 kfree(ndp); in ncsi_unregister_dev()