Lines Matching refs:nic
192 struct nicpf *nic; in nicpf_attach() local
195 nic = device_get_softc(dev); in nicpf_attach()
196 nic->dev = dev; in nicpf_attach()
202 err = nicpf_alloc_res(nic); in nicpf_attach()
208 nic->node = nic_get_node_id(nic->reg_base); in nicpf_attach()
211 nic->flags &= ~NIC_TNS_ENABLED; in nicpf_attach()
212 nic_set_lmac_vf_mapping(nic); in nicpf_attach()
215 nic_init_hw(nic); in nicpf_attach()
218 nic->rss_ind_tbl_size = NIC_MAX_RSS_IDR_TBL_SIZE; in nicpf_attach()
221 err = nic_register_interrupts(nic); in nicpf_attach()
226 err = nic_sriov_init(dev, nic); in nicpf_attach()
230 if (nic->flags & NIC_TNS_ENABLED) in nicpf_attach()
233 mtx_init(&nic->check_link_mtx, "VNIC PF link poll", NULL, MTX_DEF); in nicpf_attach()
235 callout_init_mtx(&nic->check_link, &nic->check_link_mtx, 0); in nicpf_attach()
236 mtx_lock(&nic->check_link_mtx); in nicpf_attach()
237 nic_poll_for_link(nic); in nicpf_attach()
238 mtx_unlock(&nic->check_link_mtx); in nicpf_attach()
243 nic_unregister_interrupts(nic); in nicpf_attach()
245 nicpf_free_res(nic); in nicpf_attach()
254 struct nicpf *nic; in nicpf_detach() local
258 nic = device_get_softc(dev); in nicpf_detach()
260 callout_drain(&nic->check_link); in nicpf_detach()
261 mtx_destroy(&nic->check_link_mtx); in nicpf_detach()
263 nic_unregister_interrupts(nic); in nicpf_detach()
264 nicpf_free_res(nic); in nicpf_detach()
282 struct nicpf *nic; in nicpf_iov_init() local
284 nic = device_get_softc(dev); in nicpf_iov_init()
289 nic->flags |= NIC_SRIOV_ENABLED; in nicpf_iov_init()
305 struct nicpf *nic; in nicpf_iov_add_vf() local
309 nic = device_get_softc(dev); in nicpf_iov_add_vf()
311 if ((nic->flags & NIC_SRIOV_ENABLED) == 0) in nicpf_iov_add_vf()
314 if (vfnum > (nic->num_vf_en - 1)) in nicpf_iov_add_vf()
319 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vfnum]); in nicpf_iov_add_vf()
320 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vfnum]); in nicpf_iov_add_vf()
321 bgx_set_lmac_mac(nic->node, bgx, lmac, mac); in nicpf_iov_add_vf()
332 nicpf_alloc_res(struct nicpf *nic) in nicpf_alloc_res() argument
337 dev = nic->dev; in nicpf_alloc_res()
340 nic->reg_base = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, in nicpf_alloc_res()
342 if (nic->reg_base == NULL) { in nicpf_alloc_res()
355 nicpf_free_res(struct nicpf *nic) in nicpf_free_res() argument
359 dev = nic->dev; in nicpf_free_res()
361 if (nic->reg_base != NULL) { in nicpf_free_res()
363 rman_get_rid(nic->reg_base), nic->reg_base); in nicpf_free_res()
369 nic_reg_write(struct nicpf *nic, bus_space_handle_t offset, in nic_reg_write() argument
373 bus_write_8(nic->reg_base, offset, val); in nic_reg_write()
377 nic_reg_read(struct nicpf *nic, uint64_t offset) in nic_reg_read() argument
381 val = bus_read_8(nic->reg_base, offset); in nic_reg_read()
387 nic_enable_mbx_intr(struct nicpf *nic) in nic_enable_mbx_intr() argument
391 nic_reg_write(nic, NIC_PF_MAILBOX_ENA_W1S, ~0UL); in nic_enable_mbx_intr()
392 nic_reg_write(nic, NIC_PF_MAILBOX_ENA_W1S + sizeof(uint64_t), ~0UL); in nic_enable_mbx_intr()
396 nic_clear_mbx_intr(struct nicpf *nic, int vf, int mbx_reg) in nic_clear_mbx_intr() argument
399 nic_reg_write(nic, NIC_PF_MAILBOX_INT + (mbx_reg << 3), (1UL << vf)); in nic_clear_mbx_intr()
415 nic_send_msg_to_vf(struct nicpf *nic, int vf, union nic_mbx *mbx) in nic_send_msg_to_vf() argument
425 if (pass1_silicon(nic->dev)) { in nic_send_msg_to_vf()
426 nic_reg_write(nic, mbx_addr + 0, msg[0]); in nic_send_msg_to_vf()
427 nic_reg_write(nic, mbx_addr + 8, msg[1]); in nic_send_msg_to_vf()
429 nic_reg_write(nic, mbx_addr + 8, msg[1]); in nic_send_msg_to_vf()
430 nic_reg_write(nic, mbx_addr + 0, msg[0]); in nic_send_msg_to_vf()
440 nic_mbx_send_ready(struct nicpf *nic, int vf) in nic_mbx_send_ready() argument
449 if (nic->flags & NIC_TNS_ENABLED) in nic_mbx_send_ready()
455 bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_mbx_send_ready()
456 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_mbx_send_ready()
458 mac = bgx_get_lmac_mac(nic->node, bgx_idx, lmac); in nic_mbx_send_ready()
464 mbx.nic_cfg.node_id = nic->node; in nic_mbx_send_ready()
468 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_ready()
476 nic_mbx_send_ack(struct nicpf *nic, int vf) in nic_mbx_send_ack() argument
481 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_ack()
490 nic_mbx_send_nack(struct nicpf *nic, int vf) in nic_mbx_send_nack() argument
495 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_nack()
503 nic_rcv_queue_sw_sync(struct nicpf *nic) in nic_rcv_queue_sw_sync() argument
507 nic_reg_write(nic, NIC_PF_SW_SYNC_RX, 0x01); in nic_rcv_queue_sw_sync()
510 if (nic_reg_read(nic, NIC_PF_SW_SYNC_RX_DONE) & 0x1) in nic_rcv_queue_sw_sync()
514 nic_reg_write(nic, NIC_PF_SW_SYNC_RX, 0x00); in nic_rcv_queue_sw_sync()
516 device_printf(nic->dev, "Receive queue software sync failed\n"); in nic_rcv_queue_sw_sync()
524 nic_get_bgx_stats(struct nicpf *nic, struct bgx_stats_msg *bgx) in nic_get_bgx_stats() argument
529 bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[bgx->vf_id]); in nic_get_bgx_stats()
530 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[bgx->vf_id]); in nic_get_bgx_stats()
538 bgx_get_rx_stats(nic->node, bgx_idx, lmac, bgx->idx); in nic_get_bgx_stats()
541 bgx_get_tx_stats(nic->node, bgx_idx, lmac, bgx->idx); in nic_get_bgx_stats()
543 nic_send_msg_to_vf(nic, bgx->vf_id, &mbx); in nic_get_bgx_stats()
548 nic_update_hw_frs(struct nicpf *nic, int new_frs, int vf) in nic_update_hw_frs() argument
552 device_printf(nic->dev, in nic_update_hw_frs()
559 if (new_frs <= nic->pkind.maxlen) in nic_update_hw_frs()
562 nic->pkind.maxlen = new_frs; in nic_update_hw_frs()
563 nic_reg_write(nic, NIC_PF_PKIND_0_15_CFG, *(uint64_t *)&nic->pkind); in nic_update_hw_frs()
569 nic_set_tx_pkt_pad(struct nicpf *nic, int size) in nic_set_tx_pkt_pad() argument
579 lmac_cfg = nic_reg_read(nic, NIC_PF_LMAC_0_7_CFG | (lmac << 3)); in nic_set_tx_pkt_pad()
582 nic_reg_write(nic, NIC_PF_LMAC_0_7_CFG | (lmac << 3), lmac_cfg); in nic_set_tx_pkt_pad()
591 nic_set_lmac_vf_mapping(struct nicpf *nic) in nic_set_lmac_vf_mapping() argument
593 unsigned bgx_map = bgx_get_map(nic->node); in nic_set_lmac_vf_mapping()
598 nic->num_vf_en = 0; in nic_set_lmac_vf_mapping()
599 if (nic->flags & NIC_TNS_ENABLED) { in nic_set_lmac_vf_mapping()
600 nic->num_vf_en = DEFAULT_NUM_VF_ENABLED; in nic_set_lmac_vf_mapping()
607 lmac_cnt = bgx_get_lmac_count(nic->node, bgx); in nic_set_lmac_vf_mapping()
609 nic->vf_lmac_map[next_bgx_lmac++] = in nic_set_lmac_vf_mapping()
611 nic->num_vf_en += lmac_cnt; in nic_set_lmac_vf_mapping()
621 nic_reg_write(nic, NIC_PF_LMAC_0_7_CREDIT + (lmac * 8), in nic_set_lmac_vf_mapping()
633 nic_init_hw(struct nicpf *nic) in nic_init_hw() argument
638 nic_reg_write(nic, NIC_PF_CFG, 0x3); in nic_init_hw()
641 nic_reg_write(nic, NIC_PF_BP_CFG, (1UL << 6) | 0x03); in nic_init_hw()
643 if (nic->flags & NIC_TNS_ENABLED) { in nic_init_hw()
644 nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG, in nic_init_hw()
646 nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG | (1 << 8), in nic_init_hw()
648 nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG, in nic_init_hw()
650 nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG + (1 << 8), in nic_init_hw()
655 nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG, in nic_init_hw()
657 nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG | (1 << 8), in nic_init_hw()
659 nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG, in nic_init_hw()
661 nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG + (1 << 8), in nic_init_hw()
666 nic->pkind.minlen = 0; in nic_init_hw()
667 nic->pkind.maxlen = NIC_HW_MAX_FRS + ETHER_HDR_LEN; in nic_init_hw()
668 nic->pkind.lenerr_en = 1; in nic_init_hw()
669 nic->pkind.rx_hdr = 0; in nic_init_hw()
670 nic->pkind.hdr_sl = 0; in nic_init_hw()
673 nic_reg_write(nic, NIC_PF_PKIND_0_15_CFG | (i << 3), in nic_init_hw()
674 *(uint64_t *)&nic->pkind); in nic_init_hw()
677 nic_set_tx_pkt_pad(nic, NIC_HW_MIN_FRS); in nic_init_hw()
680 nic_reg_write(nic, NIC_PF_INTR_TIMER_CFG, NICPF_CLK_PER_INT_TICK); in nic_init_hw()
683 nic_reg_write(nic, NIC_PF_RX_ETYPE_0_7, in nic_init_hw()
689 nic_config_cpi(struct nicpf *nic, struct cpi_cfg_msg *cfg) in nic_config_cpi() argument
697 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); in nic_config_cpi()
698 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); in nic_config_cpi()
702 rssi_base = (lmac * nic->rss_ind_tbl_size) + (bgx * NIC_RSSI_PER_BGX); in nic_config_cpi()
705 nic_reg_write(nic, NIC_PF_CHAN_0_255_RX_BP_CFG | (chan << 3), in nic_config_cpi()
707 nic_reg_write(nic, NIC_PF_CHAN_0_255_RX_CFG | (chan << 3), in nic_config_cpi()
723 nic_reg_write(nic, NIC_PF_RSSI_0_4097_RQ | (rssi << 3), in nic_config_cpi()
738 if (pass1_silicon(nic->dev)) { in nic_config_cpi()
739 nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi << 3), in nic_config_cpi()
743 nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi << 3), in nic_config_cpi()
746 nic_reg_write(nic, NIC_PF_MPI_0_2047_CFG | (cpi << 3), in nic_config_cpi()
760 nic->cpi_base[cfg->vf_id] = cpi_base; in nic_config_cpi()
761 nic->rssi_base[cfg->vf_id] = rssi_base; in nic_config_cpi()
766 nic_send_rss_size(struct nicpf *nic, int vf) in nic_send_rss_size() argument
771 mbx.rss_size.ind_tbl_size = nic->rss_ind_tbl_size; in nic_send_rss_size()
772 nic_send_msg_to_vf(nic, vf, &mbx); in nic_send_rss_size()
783 nic_config_rss(struct nicpf *nic, struct rss_cfg_msg *cfg) in nic_config_rss() argument
790 rssi_base = nic->rssi_base[cfg->vf_id] + cfg->tbl_offset; in nic_config_rss()
796 nic_reg_write(nic, NIC_PF_RSSI_0_4097_RQ | (rssi << 3), in nic_config_rss()
801 cpi_base = nic->cpi_base[cfg->vf_id]; in nic_config_rss()
802 if (pass1_silicon(nic->dev)) in nic_config_rss()
806 cpi_cfg = nic_reg_read(nic, idx_addr | (cpi_base << 3)); in nic_config_rss()
809 nic_reg_write(nic, idx_addr | (cpi_base << 3), cpi_cfg); in nic_config_rss()
827 nic_tx_channel_cfg(struct nicpf *nic, uint8_t vnic, struct sq_cfg_msg *sq) in nic_tx_channel_cfg() argument
837 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); in nic_tx_channel_cfg()
838 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); in nic_tx_channel_cfg()
847 nic_reg_write(nic, NIC_PF_QSET_0_127_SQ_0_7_CFG2 | in nic_tx_channel_cfg()
850 nic_reg_write(nic, NIC_PF_TL4_0_1023_CFG | (tl4 << 3), in nic_tx_channel_cfg()
853 nic_reg_write(nic, NIC_PF_TL3_0_255_CFG | (tl3 << 3), rr_quantum); in nic_tx_channel_cfg()
855 nic_reg_write(nic, NIC_PF_TL3_0_255_CHAN | (tl3 << 3), chan); in nic_tx_channel_cfg()
857 nic_reg_write(nic, NIC_PF_CHAN_0_255_TX_CFG | (chan << 3), 1); in nic_tx_channel_cfg()
860 nic_reg_write(nic, NIC_PF_TL3A_0_63_CFG | (tl2 << 3), tl2); in nic_tx_channel_cfg()
861 nic_reg_write(nic, NIC_PF_TL2_0_63_CFG | (tl2 << 3), rr_quantum); in nic_tx_channel_cfg()
863 nic_reg_write(nic, NIC_PF_TL2_0_63_PRI | (tl2 << 3), 0x00); in nic_tx_channel_cfg()
867 nic_config_loopback(struct nicpf *nic, struct set_loopback *lbk) in nic_config_loopback() argument
874 bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); in nic_config_loopback()
875 lmac_idx = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); in nic_config_loopback()
877 bgx_lmac_internal_loopback(nic->node, bgx_idx, lmac_idx, lbk->enable); in nic_config_loopback()
884 nic_handle_mbx_intr(struct nicpf *nic, int vf) in nic_handle_mbx_intr() argument
895 nic->mbx_lock[vf] = TRUE; in nic_handle_mbx_intr()
901 *mbx_data = nic_reg_read(nic, mbx_addr); in nic_handle_mbx_intr()
908 nic_mbx_send_ready(nic, vf); in nic_handle_mbx_intr()
910 nic->link[vf] = 0; in nic_handle_mbx_intr()
911 nic->duplex[vf] = 0; in nic_handle_mbx_intr()
912 nic->speed[vf] = 0; in nic_handle_mbx_intr()
920 nic_reg_write(nic, reg_addr, cfg); in nic_handle_mbx_intr()
926 nic_reg_write(nic, reg_addr, mbx.rq.cfg); in nic_handle_mbx_intr()
932 nic_reg_write(nic, reg_addr, mbx.rq.cfg); in nic_handle_mbx_intr()
935 ret = nic_rcv_queue_sw_sync(nic); in nic_handle_mbx_intr()
941 nic_reg_write(nic, reg_addr, mbx.rq.cfg); in nic_handle_mbx_intr()
947 nic_reg_write(nic, reg_addr, mbx.sq.cfg); in nic_handle_mbx_intr()
948 nic_tx_channel_cfg(nic, mbx.qs.num, &mbx.sq); in nic_handle_mbx_intr()
952 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); in nic_handle_mbx_intr()
953 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); in nic_handle_mbx_intr()
954 bgx_set_lmac_mac(nic->node, bgx, lmac, mbx.mac.mac_addr); in nic_handle_mbx_intr()
957 ret = nic_update_hw_frs(nic, mbx.frs.max_frs, mbx.frs.vf_id); in nic_handle_mbx_intr()
960 nic_config_cpi(nic, &mbx.cpi_cfg); in nic_handle_mbx_intr()
963 nic_send_rss_size(nic, vf); in nic_handle_mbx_intr()
967 nic_config_rss(nic, &mbx.rss_cfg); in nic_handle_mbx_intr()
971 nic->vf_info[vf].vf_enabled = TRUE; in nic_handle_mbx_intr()
975 nic->vf_info[vf].vf_enabled = FALSE; in nic_handle_mbx_intr()
978 nic_get_bgx_stats(nic, &mbx.bgx_stats); in nic_handle_mbx_intr()
981 ret = nic_config_loopback(nic, &mbx.lbk); in nic_handle_mbx_intr()
984 device_printf(nic->dev, in nic_handle_mbx_intr()
990 nic_mbx_send_ack(nic, vf); in nic_handle_mbx_intr()
992 nic_mbx_send_nack(nic, vf); in nic_handle_mbx_intr()
994 nic->mbx_lock[vf] = FALSE; in nic_handle_mbx_intr()
998 nic_mbx_intr_handler(struct nicpf *nic, int mbx) in nic_mbx_intr_handler() argument
1003 intr = nic_reg_read(nic, NIC_PF_MAILBOX_INT + (mbx << 3)); in nic_mbx_intr_handler()
1006 nic_handle_mbx_intr(nic, vf + (mbx * vf_per_mbx_reg)); in nic_mbx_intr_handler()
1007 nic_clear_mbx_intr(nic, vf, mbx); in nic_mbx_intr_handler()
1015 struct nicpf *nic = (struct nicpf *)arg; in nic_mbx0_intr_handler() local
1017 nic_mbx_intr_handler(nic, 0); in nic_mbx0_intr_handler()
1023 struct nicpf *nic = (struct nicpf *)arg; in nic_mbx1_intr_handler() local
1025 nic_mbx_intr_handler(nic, 1); in nic_mbx1_intr_handler()
1029 nic_enable_msix(struct nicpf *nic) in nic_enable_msix() argument
1035 dinfo = device_get_ivars(nic->dev); in nic_enable_msix()
1037 nic->msix_table_res = in nic_enable_msix()
1038 bus_alloc_resource_any(nic->dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); in nic_enable_msix()
1039 if (nic->msix_table_res == NULL) { in nic_enable_msix()
1040 device_printf(nic->dev, in nic_enable_msix()
1045 count = nic->num_vec = NIC_PF_MSIX_VECTORS; in nic_enable_msix()
1047 ret = pci_alloc_msix(nic->dev, &count); in nic_enable_msix()
1048 if ((ret != 0) || (count != nic->num_vec)) { in nic_enable_msix()
1049 device_printf(nic->dev, in nic_enable_msix()
1051 nic->num_vec, ret); in nic_enable_msix()
1055 nic->msix_enabled = 1; in nic_enable_msix()
1060 nic_disable_msix(struct nicpf *nic) in nic_disable_msix() argument
1062 if (nic->msix_enabled) { in nic_disable_msix()
1063 pci_release_msi(nic->dev); in nic_disable_msix()
1064 nic->msix_enabled = 0; in nic_disable_msix()
1065 nic->num_vec = 0; in nic_disable_msix()
1068 bus_release_resource(nic->dev, SYS_RES_MEMORY, in nic_disable_msix()
1069 rman_get_rid(nic->msix_table_res), nic->msix_table_res); in nic_disable_msix()
1073 nic_free_all_interrupts(struct nicpf *nic) in nic_free_all_interrupts() argument
1077 for (irq = 0; irq < nic->num_vec; irq++) { in nic_free_all_interrupts()
1078 if (nic->msix_entries[irq].irq_res == NULL) in nic_free_all_interrupts()
1080 if (nic->msix_entries[irq].handle != NULL) { in nic_free_all_interrupts()
1081 bus_teardown_intr(nic->dev, in nic_free_all_interrupts()
1082 nic->msix_entries[irq].irq_res, in nic_free_all_interrupts()
1083 nic->msix_entries[irq].handle); in nic_free_all_interrupts()
1086 bus_release_resource(nic->dev, SYS_RES_IRQ, irq + 1, in nic_free_all_interrupts()
1087 nic->msix_entries[irq].irq_res); in nic_free_all_interrupts()
1092 nic_register_interrupts(struct nicpf *nic) in nic_register_interrupts() argument
1098 ret = nic_enable_msix(nic); in nic_register_interrupts()
1105 nic->msix_entries[irq].irq_res = bus_alloc_resource_any(nic->dev, in nic_register_interrupts()
1107 if (nic->msix_entries[irq].irq_res == NULL) { in nic_register_interrupts()
1111 ret = bus_setup_intr(nic->dev, nic->msix_entries[irq].irq_res, in nic_register_interrupts()
1112 (INTR_MPSAFE | INTR_TYPE_MISC), NULL, nic_mbx0_intr_handler, nic, in nic_register_interrupts()
1113 &nic->msix_entries[irq].handle); in nic_register_interrupts()
1119 nic->msix_entries[irq].irq_res = bus_alloc_resource_any(nic->dev, in nic_register_interrupts()
1121 if (nic->msix_entries[irq].irq_res == NULL) { in nic_register_interrupts()
1125 ret = bus_setup_intr(nic->dev, nic->msix_entries[irq].irq_res, in nic_register_interrupts()
1126 (INTR_MPSAFE | INTR_TYPE_MISC), NULL, nic_mbx1_intr_handler, nic, in nic_register_interrupts()
1127 &nic->msix_entries[irq].handle); in nic_register_interrupts()
1132 nic_enable_mbx_intr(nic); in nic_register_interrupts()
1136 nic_free_all_interrupts(nic); in nic_register_interrupts()
1141 nic_unregister_interrupts(struct nicpf *nic) in nic_unregister_interrupts() argument
1144 nic_free_all_interrupts(nic); in nic_unregister_interrupts()
1145 nic_disable_msix(nic); in nic_unregister_interrupts()
1148 static int nic_sriov_init(device_t dev, struct nicpf *nic) in nic_sriov_init() argument
1198 struct nicpf *nic; in nic_poll_for_link() local
1202 nic = (struct nicpf *)arg; in nic_poll_for_link()
1206 for (vf = 0; vf < nic->num_vf_en; vf++) { in nic_poll_for_link()
1208 if (!nic->vf_info[vf].vf_enabled) in nic_poll_for_link()
1212 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_poll_for_link()
1213 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_poll_for_link()
1215 bgx_get_lmac_link_state(nic->node, bgx, lmac, &link); in nic_poll_for_link()
1218 if (nic->link[vf] == link.link_up) in nic_poll_for_link()
1221 if (!nic->mbx_lock[vf]) { in nic_poll_for_link()
1222 nic->link[vf] = link.link_up; in nic_poll_for_link()
1223 nic->duplex[vf] = link.duplex; in nic_poll_for_link()
1224 nic->speed[vf] = link.speed; in nic_poll_for_link()
1230 nic_send_msg_to_vf(nic, vf, &mbx); in nic_poll_for_link()
1233 callout_reset(&nic->check_link, hz * 2, nic_poll_for_link, nic); in nic_poll_for_link()