Lines Matching +full:rpm +full:- +full:stats

1 // SPDX-License-Identifier: GPL-2.0
24 #define DRV_NAME "Marvell-CGX/RPM"
25 #define DRV_STRING "Marvell CGX/RPM Driver"
90 return (cgx->pdev->device == PCI_DEVID_CN10K_RPM) || in is_dev_rpm()
91 (cgx->pdev->device == PCI_DEVID_CN10KB_RPM); in is_dev_rpm()
96 if (!cgx || lmac_id < 0 || lmac_id >= cgx->max_lmac_per_mac) in is_lmac_valid()
98 return test_bit(lmac_id, &cgx->lmac_bmap); in is_lmac_valid()
108 for_each_set_bit(tmp, &cgx->lmac_bmap, cgx->max_lmac_per_mac) { in get_sequence_id_of_lmac()
122 return ((struct cgx *)cgxd)->mac_ops; in get_mac_ops()
127 return ((struct cgx *)cgxd)->fifo_len; in cgx_get_fifo_len()
132 writeq(val, cgx->reg_base + (lmac << cgx->mac_ops->lmac_offset) + in cgx_write()
138 return readq(cgx->reg_base + (lmac << cgx->mac_ops->lmac_offset) + in cgx_read()
144 if (!cgx || lmac_id >= cgx->max_lmac_per_mac) in lmac_pdata()
147 return cgx->lmac_idmap[lmac_id]; in lmac_pdata()
153 int idmax = -ENODEV; in cgx_get_cgxcnt_max()
156 if (cgx_dev->cgx_id > idmax) in cgx_get_cgxcnt_max()
157 idmax = cgx_dev->cgx_id; in cgx_get_cgxcnt_max()
170 return -ENODEV; in cgx_get_lmac_cnt()
172 return cgx->lmac_count; in cgx_get_lmac_cnt()
180 if (cgx_dev->cgx_id == cgx_id) in cgx_get_pdata()
212 return -EINVAL; in cgx_get_cgxid()
214 return cgx->cgx_id; in cgx_get_cgxid()
233 if (cgx->pdev->subsystem_device != PCI_SUBSYS_DEVID_98XX) in cgx_get_nix_resetbit()
236 first_lmac = find_first_bit(&cgx->lmac_bmap, cgx->max_lmac_per_mac); in cgx_get_nix_resetbit()
237 p2x = cgx_lmac_get_p2x(cgx->cgx_id, first_lmac); in cgx_get_nix_resetbit()
256 return -ENODEV; in cgx_get_link_info()
258 *linfo = lmac->link_info; in cgx_get_link_info()
271 return -ENODEV; in cgx_lmac_addr_set()
274 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_set()
283 index = id * lmac->mac_to_index_bmap.max; in cgx_lmac_addr_set()
306 mac_ops = cgx->mac_ops; in cgx_read_dmac_ctrl()
320 mac_ops = cgx->mac_ops; in cgx_read_dmac_entry()
334 return -ENODEV; in cgx_lmac_addr_add()
336 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_add()
338 idx = rvu_alloc_rsrc(&lmac->mac_to_index_bmap); in cgx_lmac_addr_add()
344 index = id * lmac->mac_to_index_bmap.max + idx; in cgx_lmac_addr_add()
357 lmac->mcast_filters_count++; in cgx_lmac_addr_add()
358 } else if (!lmac->mcast_filters_count) { in cgx_lmac_addr_add()
376 return -ENODEV; in cgx_lmac_addr_reset()
378 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_reset()
382 set_bit(0, lmac->mac_to_index_bmap.bmap); in cgx_lmac_addr_reset()
386 index = id * lmac->mac_to_index_bmap.max + index; in cgx_lmac_addr_reset()
412 return -ENODEV; in cgx_lmac_addr_update()
414 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_update()
416 if (index >= lmac->mac_to_index_bmap.max) in cgx_lmac_addr_update()
417 return -EINVAL; in cgx_lmac_addr_update()
420 if (!test_bit(index, lmac->mac_to_index_bmap.bmap)) in cgx_lmac_addr_update()
421 return -EINVAL; in cgx_lmac_addr_update()
425 index = id * lmac->mac_to_index_bmap.max + index; in cgx_lmac_addr_update()
445 return -ENODEV; in cgx_lmac_addr_del()
447 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_del()
449 if (index >= lmac->mac_to_index_bmap.max) in cgx_lmac_addr_del()
450 return -EINVAL; in cgx_lmac_addr_del()
456 rvu_free_rsrc(&lmac->mac_to_index_bmap, index); in cgx_lmac_addr_del()
460 index = id * lmac->mac_to_index_bmap.max + index; in cgx_lmac_addr_del()
467 lmac->mcast_filters_count--; in cgx_lmac_addr_del()
469 if (!lmac->mcast_filters_count) { in cgx_lmac_addr_del()
487 return lmac->mac_to_index_bmap.max; in cgx_lmac_addr_max_entries_get()
501 mac_ops = cgx_dev->mac_ops; in cgx_lmac_addr_get()
505 index = id * lmac->mac_to_index_bmap.max; in cgx_lmac_addr_get()
516 return -ENODEV; in cgx_set_pkind()
518 cgx_write(cgx, lmac_id, cgx->mac_ops->rxid_map_offset, (pkind & 0x3F)); in cgx_set_pkind()
537 fifo_len = cgx->fifo_len; in cgx_get_lmac_fifo_len()
538 num_lmacs = cgx->mac_ops->get_nr_lmacs(cgx); in cgx_get_lmac_fifo_len()
565 return -ENODEV; in cgx_lmac_internal_loopback()
568 if (lmac->lmac_type == LMAC_MODE_SGMII || in cgx_lmac_internal_loopback()
569 lmac->lmac_type == LMAC_MODE_QSGMII) { in cgx_lmac_internal_loopback()
600 max_dmac = lmac->mac_to_index_bmap.max; in cgx_lmac_promisc_config()
603 mac_ops = cgx->mac_ops; in cgx_lmac_promisc_config()
649 return -ENODEV; in cgx_lmac_get_pause_frm_status()
676 if (!bitmap_weight(lmac->rx_fc_pfvf_bmap.bmap, lmac->rx_fc_pfvf_bmap.max)) in cgx_lmac_enadis_rx_pause_fwding()
719 return -ENODEV; in cgx_get_rx_stats()
721 /* pass lmac as 0 for CGX_CMR_RX_STAT9-12 */ in cgx_get_rx_stats()
734 return -ENODEV; in cgx_get_tx_stats()
741 return ((struct cgx *)cgxd)->hw_features; in cgx_features_get()
750 return -ENODEV; in cgx_stats_reset()
754 /* pass lmac as 0 for CGX_CMR_RX_STAT9-12 */ in cgx_stats_reset()
770 if (!linfo->fec) in cgx_set_fec_stats_count()
773 switch (linfo->lmac_type_id) { in cgx_set_fec_stats_count()
787 if (linfo->fec == OTX2_FEC_BASER) in cgx_set_fec_stats_count()
798 int stats, fec_stats_count = 0; in cgx_get_fec_stats() local
803 return -ENODEV; in cgx_get_fec_stats()
805 if (cgx->lmac_idmap[lmac_id]->link_info.fec == OTX2_FEC_NONE) in cgx_get_fec_stats()
809 cgx_set_fec_stats_count(&cgx->lmac_idmap[lmac_id]->link_info); in cgx_get_fec_stats()
810 if (cgx->lmac_idmap[lmac_id]->link_info.fec == OTX2_FEC_BASER) { in cgx_get_fec_stats()
817 for (stats = 0; stats < fec_stats_count; stats++) { in cgx_get_fec_stats()
818 rsp->fec_corr_blks += in cgx_get_fec_stats()
819 cgx_read(cgx, lmac_id, corr_reg + (stats * 8)); in cgx_get_fec_stats()
820 rsp->fec_uncorr_blks += in cgx_get_fec_stats()
821 cgx_read(cgx, lmac_id, uncorr_reg + (stats * 8)); in cgx_get_fec_stats()
832 return -ENODEV; in cgx_lmac_rx_tx_enable()
849 return -ENODEV; in cgx_lmac_tx_enable()
873 return -ENODEV; in cgx_lmac_enadis_pause_frm()
961 return -ENODEV; in verify_lmac_fc_cfg()
964 clear_bit(pfvf_idx, lmac->rx_fc_pfvf_bmap.bmap); in verify_lmac_fc_cfg()
966 set_bit(pfvf_idx, lmac->rx_fc_pfvf_bmap.bmap); in verify_lmac_fc_cfg()
969 clear_bit(pfvf_idx, lmac->tx_fc_pfvf_bmap.bmap); in verify_lmac_fc_cfg()
971 set_bit(pfvf_idx, lmac->tx_fc_pfvf_bmap.bmap); in verify_lmac_fc_cfg()
974 if (!rx_pause && bitmap_weight(lmac->rx_fc_pfvf_bmap.bmap, lmac->rx_fc_pfvf_bmap.max)) { in verify_lmac_fc_cfg()
975 dev_warn(&cgx->pdev->dev, in verify_lmac_fc_cfg()
977 return -EPERM; in verify_lmac_fc_cfg()
980 if (!tx_pause && bitmap_weight(lmac->tx_fc_pfvf_bmap.bmap, lmac->tx_fc_pfvf_bmap.max)) { in verify_lmac_fc_cfg()
981 dev_warn(&cgx->pdev->dev, in verify_lmac_fc_cfg()
983 return -EPERM; in verify_lmac_fc_cfg()
996 return -ENODEV; in cgx_lmac_pfc_config()
1026 cfg = cgx_lmac_addr_get(cgx->cgx_id, lmac_id); in cgx_lmac_pfc_config()
1039 return -ENODEV; in cgx_lmac_get_pfc_frm_cfg()
1081 struct cgx *cgx = lmac->cgx; in cgx_fwi_cmd_send()
1087 err = mutex_lock_interruptible(&lmac->cmd_lock); in cgx_fwi_cmd_send()
1092 cmd = cgx_read(cgx, lmac->lmac_id, CGX_COMMAND_REG); in cgx_fwi_cmd_send()
1094 err = -EBUSY; in cgx_fwi_cmd_send()
1102 lmac->cmd_pend = true; in cgx_fwi_cmd_send()
1105 cgx_write(cgx, lmac->lmac_id, CGX_COMMAND_REG, req); in cgx_fwi_cmd_send()
1108 if (!wait_event_timeout(lmac->wq_cmd_cmplt, !lmac->cmd_pend, in cgx_fwi_cmd_send()
1110 dev = &cgx->pdev->dev; in cgx_fwi_cmd_send()
1112 cgx->cgx_id, lmac->lmac_id, FIELD_GET(CMDREG_ID, req)); in cgx_fwi_cmd_send()
1119 *resp = lmac->resp; in cgx_fwi_cmd_send()
1122 mutex_unlock(&lmac->cmd_lock); in cgx_fwi_cmd_send()
1134 return -ENODEV; in cgx_fwi_cmd_generic()
1141 return -EIO; in cgx_fwi_cmd_generic()
1188 if (args->multimode) { in set_mod_args()
1189 args->mode |= mode; in set_mod_args()
1198 args->mode = mode; in set_mod_args()
1199 mode_baseidx = cgx_mode - 41; in set_mod_args()
1201 args->mode_baseidx = 1; in set_mod_args()
1202 args->mode = BIT_ULL(mode_baseidx); in set_mod_args()
1298 linfo->link_up = FIELD_GET(RESP_LINKSTAT_UP, lstat); in link_status_user_format()
1299 linfo->full_duplex = FIELD_GET(RESP_LINKSTAT_FDUPLEX, lstat); in link_status_user_format()
1300 linfo->speed = cgx_speed_mbps[FIELD_GET(RESP_LINKSTAT_SPEED, lstat)]; in link_status_user_format()
1301 linfo->an = FIELD_GET(RESP_LINKSTAT_AN, lstat); in link_status_user_format()
1302 linfo->fec = FIELD_GET(RESP_LINKSTAT_FEC, lstat); in link_status_user_format()
1303 linfo->lmac_type_id = FIELD_GET(RESP_LINKSTAT_LMAC_TYPE, lstat); in link_status_user_format()
1305 if (linfo->lmac_type_id >= LMAC_MODE_MAX) { in link_status_user_format()
1306 dev_err(&cgx->pdev->dev, "Unknown lmac_type_id %d reported by firmware on cgx port%d:%d", in link_status_user_format()
1307 linfo->lmac_type_id, cgx->cgx_id, lmac_id); in link_status_user_format()
1308 strscpy(linfo->lmac_type, "Unknown", sizeof(linfo->lmac_type)); in link_status_user_format()
1312 strscpy(linfo->lmac_type, cgx_lmactype_string[linfo->lmac_type_id], in link_status_user_format()
1313 sizeof(linfo->lmac_type)); in link_status_user_format()
1321 struct cgx *cgx = lmac->cgx; in cgx_link_change_handler()
1326 dev = &cgx->pdev->dev; in cgx_link_change_handler()
1328 link_status_user_format(lstat, &event.link_uinfo, cgx, lmac->lmac_id); in cgx_link_change_handler()
1331 event.cgx_id = cgx->cgx_id; in cgx_link_change_handler()
1332 event.lmac_id = lmac->lmac_id; in cgx_link_change_handler()
1335 lmac->link_info = event.link_uinfo; in cgx_link_change_handler()
1336 linfo = &lmac->link_info; in cgx_link_change_handler()
1342 spin_lock(&lmac->event_cb_lock); in cgx_link_change_handler()
1344 if (!lmac->event_cb.notify_link_chg) { in cgx_link_change_handler()
1346 cgx->cgx_id, lmac->lmac_id); in cgx_link_change_handler()
1349 cgx->cgx_id, lmac->lmac_id, err_type); in cgx_link_change_handler()
1352 cgx->cgx_id, lmac->lmac_id, in cgx_link_change_handler()
1353 linfo->link_up ? "UP" : "DOWN", linfo->speed); in cgx_link_change_handler()
1357 if (lmac->event_cb.notify_link_chg(&event, lmac->event_cb.data)) in cgx_link_change_handler()
1360 spin_unlock(&lmac->event_cb_lock); in cgx_link_change_handler()
1390 cgx = lmac->cgx; in cgx_fwi_event_handler()
1392 /* Clear SW_INT for RPM and CMR_INT for CGX */ in cgx_fwi_event_handler()
1393 offset = cgx->mac_ops->int_register; in cgx_fwi_event_handler()
1394 clear_bit = cgx->mac_ops->int_ena_bit; in cgx_fwi_event_handler()
1396 event = cgx_read(cgx, lmac->lmac_id, CGX_EVENT_REG); in cgx_fwi_event_handler()
1406 lmac->resp = event; in cgx_fwi_event_handler()
1417 lmac->cmd_pend = false; in cgx_fwi_event_handler()
1418 wake_up(&lmac->wq_cmd_cmplt); in cgx_fwi_event_handler()
1430 cgx_write(lmac->cgx, lmac->lmac_id, CGX_EVENT_REG, 0); in cgx_fwi_event_handler()
1431 cgx_write(lmac->cgx, lmac->lmac_id, offset, clear_bit); in cgx_fwi_event_handler()
1446 return -ENODEV; in cgx_lmac_evh_register()
1448 lmac->event_cb = *cb; in cgx_lmac_evh_register()
1461 return -ENODEV; in cgx_lmac_evh_unregister()
1463 spin_lock_irqsave(&lmac->event_cb_lock, flags); in cgx_lmac_evh_unregister()
1464 lmac->event_cb.notify_link_chg = NULL; in cgx_lmac_evh_unregister()
1465 lmac->event_cb.data = NULL; in cgx_lmac_evh_unregister()
1466 spin_unlock_irqrestore(&lmac->event_cb_lock, flags); in cgx_lmac_evh_unregister()
1480 return -ENXIO; in cgx_get_fwdata_base()
1482 first_lmac = find_first_bit(&cgx->lmac_bmap, cgx->max_lmac_per_mac); in cgx_get_fwdata_base()
1500 return -ENODEV; in cgx_set_link_mode()
1507 if (linkmodes->advertised_link_modes_own != CGX_CMD_OWN_NS) in cgx_set_link_mode()
1508 return -EBUSY; in cgx_set_link_mode()
1510 linkmodes->advertised_link_modes = args.mode; in cgx_set_link_mode()
1512 linkmodes->advertised_link_modes_own = CGX_CMD_OWN_FIRMWARE; in cgx_set_link_mode()
1534 return -ENXIO; in cgx_set_fec()
1542 cgx->lmac_idmap[lmac_id]->link_info.fec = in cgx_set_fec()
1544 return cgx->lmac_idmap[lmac_id]->link_info.fec; in cgx_set_fec()
1553 return -ENODEV; in cgx_get_phy_fec_stats()
1582 int first_lmac = find_first_bit(&cgx->lmac_bmap, cgx->max_lmac_per_mac); in cgx_fwi_read_version()
1591 struct device *dev = &cgx->pdev->dev; in cgx_lmac_verify_fwi_version()
1596 if (!cgx->lmac_count) in cgx_lmac_verify_fwi_version()
1608 return -EIO; in cgx_lmac_verify_fwi_version()
1616 struct device *dev = &cgx->pdev->dev; in cgx_lmac_linkup_work()
1620 for_each_set_bit(i, &cgx->lmac_bmap, cgx->max_lmac_per_mac) { in cgx_lmac_linkup_work()
1624 cgx->cgx_id, i); in cgx_lmac_linkup_work()
1633 return -ENODEV; in cgx_lmac_linkup_start()
1635 queue_work(cgx->cgx_cmd_workq, &cgx->cgx_cmd_work); in cgx_lmac_linkup_start()
1646 return -ENODEV; in cgx_lmac_reset()
1660 struct mac_ops *mac_ops = cgx->mac_ops; in cgx_configure_interrupt()
1665 irq = pci_irq_vector(cgx->pdev, mac_ops->lmac_fwi + in cgx_configure_interrupt()
1666 cnt * mac_ops->irq_offset); in cgx_configure_interrupt()
1667 offset = mac_ops->int_set_reg; in cgx_configure_interrupt()
1668 ena_bit = mac_ops->int_ena_bit; in cgx_configure_interrupt()
1675 err = request_irq(irq, cgx_fwi_event_handler, 0, lmac->name, lmac); in cgx_configure_interrupt()
1680 cgx_write(cgx, lmac->lmac_id, offset, ena_bit); in cgx_configure_interrupt()
1695 return cgx->lmac_idmap[lmac_index]->lmac_id; in cgx_get_lmacid()
1702 return cgx->lmac_bmap; in cgx_get_lmac_bmap()
1716 if (cgx->mac_ops->non_contiguous_serdes_lane) { in cgx_lmac_init()
1725 if (cgx->lmac_count > cgx->max_lmac_per_mac) in cgx_lmac_init()
1726 cgx->lmac_count = cgx->max_lmac_per_mac; in cgx_lmac_init()
1728 for (i = 0; i < cgx->lmac_count; i++) { in cgx_lmac_init()
1731 return -ENOMEM; in cgx_lmac_init()
1732 lmac->name = kcalloc(1, sizeof("cgx_fwi_xxx_yyy"), GFP_KERNEL); in cgx_lmac_init()
1733 if (!lmac->name) { in cgx_lmac_init()
1734 err = -ENOMEM; in cgx_lmac_init()
1737 sprintf(lmac->name, "cgx_fwi_%u_%u", cgx->cgx_id, i); in cgx_lmac_init()
1738 if (cgx->mac_ops->non_contiguous_serdes_lane) { in cgx_lmac_init()
1739 lmac->lmac_id = __ffs64(lmac_list); in cgx_lmac_init()
1740 lmac_list &= ~BIT_ULL(lmac->lmac_id); in cgx_lmac_init()
1742 lmac->lmac_id = i; in cgx_lmac_init()
1745 lmac->cgx = cgx; in cgx_lmac_init()
1746 lmac->mac_to_index_bmap.max = in cgx_lmac_init()
1747 cgx->mac_ops->dmac_filter_count / in cgx_lmac_init()
1748 cgx->lmac_count; in cgx_lmac_init()
1750 max_dmac_filters = lmac->mac_to_index_bmap.max; in cgx_lmac_init()
1752 err = rvu_alloc_bitmap(&lmac->mac_to_index_bmap); in cgx_lmac_init()
1757 set_bit(0, lmac->mac_to_index_bmap.bmap); in cgx_lmac_init()
1759 lmac->rx_fc_pfvf_bmap.max = 128; in cgx_lmac_init()
1760 err = rvu_alloc_bitmap(&lmac->rx_fc_pfvf_bmap); in cgx_lmac_init()
1764 lmac->tx_fc_pfvf_bmap.max = 128; in cgx_lmac_init()
1765 err = rvu_alloc_bitmap(&lmac->tx_fc_pfvf_bmap); in cgx_lmac_init()
1769 init_waitqueue_head(&lmac->wq_cmd_cmplt); in cgx_lmac_init()
1770 mutex_init(&lmac->cmd_lock); in cgx_lmac_init()
1771 spin_lock_init(&lmac->event_cb_lock); in cgx_lmac_init()
1772 err = cgx_configure_interrupt(cgx, lmac, lmac->lmac_id, false); in cgx_lmac_init()
1777 cgx->lmac_idmap[lmac->lmac_id] = lmac; in cgx_lmac_init()
1778 set_bit(lmac->lmac_id, &cgx->lmac_bmap); in cgx_lmac_init()
1779 cgx->mac_ops->mac_pause_frm_config(cgx, lmac->lmac_id, true); in cgx_lmac_init()
1780 lmac->lmac_type = cgx->mac_ops->get_lmac_type(cgx, lmac->lmac_id); in cgx_lmac_init()
1784 cgx_lmac_addr_del(cgx->cgx_id, lmac->lmac_id, filter); in cgx_lmac_init()
1789 cgx_lmac_addr_reset(cgx->cgx_id, lmac->lmac_id); in cgx_lmac_init()
1793 cgx->mac_ops->mac_x2p_reset(cgx, true); in cgx_lmac_init()
1797 rvu_free_bitmap(&lmac->tx_fc_pfvf_bmap); in cgx_lmac_init()
1799 rvu_free_bitmap(&lmac->rx_fc_pfvf_bmap); in cgx_lmac_init()
1801 rvu_free_bitmap(&lmac->mac_to_index_bmap); in cgx_lmac_init()
1803 kfree(lmac->name); in cgx_lmac_init()
1814 if (cgx->cgx_cmd_workq) { in cgx_lmac_exit()
1815 destroy_workqueue(cgx->cgx_cmd_workq); in cgx_lmac_exit()
1816 cgx->cgx_cmd_workq = NULL; in cgx_lmac_exit()
1820 for_each_set_bit(i, &cgx->lmac_bmap, cgx->max_lmac_per_mac) { in cgx_lmac_exit()
1821 lmac = cgx->lmac_idmap[i]; in cgx_lmac_exit()
1824 cgx->mac_ops->mac_pause_frm_config(cgx, lmac->lmac_id, false); in cgx_lmac_exit()
1825 cgx_configure_interrupt(cgx, lmac, lmac->lmac_id, true); in cgx_lmac_exit()
1826 kfree(lmac->mac_to_index_bmap.bmap); in cgx_lmac_exit()
1827 kfree(lmac->name); in cgx_lmac_exit()
1839 cgx->fifo_len = FIELD_GET(CGX_CONST_RXFIFO_SIZE, cfg); in cgx_populate_features()
1840 cgx->max_lmac_per_mac = FIELD_GET(CGX_CONST_MAX_LMACS, cfg); in cgx_populate_features()
1843 cgx->hw_features = (RVU_LMAC_FEAT_DMACF | RVU_MAC_RPM | in cgx_populate_features()
1846 cgx->hw_features = (RVU_LMAC_FEAT_FC | RVU_LMAC_FEAT_HIGIG2 | in cgx_populate_features()
1852 if (cgx->pdev->subsystem_device == PCI_SUBSYS_DEVID_CNF10KB_RPM || in cgx_get_rxid_mapoffset()
1866 for_each_set_bit(lmac_id, &cgx->lmac_bmap, cgx->max_lmac_per_mac) in cgx_x2p_reset()
1867 cgx->mac_ops->mac_enadis_rx(cgx, lmac_id, false); in cgx_x2p_reset()
1887 return -ENODEV; in cgx_enadis_rx()
1935 struct device *dev = &pdev->dev; in cgx_probe()
1941 return -ENOMEM; in cgx_probe()
1942 cgx->pdev = pdev; in cgx_probe()
1948 cgx->mac_ops = rpm_get_mac_ops(cgx); in cgx_probe()
1950 cgx->mac_ops = &cgx_mac_ops; in cgx_probe()
1952 cgx->mac_ops->rxid_map_offset = cgx_get_rxid_mapoffset(cgx); in cgx_probe()
1974 cgx->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); in cgx_probe()
1975 if (!cgx->reg_base) { in cgx_probe()
1977 err = -ENOMEM; in cgx_probe()
1981 cgx->lmac_count = cgx->mac_ops->get_nr_lmacs(cgx); in cgx_probe()
1982 if (!cgx->lmac_count) { in cgx_probe()
1983 dev_notice(dev, "CGX %d LMAC count is zero, skipping probe\n", cgx->cgx_id); in cgx_probe()
1984 err = -EOPNOTSUPP; in cgx_probe()
1988 nvec = pci_msix_vec_count(cgx->pdev); in cgx_probe()
1996 cgx->cgx_id = (pci_resource_start(pdev, PCI_CFG_REG_BAR_NUM) >> 24) in cgx_probe()
2000 INIT_WORK(&cgx->cgx_cmd_work, cgx_lmac_linkup_work); in cgx_probe()
2001 cgx->cgx_cmd_workq = alloc_workqueue("cgx_cmd_workq", 0, 0); in cgx_probe()
2002 if (!cgx->cgx_cmd_workq) { in cgx_probe()
2004 err = -ENOMEM; in cgx_probe()
2008 list_add(&cgx->cgx_list, &cgx_list); in cgx_probe()
2013 mutex_init(&cgx->lock); in cgx_probe()
2023 list_del(&cgx->cgx_list); in cgx_probe()
2040 list_del(&cgx->cgx_list); in cgx_remove()