nic 492 arch/mips/include/asm/sn/klconfig.h nic_t nic; /* MUst be aligned properly */ nic 176 drivers/firmware/iscsi_ibft.c struct ibft_nic *nic; nic 295 drivers/firmware/iscsi_ibft.c struct ibft_nic *nic = entry->nic; nic 300 drivers/firmware/iscsi_ibft.c if (!nic) nic 305 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%d\n", nic->hdr.index); nic 308 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%d\n", nic->hdr.flags); nic 311 drivers/firmware/iscsi_ibft.c str += sprintf_ipaddr(str, nic->ip_addr); nic 314 drivers/firmware/iscsi_ibft.c val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1)); nic 318 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%d\n", nic->subnet_mask_prefix); nic 321 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%d\n", nic->origin); nic 324 drivers/firmware/iscsi_ibft.c str += sprintf_ipaddr(str, nic->gateway); nic 327 drivers/firmware/iscsi_ibft.c str += sprintf_ipaddr(str, nic->primary_dns); nic 330 drivers/firmware/iscsi_ibft.c str += sprintf_ipaddr(str, nic->secondary_dns); nic 333 drivers/firmware/iscsi_ibft.c str += sprintf_ipaddr(str, nic->dhcp); nic 336 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%d\n", nic->vlan); nic 339 drivers/firmware/iscsi_ibft.c str += sprintf(str, "%pM\n", nic->mac); nic 342 drivers/firmware/iscsi_ibft.c str += sprintf_string(str, nic->hostname_len, nic 343 drivers/firmware/iscsi_ibft.c (char *)ibft_loc + nic->hostname_off); nic 474 drivers/firmware/iscsi_ibft.c struct ibft_nic *nic = entry->nic; nic 483 drivers/firmware/iscsi_ibft.c if (address_not_null(nic->ip_addr)) nic 488 drivers/firmware/iscsi_ibft.c if (nic->subnet_mask_prefix) nic 495 drivers/firmware/iscsi_ibft.c if (address_not_null(nic->gateway)) nic 499 drivers/firmware/iscsi_ibft.c if (address_not_null(nic->primary_dns)) nic 503 drivers/firmware/iscsi_ibft.c if (address_not_null(nic->secondary_dns)) nic 507 drivers/firmware/iscsi_ibft.c if (address_not_null(nic->dhcp)) nic 515 drivers/firmware/iscsi_ibft.c if (nic->hostname_off) nic 631 drivers/firmware/iscsi_ibft.c struct ibft_nic *nic = (struct ibft_nic *)hdr; nic 661 drivers/firmware/iscsi_ibft.c sizeof(*ibft_kobj->nic)); nic 719 drivers/firmware/iscsi_ibft.c (nic->pci_bdf & 0xff00) >> 8, nic 720 drivers/firmware/iscsi_ibft.c (nic->pci_bdf & 0xff)); nic 132 drivers/net/ethernet/aquantia/atlantic/aq_vec.c unsigned int idx_ring = AQ_NIC_TCVEC2RING(self->nic, nic 632 drivers/net/ethernet/cavium/thunder/nic.h void nicvf_config_rss(struct nicvf *nic); nic 633 drivers/net/ethernet/cavium/thunder/nic.h void nicvf_set_rss_key(struct nicvf *nic); nic 635 drivers/net/ethernet/cavium/thunder/nic.h void nicvf_update_stats(struct nicvf *nic); nic 636 drivers/net/ethernet/cavium/thunder/nic.h void nicvf_update_lmac_stats(struct nicvf *nic); nic 88 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_reg_write(struct nicpf *nic, u64 offset, u64 val) nic 90 drivers/net/ethernet/cavium/thunder/nic_main.c writeq_relaxed(val, nic->reg_base + offset); nic 93 drivers/net/ethernet/cavium/thunder/nic_main.c static u64 nic_reg_read(struct nicpf *nic, u64 offset) nic 95 drivers/net/ethernet/cavium/thunder/nic_main.c return readq_relaxed(nic->reg_base + offset); nic 99 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_enable_mbx_intr(struct nicpf *nic) nic 101 drivers/net/ethernet/cavium/thunder/nic_main.c int vf_cnt = pci_sriov_get_totalvfs(nic->pdev); nic 106 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MAILBOX_INT, INTR_MASK(vf_cnt)); nic 109 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MAILBOX_ENA_W1S, INTR_MASK(vf_cnt)); nic 112 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MAILBOX_INT + sizeof(u64), nic 114 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MAILBOX_ENA_W1S + sizeof(u64), nic 119 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_clear_mbx_intr(struct nicpf *nic, int vf, int mbx_reg) nic 121 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MAILBOX_INT + (mbx_reg << 3), BIT_ULL(vf)); nic 133 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_send_msg_to_vf(struct nicpf *nic, int vf, union nic_mbx *mbx) nic 135 drivers/net/ethernet/cavium/thunder/nic_main.c void __iomem *mbx_addr = nic->reg_base + nic_get_mbx_addr(vf); nic 142 drivers/net/ethernet/cavium/thunder/nic_main.c if (pass1_silicon(nic->pdev)) { nic 158 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_mbx_send_ready(struct nicpf *nic, int vf) nic 169 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf < nic->num_vf_en) { nic 170 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 171 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 173 drivers/net/ethernet/cavium/thunder/nic_main.c mac = bgx_get_lmac_mac(nic->node, bgx_idx, lmac); nic 177 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.nic_cfg.sqs_mode = (vf >= nic->num_vf_en) ? true : false; nic 178 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.nic_cfg.node_id = nic->node; nic 180 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.nic_cfg.loopback_supported = vf < nic->num_vf_en; nic 182 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 188 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_mbx_send_ack(struct nicpf *nic, int vf) nic 193 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 200 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_mbx_send_nack(struct nicpf *nic, int vf) nic 205 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 211 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_rcv_queue_sw_sync(struct nicpf *nic) nic 215 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_SW_SYNC_RX, 0x01); nic 218 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic_reg_read(nic, NIC_PF_SW_SYNC_RX_DONE) & 0x1) nic 222 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_SW_SYNC_RX, 0x00); nic 224 drivers/net/ethernet/cavium/thunder/nic_main.c dev_err(&nic->pdev->dev, "Receive queue software sync failed"); nic 231 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_get_bgx_stats(struct nicpf *nic, struct bgx_stats_msg *bgx) nic 236 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[bgx->vf_id]); nic 237 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[bgx->vf_id]); nic 244 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.bgx_stats.stats = bgx_get_rx_stats(nic->node, bgx_idx, nic 247 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.bgx_stats.stats = bgx_get_tx_stats(nic->node, bgx_idx, nic 249 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, bgx->vf_id, &mbx); nic 253 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_update_hw_frs(struct nicpf *nic, int new_frs, int vf) nic 261 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 262 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 268 drivers/net/ethernet/cavium/thunder/nic_main.c lmac_cnt = bgx_get_lmac_count(nic->node, bgx); nic 269 drivers/net/ethernet/cavium/thunder/nic_main.c lmac_credits = nic_reg_read(nic, NIC_PF_LMAC_0_7_CREDIT + (lmac * 8)); nic 272 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_LMAC_0_7_CREDIT + (lmac * 8), lmac_credits); nic 277 drivers/net/ethernet/cavium/thunder/nic_main.c if (!pass1_silicon(nic->pdev)) nic 278 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, nic 284 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_set_tx_pkt_pad(struct nicpf *nic, int size) nic 299 drivers/net/ethernet/cavium/thunder/nic_main.c pci_read_config_word(nic->pdev, PCI_SUBSYSTEM_ID, &sdevid); nic 302 drivers/net/ethernet/cavium/thunder/nic_main.c max_lmac = ((nic->hw->bgx_cnt - 1) * MAX_LMAC_PER_BGX) + 1; nic 304 drivers/net/ethernet/cavium/thunder/nic_main.c max_lmac = nic->hw->bgx_cnt * MAX_LMAC_PER_BGX; nic 307 drivers/net/ethernet/cavium/thunder/nic_main.c lmac_cfg = nic_reg_read(nic, NIC_PF_LMAC_0_7_CFG | (lmac << 3)); nic 310 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_LMAC_0_7_CFG | (lmac << 3), lmac_cfg); nic 317 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_set_lmac_vf_mapping(struct nicpf *nic) nic 319 drivers/net/ethernet/cavium/thunder/nic_main.c unsigned bgx_map = bgx_get_map(nic->node); nic 324 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vf_en = 0; nic 326 drivers/net/ethernet/cavium/thunder/nic_main.c for (bgx = 0; bgx < nic->hw->bgx_cnt; bgx++) { nic 329 drivers/net/ethernet/cavium/thunder/nic_main.c lmac_cnt = bgx_get_lmac_count(nic->node, bgx); nic 331 drivers/net/ethernet/cavium/thunder/nic_main.c nic->vf_lmac_map[next_bgx_lmac++] = nic 333 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vf_en += lmac_cnt; nic 343 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, nic 350 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic->num_vf_en >= pci_sriov_get_totalvfs(nic->pdev)) { nic 351 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vf_en = pci_sriov_get_totalvfs(nic->pdev); nic 357 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_get_hw_info(struct nicpf *nic) nic 360 drivers/net/ethernet/cavium/thunder/nic_main.c struct hw_info *hw = nic->hw; nic 362 drivers/net/ethernet/cavium/thunder/nic_main.c pci_read_config_word(nic->pdev, PCI_SUBSYSTEM_ID, &sdevid); nic 405 drivers/net/ethernet/cavium/thunder/nic_main.c hw->tl4_cnt = MAX_QUEUES_PER_QSET * pci_sriov_get_totalvfs(nic->pdev); nic 411 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_init_hw(struct nicpf *nic) nic 417 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CFG, 0x3); nic 420 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_BP_CFG, (1ULL << 6) | 0x03); nic 425 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic->pdev->subsystem_device == PCI_SUBSYS_DEVID_88XX_NIC_PF) { nic 427 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG, nic 430 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTF_0_1_SEND_CFG | (1 << 8), nic 435 drivers/net/ethernet/cavium/thunder/nic_main.c for (i = 0; i < nic->hw->bgx_cnt; i++) nic 436 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTFX_SEND_CFG | (i << 3), nic 440 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG, nic 442 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTF_0_1_BP_CFG + (1 << 8), nic 446 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pkind.minlen = 0; nic 447 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pkind.maxlen = NIC_HW_MAX_FRS + VLAN_ETH_HLEN + ETH_FCS_LEN + 4; nic 448 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pkind.lenerr_en = 1; nic 449 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pkind.rx_hdr = 0; nic 450 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pkind.hdr_sl = 0; nic 453 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_PKIND_0_15_CFG | (i << 3), nic 454 drivers/net/ethernet/cavium/thunder/nic_main.c *(u64 *)&nic->pkind); nic 456 drivers/net/ethernet/cavium/thunder/nic_main.c nic_set_tx_pkt_pad(nic, NIC_HW_MIN_FRS); nic 459 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_INTR_TIMER_CFG, NICPF_CLK_PER_INT_TICK); nic 462 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_ETYPE_0_7, nic 466 drivers/net/ethernet/cavium/thunder/nic_main.c cqm_cfg = nic_reg_read(nic, NIC_PF_CQM_CFG); nic 468 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CQM_CFG, NICPF_CQM_MIN_DROP_LEVEL); nic 472 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_config_cpi(struct nicpf *nic, struct cpi_cfg_msg *cfg) nic 474 drivers/net/ethernet/cavium/thunder/nic_main.c struct hw_info *hw = nic->hw; nic 481 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); nic 482 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); nic 489 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CHAN_0_255_RX_BP_CFG | (chan << 3), nic 491 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CHAN_0_255_RX_CFG | (chan << 3), nic 507 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RSSI_0_4097_RQ | (rssi << 3), nic 522 drivers/net/ethernet/cavium/thunder/nic_main.c if (pass1_silicon(nic->pdev)) { nic 523 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi << 3), nic 528 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CPI_0_2047_CFG | (cpi << 3), nic 531 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_MPI_0_2047_CFG | (cpi << 3), nic 545 drivers/net/ethernet/cavium/thunder/nic_main.c nic->cpi_base[cfg->vf_id] = cpi_base; nic 546 drivers/net/ethernet/cavium/thunder/nic_main.c nic->rssi_base[cfg->vf_id] = rssi_base; nic 550 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_send_rss_size(struct nicpf *nic, int vf) nic 555 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.rss_size.ind_tbl_size = nic->hw->rss_ind_tbl_size; nic 556 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 565 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_config_rss(struct nicpf *nic, struct rss_cfg_msg *cfg) nic 571 drivers/net/ethernet/cavium/thunder/nic_main.c rssi_base = nic->rssi_base[cfg->vf_id] + cfg->tbl_offset; nic 579 drivers/net/ethernet/cavium/thunder/nic_main.c qset = nic->vf_sqs[cfg->vf_id][svf - 1]; nic 582 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RSSI_0_4097_RQ | (rssi << 3), nic 587 drivers/net/ethernet/cavium/thunder/nic_main.c cpi_base = nic->cpi_base[cfg->vf_id]; nic 588 drivers/net/ethernet/cavium/thunder/nic_main.c if (pass1_silicon(nic->pdev)) nic 592 drivers/net/ethernet/cavium/thunder/nic_main.c cpi_cfg = nic_reg_read(nic, idx_addr | (cpi_base << 3)); nic 595 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, idx_addr | (cpi_base << 3), cpi_cfg); nic 611 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_tx_channel_cfg(struct nicpf *nic, u8 vnic, nic 614 drivers/net/ethernet/cavium/thunder/nic_main.c struct hw_info *hw = nic->hw; nic 623 drivers/net/ethernet/cavium/thunder/nic_main.c pqs_vnic = nic->pqs_vf[vnic]; nic 627 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); nic 628 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); nic 642 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic->vf_sqs[pqs_vnic][svf] == vnic) nic 655 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_QSET_0_127_SQ_0_7_CFG2 | nic 658 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL4_0_1023_CFG | (tl4 << 3), nic 661 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL3_0_255_CFG | (tl3 << 3), rr_quantum); nic 671 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL3_0_255_CHAN | (tl3 << 3), chan); nic 673 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL3_0_255_CHAN | (tl3 << 3), 0); nic 676 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CHAN_0_255_TX_CFG | (chan << 3), 1); nic 679 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL3A_0_63_CFG | (tl2 << 3), tl2); nic 680 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL2_0_63_CFG | (tl2 << 3), rr_quantum); nic 682 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL2_0_63_PRI | (tl2 << 3), 0x00); nic 691 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_TL2_LMAC | (tl2 << 3), nic 696 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_send_pnicvf(struct nicpf *nic, int sqs) nic 701 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.nicvf.nicvf = nic->nicvf[nic->pqs_vf[sqs]]; nic 702 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, sqs, &mbx); nic 706 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_send_snicvf(struct nicpf *nic, struct nicvf_ptr *nicvf) nic 709 drivers/net/ethernet/cavium/thunder/nic_main.c int sqs_id = nic->vf_sqs[nicvf->vf_id][nicvf->sqs_id]; nic 713 drivers/net/ethernet/cavium/thunder/nic_main.c mbx.nicvf.nicvf = nic->nicvf[sqs_id]; nic 714 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, nicvf->vf_id, &mbx); nic 720 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_nxt_avail_sqs(struct nicpf *nic) nic 724 drivers/net/ethernet/cavium/thunder/nic_main.c for (sqs = 0; sqs < nic->num_sqs_en; sqs++) { nic 725 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic->sqs_used[sqs]) nic 726 drivers/net/ethernet/cavium/thunder/nic_main.c nic->sqs_used[sqs] = true; nic 729 drivers/net/ethernet/cavium/thunder/nic_main.c return sqs + nic->num_vf_en; nic 735 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_alloc_sqs(struct nicpf *nic, struct sqs_alloc *sqs) nic 741 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic->num_sqs_en) nic 745 drivers/net/ethernet/cavium/thunder/nic_main.c sqs_id = nic_nxt_avail_sqs(nic); nic 748 drivers/net/ethernet/cavium/thunder/nic_main.c nic->vf_sqs[sqs->vf_id][idx] = sqs_id; nic 749 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pqs_vf[sqs_id] = sqs->vf_id; nic 757 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, sqs->vf_id, &mbx); nic 760 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_config_loopback(struct nicpf *nic, struct set_loopback *lbk) nic 764 drivers/net/ethernet/cavium/thunder/nic_main.c if (lbk->vf_id >= nic->num_vf_en) nic 767 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); nic 768 drivers/net/ethernet/cavium/thunder/nic_main.c lmac_idx = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); nic 770 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_lmac_internal_loopback(nic->node, bgx_idx, lmac_idx, lbk->enable); nic 776 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_CQ_AVG_CFG, nic 778 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RRM_AVG_CFG, nic 785 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_reset_stat_counters(struct nicpf *nic, nic 796 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, 0); nic 805 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, 0); nic 816 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, 0); nic 820 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, 0); nic 827 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_enable_tunnel_parsing(struct nicpf *nic, int vf) nic 834 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_GENEVE_DEF, nic 836 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_GENEVE_PROT_DEF, nic 838 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_NVGRE_PROT_DEF, nic 840 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_VXLAN_DEF_0_1, nic 842 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_VXLAN_PROT_DEF, nic 846 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_enable_vf(struct nicpf *nic, int vf, bool enable) nic 850 drivers/net/ethernet/cavium/thunder/nic_main.c nic->vf_enabled[vf] = enable; nic 852 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) nic 855 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 856 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 858 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_lmac_rx_tx_enable(nic->node, bgx, lmac, enable); nic 861 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_pause_frame(struct nicpf *nic, int vf, struct pfc *cfg) nic 867 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) nic 869 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 870 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 873 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_lmac_get_pfc(nic->node, bgx, lmac, &pfc); nic 878 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 880 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_lmac_set_pfc(nic->node, bgx, lmac, cfg); nic 881 drivers/net/ethernet/cavium/thunder/nic_main.c nic_mbx_send_ack(nic, vf); nic 886 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_config_timestamp(struct nicpf *nic, int vf, struct set_ptp *ptp) nic 892 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) nic 895 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 896 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 899 drivers/net/ethernet/cavium/thunder/nic_main.c pkind_val = nic_reg_read(nic, NIC_PF_PKIND_0_15_CFG | (pkind_idx << 3)); nic 909 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_config_timestamping(nic->node, bgx_idx, lmac, true); nic 910 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_ETYPE_0_7 | (1 << 3), nic 915 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_config_timestamping(nic->node, bgx_idx, lmac, false); nic 916 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_ETYPE_0_7 | (1 << 3), nic 920 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_PKIND_0_15_CFG | (pkind_idx << 3), pkind_val); nic 927 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_link_status_get(struct nicpf *nic, u8 vf) nic 936 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 937 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 940 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_get_lmac_link_state(nic->node, bgx, lmac, &link); nic 949 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_msg_to_vf(nic, vf, &mbx); nic 953 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_handle_mbx_intr(struct nicpf *nic, int vf) nic 968 drivers/net/ethernet/cavium/thunder/nic_main.c *mbx_data = nic_reg_read(nic, mbx_addr); nic 973 drivers/net/ethernet/cavium/thunder/nic_main.c dev_dbg(&nic->pdev->dev, "%s: Mailbox msg 0x%02x from VF%d\n", nic 977 drivers/net/ethernet/cavium/thunder/nic_main.c nic_mbx_send_ready(nic, vf); nic 984 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 987 drivers/net/ethernet/cavium/thunder/nic_main.c cfg |= nic->pqs_vf[vf]; nic 989 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, cfg); nic 995 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, mbx.rq.cfg); nic 1001 drivers/net/ethernet/cavium/thunder/nic_main.c if (pass2_silicon(nic->pdev)) nic 1002 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, NIC_PF_RX_CFG, 0x01); nic 1003 drivers/net/ethernet/cavium/thunder/nic_main.c if (!pass1_silicon(nic->pdev)) nic 1004 drivers/net/ethernet/cavium/thunder/nic_main.c nic_enable_tunnel_parsing(nic, vf); nic 1010 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, mbx.rq.cfg); nic 1013 drivers/net/ethernet/cavium/thunder/nic_main.c ret = nic_rcv_queue_sw_sync(nic); nic 1019 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, mbx.rq.cfg); nic 1025 drivers/net/ethernet/cavium/thunder/nic_main.c nic_reg_write(nic, reg_addr, mbx.sq.cfg); nic 1026 drivers/net/ethernet/cavium/thunder/nic_main.c nic_tx_channel_cfg(nic, mbx.qs.num, &mbx.sq); nic 1029 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 1034 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); nic 1035 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); nic 1036 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_set_lmac_mac(nic->node, bgx, lmac, mbx.mac.mac_addr); nic 1039 drivers/net/ethernet/cavium/thunder/nic_main.c ret = nic_update_hw_frs(nic, mbx.frs.max_frs, nic 1043 drivers/net/ethernet/cavium/thunder/nic_main.c nic_config_cpi(nic, &mbx.cpi_cfg); nic 1046 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_rss_size(nic, vf); nic 1050 drivers/net/ethernet/cavium/thunder/nic_main.c nic_config_rss(nic, &mbx.rss_cfg); nic 1054 drivers/net/ethernet/cavium/thunder/nic_main.c nic_enable_vf(nic, vf, true); nic 1058 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) nic 1059 drivers/net/ethernet/cavium/thunder/nic_main.c nic->sqs_used[vf - nic->num_vf_en] = false; nic 1060 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pqs_vf[vf] = 0; nic 1061 drivers/net/ethernet/cavium/thunder/nic_main.c nic_enable_vf(nic, vf, false); nic 1064 drivers/net/ethernet/cavium/thunder/nic_main.c nic_alloc_sqs(nic, &mbx.sqs_alloc); nic 1067 drivers/net/ethernet/cavium/thunder/nic_main.c nic->nicvf[vf] = mbx.nicvf.nicvf; nic 1070 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_pnicvf(nic, vf); nic 1073 drivers/net/ethernet/cavium/thunder/nic_main.c nic_send_snicvf(nic, &mbx.nicvf); nic 1076 drivers/net/ethernet/cavium/thunder/nic_main.c nic_get_bgx_stats(nic, &mbx.bgx_stats); nic 1079 drivers/net/ethernet/cavium/thunder/nic_main.c ret = nic_config_loopback(nic, &mbx.lbk); nic 1082 drivers/net/ethernet/cavium/thunder/nic_main.c ret = nic_reset_stat_counters(nic, vf, &mbx.reset_stat); nic 1085 drivers/net/ethernet/cavium/thunder/nic_main.c nic_pause_frame(nic, vf, &mbx.pfc); nic 1088 drivers/net/ethernet/cavium/thunder/nic_main.c nic_config_timestamp(nic, vf, &mbx.ptp); nic 1091 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 1095 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1096 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1097 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_reset_xcast_mode(nic->node, bgx, lmac, nic 1103 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 1107 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1108 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1109 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_set_dmac_cam_filter(nic->node, bgx, lmac, nic 1116 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 1120 drivers/net/ethernet/cavium/thunder/nic_main.c bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1121 drivers/net/ethernet/cavium/thunder/nic_main.c lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); nic 1122 drivers/net/ethernet/cavium/thunder/nic_main.c bgx_set_xcast_mode(nic->node, bgx, lmac, mbx.xcast.mode); nic 1125 drivers/net/ethernet/cavium/thunder/nic_main.c if (vf >= nic->num_vf_en) { nic 1129 drivers/net/ethernet/cavium/thunder/nic_main.c nic_link_status_get(nic, vf); nic 1132 drivers/net/ethernet/cavium/thunder/nic_main.c dev_err(&nic->pdev->dev, nic 1138 drivers/net/ethernet/cavium/thunder/nic_main.c nic_mbx_send_ack(nic, vf); nic 1140 drivers/net/ethernet/cavium/thunder/nic_main.c dev_err(&nic->pdev->dev, "NACK for MBOX 0x%02x from VF %d\n", nic 1142 drivers/net/ethernet/cavium/thunder/nic_main.c nic_mbx_send_nack(nic, vf); nic 1148 drivers/net/ethernet/cavium/thunder/nic_main.c struct nicpf *nic = (struct nicpf *)nic_irq; nic 1153 drivers/net/ethernet/cavium/thunder/nic_main.c if (irq == pci_irq_vector(nic->pdev, NIC_PF_INTR_ID_MBOX0)) nic 1158 drivers/net/ethernet/cavium/thunder/nic_main.c intr = nic_reg_read(nic, NIC_PF_MAILBOX_INT + (mbx << 3)); nic 1159 drivers/net/ethernet/cavium/thunder/nic_main.c dev_dbg(&nic->pdev->dev, "PF interrupt Mbox%d 0x%llx\n", mbx, intr); nic 1162 drivers/net/ethernet/cavium/thunder/nic_main.c dev_dbg(&nic->pdev->dev, "Intr from VF %d\n", nic 1165 drivers/net/ethernet/cavium/thunder/nic_main.c nic_handle_mbx_intr(nic, vf + nic 1167 drivers/net/ethernet/cavium/thunder/nic_main.c nic_clear_mbx_intr(nic, vf, mbx); nic 1173 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_free_all_interrupts(struct nicpf *nic) nic 1177 drivers/net/ethernet/cavium/thunder/nic_main.c for (irq = 0; irq < nic->num_vec; irq++) { nic 1178 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic->irq_allocated[irq]) nic 1179 drivers/net/ethernet/cavium/thunder/nic_main.c free_irq(pci_irq_vector(nic->pdev, irq), nic); nic 1180 drivers/net/ethernet/cavium/thunder/nic_main.c nic->irq_allocated[irq] = false; nic 1184 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_register_interrupts(struct nicpf *nic) nic 1187 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vec = pci_msix_vec_count(nic->pdev); nic 1190 drivers/net/ethernet/cavium/thunder/nic_main.c ret = pci_alloc_irq_vectors(nic->pdev, nic->num_vec, nic->num_vec, nic 1193 drivers/net/ethernet/cavium/thunder/nic_main.c dev_err(&nic->pdev->dev, nic 1195 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vec, ret); nic 1200 drivers/net/ethernet/cavium/thunder/nic_main.c for (i = NIC_PF_INTR_ID_MBOX0; i < nic->num_vec; i++) { nic 1201 drivers/net/ethernet/cavium/thunder/nic_main.c sprintf(nic->irq_name[i], nic 1204 drivers/net/ethernet/cavium/thunder/nic_main.c ret = request_irq(pci_irq_vector(nic->pdev, i), nic 1206 drivers/net/ethernet/cavium/thunder/nic_main.c nic->irq_name[i], nic); nic 1210 drivers/net/ethernet/cavium/thunder/nic_main.c nic->irq_allocated[i] = true; nic 1214 drivers/net/ethernet/cavium/thunder/nic_main.c nic_enable_mbx_intr(nic); nic 1218 drivers/net/ethernet/cavium/thunder/nic_main.c dev_err(&nic->pdev->dev, "Request irq failed\n"); nic 1219 drivers/net/ethernet/cavium/thunder/nic_main.c nic_free_all_interrupts(nic); nic 1220 drivers/net/ethernet/cavium/thunder/nic_main.c pci_free_irq_vectors(nic->pdev); nic 1221 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vec = 0; nic 1225 drivers/net/ethernet/cavium/thunder/nic_main.c static void nic_unregister_interrupts(struct nicpf *nic) nic 1227 drivers/net/ethernet/cavium/thunder/nic_main.c nic_free_all_interrupts(nic); nic 1228 drivers/net/ethernet/cavium/thunder/nic_main.c pci_free_irq_vectors(nic->pdev); nic 1229 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vec = 0; nic 1232 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_num_sqs_en(struct nicpf *nic, int vf_en) nic 1247 drivers/net/ethernet/cavium/thunder/nic_main.c pos = pci_find_ext_capability(nic->pdev, PCI_EXT_CAP_ID_SRIOV); nic 1248 drivers/net/ethernet/cavium/thunder/nic_main.c pci_read_config_word(nic->pdev, (pos + PCI_SRIOV_TOTAL_VF), &total_vf); nic 1252 drivers/net/ethernet/cavium/thunder/nic_main.c static int nic_sriov_init(struct pci_dev *pdev, struct nicpf *nic) nic 1266 drivers/net/ethernet/cavium/thunder/nic_main.c if (total_vf_cnt < nic->num_vf_en) nic 1267 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vf_en = total_vf_cnt; nic 1272 drivers/net/ethernet/cavium/thunder/nic_main.c vf_en = nic->num_vf_en; nic 1273 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_sqs_en = nic_num_sqs_en(nic, nic->num_vf_en); nic 1274 drivers/net/ethernet/cavium/thunder/nic_main.c vf_en += nic->num_sqs_en; nic 1280 drivers/net/ethernet/cavium/thunder/nic_main.c nic->num_vf_en = 0; nic 1287 drivers/net/ethernet/cavium/thunder/nic_main.c nic->flags |= NIC_SRIOV_ENABLED; nic 1294 drivers/net/ethernet/cavium/thunder/nic_main.c struct nicpf *nic; nic 1300 drivers/net/ethernet/cavium/thunder/nic_main.c nic = devm_kzalloc(dev, sizeof(*nic), GFP_KERNEL); nic 1301 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic) nic 1304 drivers/net/ethernet/cavium/thunder/nic_main.c nic->hw = devm_kzalloc(dev, sizeof(struct hw_info), GFP_KERNEL); nic 1305 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic->hw) nic 1308 drivers/net/ethernet/cavium/thunder/nic_main.c pci_set_drvdata(pdev, nic); nic 1310 drivers/net/ethernet/cavium/thunder/nic_main.c nic->pdev = pdev; nic 1338 drivers/net/ethernet/cavium/thunder/nic_main.c nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); nic 1339 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic->reg_base) { nic 1345 drivers/net/ethernet/cavium/thunder/nic_main.c nic->node = nic_get_node_id(pdev); nic 1348 drivers/net/ethernet/cavium/thunder/nic_main.c nic_get_hw_info(nic); nic 1352 drivers/net/ethernet/cavium/thunder/nic_main.c max_lmac = nic->hw->bgx_cnt * MAX_LMAC_PER_BGX; nic 1354 drivers/net/ethernet/cavium/thunder/nic_main.c nic->vf_lmac_map = devm_kmalloc_array(dev, max_lmac, sizeof(u8), nic 1356 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic->vf_lmac_map) nic 1360 drivers/net/ethernet/cavium/thunder/nic_main.c nic_init_hw(nic); nic 1362 drivers/net/ethernet/cavium/thunder/nic_main.c nic_set_lmac_vf_mapping(nic); nic 1365 drivers/net/ethernet/cavium/thunder/nic_main.c err = nic_register_interrupts(nic); nic 1370 drivers/net/ethernet/cavium/thunder/nic_main.c err = nic_sriov_init(pdev, nic); nic 1377 drivers/net/ethernet/cavium/thunder/nic_main.c nic_unregister_interrupts(nic); nic 1388 drivers/net/ethernet/cavium/thunder/nic_main.c struct nicpf *nic = pci_get_drvdata(pdev); nic 1390 drivers/net/ethernet/cavium/thunder/nic_main.c if (!nic) nic 1393 drivers/net/ethernet/cavium/thunder/nic_main.c if (nic->flags & NIC_SRIOV_ENABLED) nic 1396 drivers/net/ethernet/cavium/thunder/nic_main.c nic_unregister_interrupts(nic); nic 122 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 128 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic->link_up) { nic 134 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c switch (nic->speed) { nic 154 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (nic->mac_type == BGX_MODE_RXAUI) { nic 171 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c cmd->base.duplex = nic->duplex; nic 172 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c cmd->base.speed = nic->speed; nic 184 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 186 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c return nic->link_up; nic 192 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 196 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c strlcpy(info->bus_info, pci_name(nic->pdev), sizeof(info->bus_info)); nic 201 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 203 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c return nic->msg_enable; nic 208 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 210 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->msg_enable = lvl; nic 213 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c static void nicvf_get_qset_strings(struct nicvf *nic, u8 **data, int qset) nic 218 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { nic 226 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { nic 237 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 254 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_get_qset_strings(nic, &data, 0); nic 256 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (sqs = 0; sqs < nic->sqs_count; sqs++) { nic 257 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic->snicvf[sqs]) nic 259 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_get_qset_strings(nic->snicvf[sqs], &data, sqs + 1); nic 275 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 283 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c (nic->qs->rq_cnt + nic->qs->sq_cnt); nic 284 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (sqs = 0; sqs < nic->sqs_count; sqs++) { nic 287 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c snic = nic->snicvf[sqs]; nic 299 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c static void nicvf_get_qset_stats(struct nicvf *nic, nic 304 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic) nic 307 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { nic 308 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_update_rq_stats(nic, qidx); nic 310 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c *((*data)++) = ((u64 *)&nic->qs->rq[qidx].stats) nic 314 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { nic 315 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_update_sq_stats(nic, qidx); nic 317 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c *((*data)++) = ((u64 *)&nic->qs->sq[qidx].stats) nic 325 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 329 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_update_stats(nic); nic 332 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_update_lmac_stats(nic); nic 335 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c *(data++) = ((u64 *)&nic->hw_stats) nic 340 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c tmp_stats += ((u64 *)per_cpu_ptr(nic->drv_stats, cpu)) nic 345 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_get_qset_stats(nic, stats, &data); nic 347 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c for (sqs = 0; sqs < nic->sqs_count; sqs++) { nic 348 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic->snicvf[sqs]) nic 350 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_get_qset_stats(nic->snicvf[sqs], stats, &data); nic 354 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c *(data++) = nic->bgx_stats.rx_stats[stat]; nic 356 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c *(data++) = nic->bgx_stats.tx_stats[stat]; nic 367 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 376 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VNIC_CFG); nic 379 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, nic 382 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VF_INT); nic 383 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VF_INT_W1S); nic 384 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VF_ENA_W1C); nic 385 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VF_ENA_W1S); nic 386 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VNIC_RSS_CFG); nic 389 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_VNIC_RSS_KEY_0_4 | (key << 3)); nic 393 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, nic 397 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, nic 400 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_reg_read(nic, NIC_QSET_RQ_GEN_CFG); nic 404 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_CFG, q); nic 405 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_CFG2, q); nic 406 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_THRESH, q); nic 407 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_BASE, q); nic 408 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_HEAD, q); nic 409 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_TAIL, q); nic 410 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_DOOR, q); nic 411 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_STATUS, q); nic 412 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_STATUS2, q); nic 413 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_DEBUG, q); nic 418 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RQ_0_7_CFG, q); nic 419 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, nic 422 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, reg_offset, q); nic 426 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_CFG, q); nic 427 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_THRESH, q); nic 428 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_BASE, q); nic 429 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_HEAD, q); nic 430 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_TAIL, q); nic 431 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_DOOR, q); nic 432 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_STATUS, q); nic 433 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_DEBUG, q); nic 438 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_STAT_0_1, q); nic 440 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, reg_offset, q); nic 444 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_CFG, q); nic 445 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_THRESH, q); nic 446 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_BASE, q); nic 447 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_HEAD, q); nic 448 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_TAIL, q); nic 449 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_DOOR, q); nic 450 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, nic 452 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, nic 455 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c p[i++] = nicvf_queue_reg_read(nic, reg_offset, q); nic 462 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 464 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c cmd->rx_coalesce_usecs = nic->cq_coalesce_usecs; nic 471 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 472 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct queue_set *qs = nic->qs; nic 483 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 484 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct queue_set *qs = nic->qs; nic 488 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (pass1_silicon(nic->pdev)) nic 514 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c static int nicvf_get_rss_hash_opts(struct nicvf *nic, nic 542 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 547 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c info->data = nic->rx_queues; nic 551 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c return nicvf_get_rss_hash_opts(nic, info); nic 558 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c static int nicvf_set_rss_hash_opts(struct nicvf *nic, nic 561 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf_rss_info *rss = &nic->rss_info; nic 562 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c u64 rss_cfg = nicvf_reg_read(nic, NIC_VNIC_RSS_CFG); nic 565 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c netdev_err(nic->netdev, nic 568 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c netdev_info(nic->netdev, "Set RSS flow type = %d, data = %lld\n", nic 622 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_reg_write(nic, NIC_VNIC_RSS_CFG, rss_cfg); nic 628 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 632 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c return nicvf_set_rss_hash_opts(nic, info); nic 646 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 648 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c return nic->rss_info.rss_size; nic 654 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 655 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf_rss_info *rss = &nic->rss_info; nic 675 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 676 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf_rss_info *rss = &nic->rss_info; nic 683 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c netdev_err(nic->netdev, nic 695 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_set_rss_key(nic); nic 698 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nicvf_config_rss(nic); nic 706 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 710 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c channel->max_rx = nic->max_queues; nic 711 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c channel->max_tx = nic->max_queues; nic 713 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c channel->rx_count = nic->rx_queues; nic 714 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c channel->tx_count = nic->tx_queues; nic 721 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 728 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (channel->rx_count > nic->max_queues) nic 730 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (channel->tx_count > nic->max_queues) nic 733 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (nic->xdp_prog && nic 734 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c ((channel->tx_count + channel->rx_count) > nic->max_queues)) { nic 735 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c netdev_err(nic->netdev, nic 737 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->max_queues); nic 744 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->rx_queues = channel->rx_count; nic 745 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->tx_queues = channel->tx_count; nic 746 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic->xdp_prog) nic 747 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->xdp_tx_queues = 0; nic 749 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->xdp_tx_queues = channel->rx_count; nic 751 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c txq_count = nic->xdp_tx_queues + nic->tx_queues; nic 752 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c cqcount = max(nic->rx_queues, txq_count); nic 755 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->sqs_count = roundup(cqcount, MAX_CMP_QUEUES_PER_QS); nic 756 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->sqs_count = (nic->sqs_count / MAX_CMP_QUEUES_PER_QS) - 1; nic 758 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->sqs_count = 0; nic 761 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->qs->rq_cnt = min_t(u8, nic->rx_queues, MAX_RCV_QUEUES_PER_QS); nic 762 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->qs->sq_cnt = min_t(u8, txq_count, MAX_SND_QUEUES_PER_QS); nic 763 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->qs->cq_cnt = max(nic->qs->rq_cnt, nic->qs->sq_cnt); nic 765 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c err = nicvf_set_real_num_queues(dev, nic->tx_queues, nic->rx_queues); nic 773 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->tx_queues, nic->rx_queues); nic 781 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 785 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if ((nic->mac_type == BGX_MODE_SGMII) || nic 786 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c (nic->mac_type == BGX_MODE_QSGMII) || nic 787 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c (nic->mac_type == BGX_MODE_RGMII)) nic 792 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nicvf_send_msg_to_pf(nic, &mbx)) { nic 793 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c pause->autoneg = nic->pfc.autoneg; nic 794 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c pause->rx_pause = nic->pfc.fc_rx; nic 795 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c pause->tx_pause = nic->pfc.fc_tx; nic 802 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(dev); nic 806 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if ((nic->mac_type == BGX_MODE_SGMII) || nic 807 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c (nic->mac_type == BGX_MODE_QSGMII) || nic 808 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c (nic->mac_type == BGX_MODE_RGMII)) nic 818 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (nicvf_send_msg_to_pf(nic, &mbx)) nic 821 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->pfc.fc_rx = pause->rx_pause; nic 822 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c nic->pfc.fc_tx = pause->tx_pause; nic 830 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c struct nicvf *nic = netdev_priv(netdev); nic 832 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c if (!nic->ptp_clock) nic 842 drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c info->phc_index = cavium_ptp_clock_index(nic->ptp_clock); nic 75 drivers/net/ethernet/cavium/thunder/nicvf_main.c static inline u8 nicvf_netdev_qidx(struct nicvf *nic, u8 qidx) nic 77 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->sqs_mode) nic 78 drivers/net/ethernet/cavium/thunder/nicvf_main.c return qidx + ((nic->sqs_id + 1) * MAX_CMP_QUEUES_PER_QS); nic 93 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_reg_write(struct nicvf *nic, u64 offset, u64 val) nic 95 drivers/net/ethernet/cavium/thunder/nicvf_main.c writeq_relaxed(val, nic->reg_base + offset); nic 98 drivers/net/ethernet/cavium/thunder/nicvf_main.c u64 nicvf_reg_read(struct nicvf *nic, u64 offset) nic 100 drivers/net/ethernet/cavium/thunder/nicvf_main.c return readq_relaxed(nic->reg_base + offset); nic 103 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_queue_reg_write(struct nicvf *nic, u64 offset, nic 106 drivers/net/ethernet/cavium/thunder/nicvf_main.c void __iomem *addr = nic->reg_base + offset; nic 111 drivers/net/ethernet/cavium/thunder/nicvf_main.c u64 nicvf_queue_reg_read(struct nicvf *nic, u64 offset, u64 qidx) nic 113 drivers/net/ethernet/cavium/thunder/nicvf_main.c void __iomem *addr = nic->reg_base + offset; nic 119 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_write_to_mbx(struct nicvf *nic, union nic_mbx *mbx) nic 123 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_write(nic, NIC_VF_PF_MAILBOX_0_1 + 0, msg[0]); nic 124 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_write(nic, NIC_VF_PF_MAILBOX_0_1 + 8, msg[1]); nic 127 drivers/net/ethernet/cavium/thunder/nicvf_main.c int nicvf_send_msg_to_pf(struct nicvf *nic, union nic_mbx *mbx) nic 133 drivers/net/ethernet/cavium/thunder/nicvf_main.c mutex_lock(&nic->rx_mode_mtx); nic 135 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = false; nic 136 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_nacked = false; nic 138 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_write_to_mbx(nic, mbx); nic 141 drivers/net/ethernet/cavium/thunder/nicvf_main.c while (!nic->pf_acked) { nic 142 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->pf_nacked) { nic 143 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 145 drivers/net/ethernet/cavium/thunder/nicvf_main.c (mbx->msg.msg & 0xFF), nic->vf_id); nic 150 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->pf_acked) nic 154 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 156 drivers/net/ethernet/cavium/thunder/nicvf_main.c (mbx->msg.msg & 0xFF), nic->vf_id); nic 161 drivers/net/ethernet/cavium/thunder/nicvf_main.c mutex_unlock(&nic->rx_mode_mtx); nic 168 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_check_pf_ready(struct nicvf *nic) nic 173 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx)) { nic 174 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 182 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_send_cfg_done(struct nicvf *nic) nic 187 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx)) { nic 188 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 193 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_read_bgx_stats(struct nicvf *nic, struct bgx_stats_msg *bgx) nic 196 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->bgx_stats.rx_stats[bgx->idx] = bgx->stats; nic 198 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->bgx_stats.tx_stats[bgx->idx] = bgx->stats; nic 201 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_handle_mbx_intr(struct nicvf *nic) nic 212 drivers/net/ethernet/cavium/thunder/nicvf_main.c *mbx_data = nicvf_reg_read(nic, mbx_addr); nic 217 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_dbg(nic->netdev, "Mbox message: msg: 0x%x\n", mbx.msg.msg); nic 220 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 221 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->vf_id = mbx.nic_cfg.vf_id & 0x7F; nic 222 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->tns_mode = mbx.nic_cfg.tns_mode & 0x7F; nic 223 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->node = mbx.nic_cfg.node_id; nic 224 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->set_mac_pending) nic 225 drivers/net/ethernet/cavium/thunder/nicvf_main.c ether_addr_copy(nic->netdev->dev_addr, nic 227 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_mode = mbx.nic_cfg.sqs_mode; nic 228 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->loopback_supported = mbx.nic_cfg.loopback_supported; nic 229 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->link_up = false; nic 230 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->duplex = 0; nic 231 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->speed = 0; nic 234 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 237 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_nacked = true; nic 240 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->rss_info.rss_size = mbx.rss_size.ind_tbl_size; nic 241 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 244 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_read_bgx_stats(nic, &mbx.bgx_stats); nic 245 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 248 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 249 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->link_up != mbx.link_status.link_up) { nic 250 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->link_up = mbx.link_status.link_up; nic 251 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->duplex = mbx.link_status.duplex; nic 252 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->speed = mbx.link_status.speed; nic 253 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->mac_type = mbx.link_status.mac_type; nic 254 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->link_up) { nic 255 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_info(nic->netdev, nic 257 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->speed, nic 258 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->duplex == DUPLEX_FULL ? nic 260 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_carrier_on(nic->netdev); nic 261 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_tx_start_all_queues(nic->netdev); nic 263 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_info(nic->netdev, "Link is Down\n"); nic 264 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_carrier_off(nic->netdev); nic 265 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_tx_stop_all_queues(nic->netdev); nic 270 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_count = mbx.sqs_alloc.qs_count; nic 271 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 277 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[mbx.nicvf.sqs_id] = nic 279 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 286 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf = (struct nicvf *)mbx.nicvf.nicvf; nic 287 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 290 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pfc.autoneg = mbx.pfc.autoneg; nic 291 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pfc.fc_rx = mbx.pfc.fc_rx; nic 292 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pfc.fc_tx = mbx.pfc.fc_tx; nic 293 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pf_acked = true; nic 296 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 300 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_MBOX, 0); nic 303 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_hw_set_mac_addr(struct nicvf *nic, struct net_device *netdev) nic 308 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.mac.vf_id = nic->vf_id; nic 311 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_send_msg_to_pf(nic, &mbx); nic 314 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_config_cpi(struct nicvf *nic) nic 319 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.cpi_cfg.vf_id = nic->vf_id; nic 320 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.cpi_cfg.cpi_alg = nic->cpi_alg; nic 321 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.cpi_cfg.rq_cnt = nic->qs->rq_cnt; nic 323 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 326 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_get_rss_size(struct nicvf *nic) nic 331 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.rss_size.vf_id = nic->vf_id; nic 332 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 335 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_config_rss(struct nicvf *nic) nic 338 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf_rss_info *rss = &nic->rss_info; nic 342 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.rss_cfg.vf_id = nic->vf_id; nic 354 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 360 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_set_rss_key(struct nicvf *nic) nic 362 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf_rss_info *rss = &nic->rss_info; nic 367 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_write(nic, key_addr, rss->key[idx]); nic 372 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_rss_init(struct nicvf *nic) nic 374 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf_rss_info *rss = &nic->rss_info; nic 377 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_get_rss_size(nic); nic 388 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_rss_key(nic); nic 391 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_write(nic, NIC_VNIC_RSS_CFG, rss->cfg); nic 397 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->rx_queues); nic 398 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_rss(nic); nic 403 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_request_sqs(struct nicvf *nic) nic 407 drivers/net/ethernet/cavium/thunder/nicvf_main.c int sqs_count = nic->sqs_count; nic 411 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->sqs_mode || !nic->sqs_count) nic 415 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.sqs_alloc.vf_id = nic->vf_id; nic 416 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.sqs_alloc.qs_count = nic->sqs_count; nic 417 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx)) { nic 419 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_count = 0; nic 424 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->sqs_count) nic 427 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->rx_queues > MAX_RCV_QUEUES_PER_QS) nic 428 drivers/net/ethernet/cavium/thunder/nicvf_main.c rx_queues = nic->rx_queues - MAX_RCV_QUEUES_PER_QS; nic 430 drivers/net/ethernet/cavium/thunder/nicvf_main.c tx_queues = nic->tx_queues + nic->xdp_tx_queues; nic 435 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (sqs = 0; sqs < nic->sqs_count; sqs++) { nic 437 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.nicvf.vf_id = nic->vf_id; nic 439 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 441 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->sqs_id = sqs; nic 443 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->qs->rq_cnt = MAX_RCV_QUEUES_PER_QS; nic 446 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->qs->rq_cnt = rx_queues; nic 451 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->qs->sq_cnt = MAX_SND_QUEUES_PER_QS; nic 454 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->qs->sq_cnt = tx_queues; nic 458 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[sqs]->qs->cq_cnt = nic 459 drivers/net/ethernet/cavium/thunder/nicvf_main.c max(nic->snicvf[sqs]->qs->rq_cnt, nic->snicvf[sqs]->qs->sq_cnt); nic 462 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_open(nic->snicvf[sqs]->netdev); nic 466 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (sqs_count != nic->sqs_count) nic 467 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_real_num_queues(nic->netdev, nic 468 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->tx_queues, nic->rx_queues); nic 475 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_send_vf_struct(struct nicvf *nic) nic 480 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.nicvf.sqs_mode = nic->sqs_mode; nic 481 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.nicvf.nicvf = (u64)nic; nic 482 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 485 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_get_primary_vf_struct(struct nicvf *nic) nic 490 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 512 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_init_resources(struct nicvf *nic) nic 517 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_qset_config(nic, true); nic 520 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_config_data_transfer(nic, true); nic 522 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 530 drivers/net/ethernet/cavium/thunder/nicvf_main.c static inline bool nicvf_xdp_rx(struct nicvf *nic, struct bpf_prog *prog, nic 545 drivers/net/ethernet/cavium/thunder/nicvf_main.c cpu_addr = nicvf_iova_to_phys(nic, dma_addr); nic 578 drivers/net/ethernet/cavium/thunder/nicvf_main.c dma_unmap_page_attrs(&nic->pdev->dev, dma_addr, nic 593 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_xdp_sq_append_pkt(nic, sq, (u64)xdp.data, dma_addr, len); nic 599 drivers/net/ethernet/cavium/thunder/nicvf_main.c trace_xdp_exception(nic->netdev, prog, action); nic 609 drivers/net/ethernet/cavium/thunder/nicvf_main.c dma_unmap_page_attrs(&nic->pdev->dev, dma_addr, nic 623 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 627 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = nic->pnicvf; nic 633 drivers/net/ethernet/cavium/thunder/nicvf_main.c atomic_set(&nic->tx_ptp_skbs, 0); nic 636 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->ptp_skb) nic 646 drivers/net/ethernet/cavium/thunder/nicvf_main.c ns = cavium_ptp_tstamp2time(nic->ptp_clock, cqe_tx->ptp_timestamp); nic 648 drivers/net/ethernet/cavium/thunder/nicvf_main.c skb_tstamp_tx(nic->ptp_skb, &ts); nic 652 drivers/net/ethernet/cavium/thunder/nicvf_main.c dev_kfree_skb_any(nic->ptp_skb); nic 653 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->ptp_skb = NULL; nic 665 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 670 drivers/net/ethernet/cavium/thunder/nicvf_main.c sq = &nic->qs->sq[cqe_tx->sq_idx]; nic 678 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_check_cqe_tx_errs(nic->pnicvf, cqe_tx); nic 685 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unmap_sndq_buffers(nic, sq, cqe_tx->sqe_ptr, nic 703 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unmap_sndq_buffers(nic, sq, hdr->rsvd2, nic 707 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unmap_sndq_buffers(nic, sq, cqe_tx->sqe_ptr, nic 716 drivers/net/ethernet/cavium/thunder/nicvf_main.c !nic->pnicvf->ptp_skb) nic 717 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf->ptp_skb = skb; nic 725 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->hw_tso) nic 758 drivers/net/ethernet/cavium/thunder/nicvf_main.c static inline void nicvf_set_rxtstamp(struct nicvf *nic, struct sk_buff *skb) nic 762 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->ptp_clock || !nic->hw_rx_tstamp) nic 766 drivers/net/ethernet/cavium/thunder/nicvf_main.c ns = cavium_ptp_tstamp2time(nic->ptp_clock, nic 779 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 780 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *snic = nic; nic 784 drivers/net/ethernet/cavium/thunder/nicvf_main.c rq_idx = nicvf_netdev_qidx(nic, cqe_rx->rq_idx); nic 786 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->sqs_mode) { nic 788 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = nic->pnicvf; nic 789 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev = nic->netdev; nic 794 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_check_cqe_rx_errs(nic, cqe_rx); nic 800 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->xdp_prog && (cqe_rx->rb_cnt == 1)) { nic 802 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_xdp_rx(snic, nic->xdp_prog, cqe_rx, sq, rq, &skb)) nic 806 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->xdp_prog ? true : false); nic 812 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (netif_msg_pktdata(nic)) { nic 813 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_info(nic->netdev, "skb 0x%p, len=%d\n", skb, skb->len); nic 824 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_rxtstamp(nic, skb); nic 854 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 855 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct queue_set *qs = nic->qs; nic 867 drivers/net/ethernet/cavium/thunder/nicvf_main.c cqe_count = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_STATUS, cq_idx); nic 873 drivers/net/ethernet/cavium/thunder/nicvf_main.c cqe_head = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_HEAD, cq_idx) >> 9; nic 913 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_DOOR, nic 924 drivers/net/ethernet/cavium/thunder/nicvf_main.c txq_idx = nicvf_netdev_qidx(nic, cq_idx); nic 926 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->pnicvf->xdp_prog) { nic 927 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (txq_idx < nic->pnicvf->xdp_tx_queues) { nic 928 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_xdp_sq_doorbell(nic, sq, cq_idx); nic 931 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = nic->pnicvf; nic 932 drivers/net/ethernet/cavium/thunder/nicvf_main.c txq_idx -= nic->pnicvf->xdp_tx_queues; nic 938 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev = nic->pnicvf->netdev; nic 947 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = nic->pnicvf; nic 948 drivers/net/ethernet/cavium/thunder/nicvf_main.c this_cpu_inc(nic->drv_stats->txq_wake); nic 949 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_warn(nic, tx_err, netdev, nic 964 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 974 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_head = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_HEAD, nic 976 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_CQ, cq->cq_idx); nic 977 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_HEAD, nic 979 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_CQ, cq->cq_idx); nic 990 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = (struct nicvf *)data; nic 991 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct queue_set *qs = nic->qs; nic 995 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_tx_disable(nic->netdev); nic 999 drivers/net/ethernet/cavium/thunder/nicvf_main.c status = nicvf_queue_reg_read(nic, NIC_QSET_CQ_0_7_STATUS, nic 1004 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx); nic 1005 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_sq_disable(nic, qidx); nic 1006 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_cq_intr_handler(nic->netdev, qidx, NULL, 0); nic 1007 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_cmp_queue_config(nic, qs, qidx, true); nic 1008 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_sq_free_used_descs(nic->netdev, &qs->sq[qidx], qidx); nic 1009 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_sq_enable(nic, &qs->sq[qidx], qidx); nic 1011 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_CQ, qidx); nic 1014 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_tx_start_all_queues(nic->netdev); nic 1016 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1019 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_dump_intr_status(struct nicvf *nic) nic 1021 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_info(nic, intr, nic->netdev, "interrupt status 0x%llx\n", nic 1022 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_read(nic, NIC_VF_INT)); nic 1027 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = (struct nicvf *)nicvf_irq; nic 1030 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_dump_intr_status(nic); nic 1032 drivers/net/ethernet/cavium/thunder/nicvf_main.c intr = nicvf_reg_read(nic, NIC_VF_INT); nic 1037 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_handle_mbx_intr(nic); nic 1045 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = cq_poll->nicvf; nic 1048 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_dump_intr_status(nic); nic 1051 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx); nic 1057 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_CQ, qidx); nic 1064 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = (struct nicvf *)nicvf_irq; nic 1068 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_dump_intr_status(nic); nic 1071 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (qidx = 0; qidx < nic->qs->rbdr_cnt; qidx++) { nic 1072 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nicvf_is_intr_enabled(nic, NICVF_INTR_RBDR, qidx)) nic 1074 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_RBDR, qidx); nic 1075 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_hi_schedule(&nic->rbdr_task); nic 1077 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_RBDR, qidx); nic 1085 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = (struct nicvf *)nicvf_irq; nic 1087 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_dump_intr_status(nic); nic 1090 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1091 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_hi_schedule(&nic->qs_err_task); nic 1092 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1097 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_set_irq_affinity(struct nicvf *nic) nic 1101 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (vec = 0; vec < nic->num_vec; vec++) { nic 1102 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->irq_allocated[vec]) nic 1105 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!zalloc_cpumask_var(&nic->affinity_mask[vec], GFP_KERNEL)) nic 1110 drivers/net/ethernet/cavium/thunder/nicvf_main.c cpu = nicvf_netdev_qidx(nic, vec) + 1; nic 1114 drivers/net/ethernet/cavium/thunder/nicvf_main.c cpumask_set_cpu(cpumask_local_spread(cpu, nic->node), nic 1115 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->affinity_mask[vec]); nic 1116 drivers/net/ethernet/cavium/thunder/nicvf_main.c irq_set_affinity_hint(pci_irq_vector(nic->pdev, vec), nic 1117 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->affinity_mask[vec]); nic 1121 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_register_interrupts(struct nicvf *nic) nic 1126 drivers/net/ethernet/cavium/thunder/nicvf_main.c sprintf(nic->irq_name[irq], "%s-rxtx-%d", nic 1127 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf->netdev->name, nic 1128 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_netdev_qidx(nic, irq)); nic 1131 drivers/net/ethernet/cavium/thunder/nicvf_main.c sprintf(nic->irq_name[irq], "%s-sq-%d", nic 1132 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf->netdev->name, nic 1133 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_netdev_qidx(nic, irq - NICVF_INTR_ID_SQ)); nic 1136 drivers/net/ethernet/cavium/thunder/nicvf_main.c sprintf(nic->irq_name[irq], "%s-rbdr-%d", nic 1137 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf->netdev->name, nic 1138 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_mode ? (nic->sqs_id + 1) : 0); nic 1141 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (irq = 0; irq < nic->qs->cq_cnt; irq++) { nic 1142 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = request_irq(pci_irq_vector(nic->pdev, irq), nic 1144 drivers/net/ethernet/cavium/thunder/nicvf_main.c 0, nic->irq_name[irq], nic->napi[irq]); nic 1147 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->irq_allocated[irq] = true; nic 1152 drivers/net/ethernet/cavium/thunder/nicvf_main.c irq < (NICVF_INTR_ID_RBDR + nic->qs->rbdr_cnt); irq++) { nic 1153 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = request_irq(pci_irq_vector(nic->pdev, irq), nic 1155 drivers/net/ethernet/cavium/thunder/nicvf_main.c 0, nic->irq_name[irq], nic); nic 1158 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->irq_allocated[irq] = true; nic 1162 drivers/net/ethernet/cavium/thunder/nicvf_main.c sprintf(nic->irq_name[NICVF_INTR_ID_QS_ERR], "%s-qset-err-%d", nic 1163 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf->netdev->name, nic 1164 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_mode ? (nic->sqs_id + 1) : 0); nic 1166 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = request_irq(pci_irq_vector(nic->pdev, irq), nic 1168 drivers/net/ethernet/cavium/thunder/nicvf_main.c 0, nic->irq_name[irq], nic); nic 1172 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->irq_allocated[irq] = true; nic 1175 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_irq_affinity(nic); nic 1179 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, "request_irq failed, vector %d\n", irq); nic 1184 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_unregister_interrupts(struct nicvf *nic) nic 1186 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct pci_dev *pdev = nic->pdev; nic 1190 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (irq = 0; irq < nic->num_vec; irq++) { nic 1191 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->irq_allocated[irq]) nic 1195 drivers/net/ethernet/cavium/thunder/nicvf_main.c free_cpumask_var(nic->affinity_mask[irq]); nic 1198 drivers/net/ethernet/cavium/thunder/nicvf_main.c free_irq(pci_irq_vector(pdev, irq), nic->napi[irq]); nic 1200 drivers/net/ethernet/cavium/thunder/nicvf_main.c free_irq(pci_irq_vector(pdev, irq), nic); nic 1202 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->irq_allocated[irq] = false; nic 1207 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->num_vec = 0; nic 1213 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_register_misc_interrupt(struct nicvf *nic) nic 1219 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->pdev->msix_enabled) nic 1223 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->num_vec = pci_msix_vec_count(nic->pdev); nic 1224 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = pci_alloc_irq_vectors(nic->pdev, nic->num_vec, nic->num_vec, nic 1227 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_err(nic->netdev, nic 1228 drivers/net/ethernet/cavium/thunder/nicvf_main.c "Req for #%d msix vectors failed\n", nic->num_vec); nic 1232 drivers/net/ethernet/cavium/thunder/nicvf_main.c sprintf(nic->irq_name[irq], "%s Mbox", "NICVF"); nic 1234 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = request_irq(pci_irq_vector(nic->pdev, irq), nic 1235 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_misc_intr_handler, 0, nic->irq_name[irq], nic); nic 1239 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->irq_allocated[irq] = true; nic 1242 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_MBOX, 0); nic 1245 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nicvf_check_pf_ready(nic)) { nic 1246 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_MBOX, 0); nic 1247 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unregister_interrupts(nic); nic 1256 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1273 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->xdp_prog) nic 1274 drivers/net/ethernet/cavium/thunder/nicvf_main.c qid += nic->xdp_tx_queues; nic 1276 drivers/net/ethernet/cavium/thunder/nicvf_main.c snic = nic; nic 1280 drivers/net/ethernet/cavium/thunder/nicvf_main.c snic = (struct nicvf *)nic->snicvf[tmp - 1]; nic 1282 drivers/net/ethernet/cavium/thunder/nicvf_main.c netdev_warn(nic->netdev, nic 1303 drivers/net/ethernet/cavium/thunder/nicvf_main.c this_cpu_inc(nic->drv_stats->txq_stop); nic 1304 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_warn(nic, tx_err, netdev, nic 1313 drivers/net/ethernet/cavium/thunder/nicvf_main.c static inline void nicvf_free_cq_poll(struct nicvf *nic) nic 1318 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (qidx = 0; qidx < nic->qs->cq_cnt; qidx++) { nic 1319 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_poll = nic->napi[qidx]; nic 1322 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->napi[qidx] = NULL; nic 1330 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1331 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct queue_set *qs = nic->qs; nic 1336 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->nicvf_rx_mode_wq) { nic 1337 drivers/net/ethernet/cavium/thunder/nicvf_main.c cancel_delayed_work_sync(&nic->link_change_work); nic 1338 drivers/net/ethernet/cavium/thunder/nicvf_main.c drain_workqueue(nic->nicvf_rx_mode_wq); nic 1342 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 1345 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_tx_stop_all_queues(nic->netdev); nic 1346 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->link_up = false; nic 1349 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->sqs_mode) { nic 1350 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (qidx = 0; qidx < nic->sqs_count; qidx++) { nic 1351 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->snicvf[qidx]) nic 1353 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_stop(nic->snicvf[qidx]->netdev); nic 1354 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->snicvf[qidx] = NULL; nic 1360 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_RBDR, qidx); nic 1361 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_RBDR, qidx); nic 1363 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1364 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1367 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (irq = 0; irq < nic->num_vec; irq++) nic 1368 drivers/net/ethernet/cavium/thunder/nicvf_main.c synchronize_irq(pci_irq_vector(nic->pdev, irq)); nic 1370 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_kill(&nic->rbdr_task); nic 1371 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_kill(&nic->qs_err_task); nic 1372 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->rb_work_scheduled) nic 1373 drivers/net/ethernet/cavium/thunder/nicvf_main.c cancel_delayed_work_sync(&nic->rbdr_work); nic 1375 drivers/net/ethernet/cavium/thunder/nicvf_main.c for (qidx = 0; qidx < nic->qs->cq_cnt; qidx++) { nic 1376 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_poll = nic->napi[qidx]; nic 1383 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx); nic 1384 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_clear_intr(nic, NICVF_INTR_CQ, qidx); nic 1395 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_data_transfer(nic, false); nic 1398 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_qset_config(nic, false); nic 1401 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_MBOX, 0); nic 1403 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unregister_interrupts(nic); nic 1405 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_free_cq_poll(nic); nic 1408 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->ptp_skb) { nic 1409 drivers/net/ethernet/cavium/thunder/nicvf_main.c dev_kfree_skb_any(nic->ptp_skb); nic 1410 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->ptp_skb = NULL; nic 1414 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf = nic; nic 1419 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_config_hw_rx_tstamp(struct nicvf *nic, bool enable) nic 1426 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_send_msg_to_pf(nic, &mbx); nic 1429 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_update_hw_max_frs(struct nicvf *nic, int mtu) nic 1435 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.frs.vf_id = nic->vf_id; nic 1437 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_send_msg_to_pf(nic, &mbx); nic 1442 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = container_of(work_arg, nic 1447 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 1448 drivers/net/ethernet/cavium/thunder/nicvf_main.c queue_delayed_work(nic->nicvf_rx_mode_wq, nic 1449 drivers/net/ethernet/cavium/thunder/nicvf_main.c &nic->link_change_work, 2 * HZ); nic 1455 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1456 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct queue_set *qs = nic->qs; nic 1460 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->nicvf_rx_mode_wq) nic 1461 drivers/net/ethernet/cavium/thunder/nicvf_main.c drain_workqueue(nic->nicvf_rx_mode_wq); nic 1465 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_register_misc_interrupt(nic); nic 1477 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_poll->nicvf = nic; nic 1481 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->napi[qidx] = cq_poll; nic 1485 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->sqs_mode && is_zero_ether_addr(netdev->dev_addr)) { nic 1487 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_hw_set_mac_addr(nic, netdev); nic 1490 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->set_mac_pending) { nic 1491 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->set_mac_pending = false; nic 1492 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_hw_set_mac_addr(nic, netdev); nic 1496 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_init(&nic->qs_err_task, nicvf_handle_qs_err, nic 1497 drivers/net/ethernet/cavium/thunder/nicvf_main.c (unsigned long)nic); nic 1500 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_init(&nic->rbdr_task, nicvf_rbdr_task, nic 1501 drivers/net/ethernet/cavium/thunder/nicvf_main.c (unsigned long)nic); nic 1502 drivers/net/ethernet/cavium/thunder/nicvf_main.c INIT_DELAYED_WORK(&nic->rbdr_work, nicvf_rbdr_work); nic 1505 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->cpi_alg = cpi_alg; nic 1506 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->sqs_mode) nic 1507 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_cpi(nic); nic 1509 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_request_sqs(nic); nic 1510 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->sqs_mode) nic 1511 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_get_primary_vf_struct(nic); nic 1514 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->ptp_clock) nic 1515 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_hw_rx_tstamp(nic, nic->hw_rx_tstamp); nic 1516 drivers/net/ethernet/cavium/thunder/nicvf_main.c atomic_set(&nic->tx_ptp_skbs, 0); nic 1517 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->ptp_skb = NULL; nic 1520 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->sqs_mode) { nic 1521 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_rss_init(nic); nic 1522 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_update_hw_max_frs(nic, netdev->mtu); nic 1528 drivers/net/ethernet/cavium/thunder/nicvf_main.c memset(per_cpu_ptr(nic->drv_stats, cpu), 0, nic 1532 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_register_interrupts(nic); nic 1537 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_init_resources(nic); nic 1544 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_write(nic, NIC_VF_INT, -1); nic 1546 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_QS_ERR, 0); nic 1550 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_CQ, qidx); nic 1554 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_enable_intr(nic, NICVF_INTR_RBDR, qidx); nic 1557 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_cfg_done(nic); nic 1559 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->nicvf_rx_mode_wq) { nic 1560 drivers/net/ethernet/cavium/thunder/nicvf_main.c INIT_DELAYED_WORK(&nic->link_change_work, nic 1562 drivers/net/ethernet/cavium/thunder/nicvf_main.c queue_delayed_work(nic->nicvf_rx_mode_wq, nic 1563 drivers/net/ethernet/cavium/thunder/nicvf_main.c &nic->link_change_work, 0); nic 1568 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_disable_intr(nic, NICVF_INTR_MBOX, 0); nic 1569 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unregister_interrupts(nic); nic 1570 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_kill(&nic->qs_err_task); nic 1571 drivers/net/ethernet/cavium/thunder/nicvf_main.c tasklet_kill(&nic->rbdr_task); nic 1574 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_poll = nic->napi[qidx]; nic 1580 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_free_cq_poll(nic); nic 1586 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1592 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->xdp_prog && new_mtu > MAX_XDP_MTU) { nic 1603 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_update_hw_max_frs(nic, new_mtu)) { nic 1614 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1621 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->pdev->msix_enabled) { nic 1622 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_hw_set_mac_addr(nic, netdev)) nic 1625 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->set_mac_pending = true; nic 1631 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_update_lmac_stats(struct nicvf *nic) nic 1636 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!netif_running(nic->netdev)) nic 1640 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.bgx_stats.vf_id = nic->vf_id; nic 1645 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx)) nic 1656 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx)) nic 1662 drivers/net/ethernet/cavium/thunder/nicvf_main.c void nicvf_update_stats(struct nicvf *nic) nic 1666 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf_hw_stats *stats = &nic->hw_stats; nic 1668 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct queue_set *qs = nic->qs; nic 1671 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_read(nic, NIC_VNIC_RX_STAT_0_13 | (reg << 3)) nic 1673 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_reg_read(nic, NIC_VNIC_TX_STAT_0_4 | (reg << 3)) nic 1702 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->t88 && nic->hw_tso) { nic 1704 drivers/net/ethernet/cavium/thunder/nicvf_main.c drv_stats = per_cpu_ptr(nic->drv_stats, cpu); nic 1720 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_update_rq_stats(nic, qidx); nic 1722 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_update_sq_stats(nic, qidx); nic 1728 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1729 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf_hw_stats *hw_stats = &nic->hw_stats; nic 1731 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_update_stats(nic); nic 1746 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(dev); nic 1748 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_warn(nic, tx_err, dev, "Transmit timed out, resetting\n"); nic 1750 drivers/net/ethernet/cavium/thunder/nicvf_main.c this_cpu_inc(nic->drv_stats->tx_timeout); nic 1751 drivers/net/ethernet/cavium/thunder/nicvf_main.c schedule_work(&nic->reset_task); nic 1756 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic; nic 1758 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = container_of(work, struct nicvf, reset_task); nic 1760 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!netif_running(nic->netdev)) nic 1763 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_stop(nic->netdev); nic 1764 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_open(nic->netdev); nic 1765 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_trans_update(nic->netdev); nic 1768 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_config_loopback(struct nicvf *nic, nic 1774 drivers/net/ethernet/cavium/thunder/nicvf_main.c mbx.lbk.vf_id = nic->vf_id; nic 1777 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_send_msg_to_pf(nic, &mbx); nic 1783 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1786 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_running(netdev) && !nic->loopback_supported) nic 1795 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1799 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_vlan_stripping(nic, features); nic 1802 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_config_loopback(nic, features); nic 1807 drivers/net/ethernet/cavium/thunder/nicvf_main.c static void nicvf_set_xdp_queues(struct nicvf *nic, bool bpf_attached) nic 1813 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->xdp_tx_queues = 0; nic 1815 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->xdp_tx_queues = nic->rx_queues; nic 1820 drivers/net/ethernet/cavium/thunder/nicvf_main.c txq_count = nic->xdp_tx_queues + nic->tx_queues; nic 1821 drivers/net/ethernet/cavium/thunder/nicvf_main.c cq_count = max(nic->rx_queues, txq_count); nic 1823 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_count = roundup(cq_count, MAX_CMP_QUEUES_PER_QS); nic 1824 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_count = (nic->sqs_count / MAX_CMP_QUEUES_PER_QS) - 1; nic 1826 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->sqs_count = 0; nic 1830 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->qs->rq_cnt = min_t(u8, nic->rx_queues, MAX_RCV_QUEUES_PER_QS); nic 1831 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->qs->sq_cnt = min_t(u8, txq_count, MAX_SND_QUEUES_PER_QS); nic 1832 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->qs->cq_cnt = max_t(u8, nic->qs->rq_cnt, nic->qs->sq_cnt); nic 1835 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_real_num_queues(nic->netdev, nic->tx_queues, nic->rx_queues); nic 1838 drivers/net/ethernet/cavium/thunder/nicvf_main.c static int nicvf_xdp_setup(struct nicvf *nic, struct bpf_prog *prog) nic 1840 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct net_device *dev = nic->netdev; nic 1841 drivers/net/ethernet/cavium/thunder/nicvf_main.c bool if_up = netif_running(nic->netdev); nic 1862 drivers/net/ethernet/cavium/thunder/nicvf_main.c if ((nic->rx_queues + nic->tx_queues) > nic->max_queues) { nic 1865 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->max_queues); nic 1870 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_stop(nic->netdev); nic 1872 drivers/net/ethernet/cavium/thunder/nicvf_main.c old_prog = xchg(&nic->xdp_prog, prog); nic 1877 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->xdp_prog) { nic 1879 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->xdp_prog = bpf_prog_add(nic->xdp_prog, nic->rx_queues - 1); nic 1880 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!IS_ERR(nic->xdp_prog)) { nic 1883 drivers/net/ethernet/cavium/thunder/nicvf_main.c ret = PTR_ERR(nic->xdp_prog); nic 1884 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->xdp_prog = NULL; nic 1889 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_set_xdp_queues(nic, bpf_attached); nic 1893 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_open(nic->netdev); nic 1894 drivers/net/ethernet/cavium/thunder/nicvf_main.c netif_trans_update(nic->netdev); nic 1902 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1908 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (pass1_silicon(nic->pdev)) nic 1913 drivers/net/ethernet/cavium/thunder/nicvf_main.c return nicvf_xdp_setup(nic, xdp->prog); nic 1915 drivers/net/ethernet/cavium/thunder/nicvf_main.c xdp->prog_id = nic->xdp_prog ? nic->xdp_prog->aux->id : 0; nic 1925 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 1927 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->ptp_clock) nic 1947 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->hw_rx_tstamp = false; nic 1963 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->hw_rx_tstamp = true; nic 1971 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_config_hw_rx_tstamp(nic, nic->hw_rx_tstamp); nic 1990 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic) nic 2003 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx) < 0) nic 2012 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx) < 0) nic 2022 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nicvf_send_msg_to_pf(nic, &mbx) < 0) nic 2031 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_msg_to_pf(nic, &mbx); nic 2040 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = container_of(vf_work, struct nicvf, rx_mode_work); nic 2050 drivers/net/ethernet/cavium/thunder/nicvf_main.c spin_lock(&nic->rx_mode_wq_lock); nic 2054 drivers/net/ethernet/cavium/thunder/nicvf_main.c spin_unlock(&nic->rx_mode_wq_lock); nic 2056 drivers/net/ethernet/cavium/thunder/nicvf_main.c __nicvf_set_rx_mode_task(mode, mc, nic); nic 2061 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic = netdev_priv(netdev); nic 2092 drivers/net/ethernet/cavium/thunder/nicvf_main.c spin_lock(&nic->rx_mode_wq_lock); nic 2093 drivers/net/ethernet/cavium/thunder/nicvf_main.c kfree(nic->rx_mode_work.mc); nic 2094 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->rx_mode_work.mc = mc_list; nic 2095 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->rx_mode_work.mode = mode; nic 2096 drivers/net/ethernet/cavium/thunder/nicvf_main.c queue_work(nic->nicvf_rx_mode_wq, &nic->rx_mode_work.work); nic 2097 drivers/net/ethernet/cavium/thunder/nicvf_main.c spin_unlock(&nic->rx_mode_wq_lock); nic 2119 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic; nic 2176 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = netdev_priv(netdev); nic 2177 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->netdev = netdev; nic 2178 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pdev = pdev; nic 2179 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->pnicvf = nic; nic 2180 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->max_queues = qcount; nic 2184 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->t88) nic 2185 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->max_queues *= 2; nic 2186 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->ptp_clock = ptp_clock; nic 2189 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); nic 2190 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->reg_base) { nic 2196 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->drv_stats = netdev_alloc_pcpu_stats(struct nicvf_drv_stats); nic 2197 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->drv_stats) { nic 2202 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_set_qset_resources(nic); nic 2207 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_register_misc_interrupt(nic); nic 2211 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_send_vf_struct(nic); nic 2213 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!pass1_silicon(nic->pdev)) nic 2214 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->hw_tso = true; nic 2217 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->iommu_domain = iommu_get_domain_for_dev(dev); nic 2219 drivers/net/ethernet/cavium/thunder/nicvf_main.c pci_read_config_word(nic->pdev, PCI_SUBSYSTEM_ID, &sdevid); nic 2221 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->t88 = true; nic 2224 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->sqs_mode) nic 2227 drivers/net/ethernet/cavium/thunder/nicvf_main.c err = nicvf_set_real_num_queues(netdev, nic->tx_queues, nic->rx_queues); nic 2251 drivers/net/ethernet/cavium/thunder/nicvf_main.c INIT_WORK(&nic->reset_task, nicvf_reset_task); nic 2253 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->nicvf_rx_mode_wq = alloc_ordered_workqueue("nicvf_rx_mode_wq_VF%d", nic 2255 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->vf_id); nic 2256 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (!nic->nicvf_rx_mode_wq) { nic 2262 drivers/net/ethernet/cavium/thunder/nicvf_main.c INIT_WORK(&nic->rx_mode_work.work, nicvf_set_rx_mode_task); nic 2263 drivers/net/ethernet/cavium/thunder/nicvf_main.c spin_lock_init(&nic->rx_mode_wq_lock); nic 2264 drivers/net/ethernet/cavium/thunder/nicvf_main.c mutex_init(&nic->rx_mode_mtx); nic 2272 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->msg_enable = debug; nic 2279 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unregister_interrupts(nic); nic 2282 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->drv_stats) nic 2283 drivers/net/ethernet/cavium/thunder/nicvf_main.c free_percpu(nic->drv_stats); nic 2295 drivers/net/ethernet/cavium/thunder/nicvf_main.c struct nicvf *nic; nic 2301 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic = netdev_priv(netdev); nic 2302 drivers/net/ethernet/cavium/thunder/nicvf_main.c pnetdev = nic->pnicvf->netdev; nic 2309 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->nicvf_rx_mode_wq) { nic 2310 drivers/net/ethernet/cavium/thunder/nicvf_main.c destroy_workqueue(nic->nicvf_rx_mode_wq); nic 2311 drivers/net/ethernet/cavium/thunder/nicvf_main.c nic->nicvf_rx_mode_wq = NULL; nic 2313 drivers/net/ethernet/cavium/thunder/nicvf_main.c nicvf_unregister_interrupts(nic); nic 2315 drivers/net/ethernet/cavium/thunder/nicvf_main.c if (nic->drv_stats) nic 2316 drivers/net/ethernet/cavium/thunder/nicvf_main.c free_percpu(nic->drv_stats); nic 2317 drivers/net/ethernet/cavium/thunder/nicvf_main.c cavium_ptp_put(nic->ptp_clock); nic 21 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_get_page(struct nicvf *nic) nic 23 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->rb_pageref || !nic->rb_page) nic 26 drivers/net/ethernet/cavium/thunder/nicvf_queues.c page_ref_add(nic->rb_page, nic->rb_pageref); nic 27 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_pageref = 0; nic 31 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_poll_reg(struct nicvf *nic, int qidx, nic 42 drivers/net/ethernet/cavium/thunder/nicvf_queues.c reg_val = nicvf_queue_reg_read(nic, reg, qidx); nic 48 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_err(nic->netdev, "Poll on reg 0x%llx failed\n", reg); nic 53 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_alloc_q_desc_mem(struct nicvf *nic, struct q_desc_mem *dmem, nic 59 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dmem->unalign_base = dma_alloc_coherent(&nic->pdev->dev, dmem->size, nic 71 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_free_q_desc_mem(struct nicvf *nic, struct q_desc_mem *dmem) nic 76 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_free_coherent(&nic->pdev->dev, dmem->size, nic 92 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static inline struct pgcache *nicvf_alloc_page(struct nicvf *nic, nic 125 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->pnicvf->drv_stats->page_alloc); nic 130 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page = page; nic 175 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static inline int nicvf_alloc_rcv_buffer(struct nicvf *nic, struct rbdr *rbdr, nic 183 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!rbdr->is_xdp && nic->rb_page && nic 184 drivers/net/ethernet/cavium/thunder/nicvf_queues.c ((nic->rb_page_offset + buf_len) <= PAGE_SIZE)) { nic 185 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_pageref++; nic 189 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_get_page(nic); nic 190 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page = NULL; nic 193 drivers/net/ethernet/cavium/thunder/nicvf_queues.c pgcache = nicvf_alloc_page(nic, rbdr, gfp); nic 194 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!pgcache && !nic->rb_page) { nic 195 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->pnicvf->drv_stats->rcv_buffer_alloc_failures); nic 199 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page_offset = 0; nic 207 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page = pgcache->page; nic 213 drivers/net/ethernet/cavium/thunder/nicvf_queues.c *rbuf = (u64)dma_map_page_attrs(&nic->pdev->dev, nic->rb_page, nic 214 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page_offset, buf_len, nic 217 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (dma_mapping_error(&nic->pdev->dev, (dma_addr_t)*rbuf)) { nic 218 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->rb_page_offset) nic 219 drivers/net/ethernet/cavium/thunder/nicvf_queues.c __free_pages(nic->rb_page, 0); nic 220 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page = NULL; nic 225 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page_offset += buf_len; nic 232 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static struct sk_buff *nicvf_rb_ptr_to_skb(struct nicvf *nic, nic 252 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_init_rbdr(struct nicvf *nic, struct rbdr *rbdr, nic 260 drivers/net/ethernet/cavium/thunder/nicvf_queues.c err = nicvf_alloc_q_desc_mem(nic, &rbdr->dmem, ring_len, nic 283 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->pnicvf->xdp_prog) { nic 298 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_page = NULL; nic 300 drivers/net/ethernet/cavium/thunder/nicvf_queues.c err = nicvf_alloc_rcv_buffer(nic, rbdr, GFP_KERNEL, nic 312 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_get_page(nic); nic 318 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_free_rbdr(struct nicvf *nic, struct rbdr *rbdr) nic 339 drivers/net/ethernet/cavium/thunder/nicvf_queues.c phys_addr = nicvf_iova_to_phys(nic, buf_addr); nic 340 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_unmap_page_attrs(&nic->pdev->dev, buf_addr, RCV_FRAG_LEN, nic 350 drivers/net/ethernet/cavium/thunder/nicvf_queues.c phys_addr = nicvf_iova_to_phys(nic, buf_addr); nic 351 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_unmap_page_attrs(&nic->pdev->dev, buf_addr, RCV_FRAG_LEN, nic 374 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_q_desc_mem(nic, &rbdr->dmem); nic 379 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_refill_rbdr(struct nicvf *nic, gfp_t gfp) nic 381 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *qs = nic->qs; nic 400 drivers/net/ethernet/cavium/thunder/nicvf_queues.c qcount = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_STATUS0, rbdr_idx); nic 412 drivers/net/ethernet/cavium/thunder/nicvf_queues.c tail = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_TAIL, rbdr_idx) >> 3; nic 417 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_alloc_rcv_buffer(nic, rbdr, gfp, RCV_FRAG_LEN, &rbuf)) nic 426 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_get_page(nic); nic 433 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_alloc_fail = true; nic 435 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_alloc_fail = false; nic 438 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_DOOR, nic 442 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->rb_alloc_fail && rbdr->enable && nic 443 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netif_running(nic->pnicvf->netdev)) nic 444 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_enable_intr(nic, NICVF_INTR_RBDR, rbdr_idx); nic 453 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct nicvf *nic = container_of(work, struct nicvf, rbdr_work.work); nic 455 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_refill_rbdr(nic, GFP_KERNEL); nic 456 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->rb_alloc_fail) nic 457 drivers/net/ethernet/cavium/thunder/nicvf_queues.c schedule_delayed_work(&nic->rbdr_work, msecs_to_jiffies(10)); nic 459 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_work_scheduled = false; nic 465 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct nicvf *nic = (struct nicvf *)data; nic 467 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_refill_rbdr(nic, GFP_ATOMIC); nic 468 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->rb_alloc_fail) { nic 469 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rb_work_scheduled = true; nic 470 drivers/net/ethernet/cavium/thunder/nicvf_queues.c schedule_delayed_work(&nic->rbdr_work, msecs_to_jiffies(10)); nic 475 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_init_cmp_queue(struct nicvf *nic, nic 480 drivers/net/ethernet/cavium/thunder/nicvf_queues.c err = nicvf_alloc_q_desc_mem(nic, &cq->dmem, q_len, CMP_QUEUE_DESC_SIZE, nic 486 drivers/net/ethernet/cavium/thunder/nicvf_queues.c cq->thresh = pass1_silicon(nic->pdev) ? 0 : CMP_QUEUE_CQE_THRESH; nic 487 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->cq_coalesce_usecs = (CMP_QUEUE_TIMER_THRESH * 0.05) - 1; nic 492 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_free_cmp_queue(struct nicvf *nic, struct cmp_queue *cq) nic 499 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_q_desc_mem(nic, &cq->dmem); nic 503 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_init_snd_queue(struct nicvf *nic, nic 508 drivers/net/ethernet/cavium/thunder/nicvf_queues.c err = nicvf_alloc_q_desc_mem(nic, &sq->dmem, q_len, SND_QUEUE_DESC_SIZE, nic 523 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->sqs_mode) nic 524 drivers/net/ethernet/cavium/thunder/nicvf_queues.c qidx += ((nic->sqs_id + 1) * MAX_SND_QUEUES_PER_QS); nic 525 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (qidx < nic->pnicvf->xdp_tx_queues) { nic 542 drivers/net/ethernet/cavium/thunder/nicvf_queues.c sq->tso_hdrs = dma_alloc_coherent(&nic->pdev->dev, nic 553 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_unmap_sndq_buffers(struct nicvf *nic, struct snd_queue *sq, nic 565 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_unmap_page_attrs(&nic->pdev->dev, gather->addr, nic 571 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_free_snd_queue(struct nicvf *nic, struct snd_queue *sq) nic 584 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_free_coherent(&nic->pdev->dev, nic 609 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_unmap_sndq_buffers(nic, sq, hdr->rsvd2, nic 612 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_unmap_sndq_buffers(nic, sq, sq->head, nic 623 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_q_desc_mem(nic, &sq->dmem); nic 626 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_reclaim_snd_queue(struct nicvf *nic, nic 630 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, 0); nic 632 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_poll_reg(nic, qidx, NIC_QSET_SQ_0_7_STATUS, 21, 1, 0x01)) nic 635 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, NICVF_SQ_RESET); nic 638 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_reclaim_rcv_queue(struct nicvf *nic, nic 645 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 648 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_reclaim_cmp_queue(struct nicvf *nic, nic 652 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG2, qidx, 0); nic 654 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG, qidx, 0); nic 656 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG, qidx, NICVF_CQ_RESET); nic 659 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_reclaim_rbdr(struct nicvf *nic, nic 666 drivers/net/ethernet/cavium/thunder/nicvf_queues.c rbdr->head = nicvf_queue_reg_read(nic, nic 669 drivers/net/ethernet/cavium/thunder/nicvf_queues.c rbdr->tail = nicvf_queue_reg_read(nic, nic 676 drivers/net/ethernet/cavium/thunder/nicvf_queues.c fifo_state = nicvf_queue_reg_read(nic, NIC_QSET_RBDR_0_1_STATUS0, qidx); nic 678 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_CFG, nic 682 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_CFG, qidx, 0); nic 683 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_poll_reg(nic, qidx, NIC_QSET_RBDR_0_1_STATUS0, 62, 2, 0x00)) nic 686 drivers/net/ethernet/cavium/thunder/nicvf_queues.c tmp = nicvf_queue_reg_read(nic, nic 694 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_err(nic->netdev, nic 699 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_CFG, nic 702 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_poll_reg(nic, qidx, NIC_QSET_RBDR_0_1_STATUS0, 62, 2, 0x02)) nic 704 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_CFG, qidx, 0x00); nic 705 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_poll_reg(nic, qidx, NIC_QSET_RBDR_0_1_STATUS0, 62, 2, 0x00)) nic 709 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_config_vlan_stripping(struct nicvf *nic, netdev_features_t features) nic 714 drivers/net/ethernet/cavium/thunder/nicvf_queues.c rq_cfg = nicvf_queue_reg_read(nic, NIC_QSET_RQ_GEN_CFG, 0); nic 721 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RQ_GEN_CFG, 0, rq_cfg); nic 724 drivers/net/ethernet/cavium/thunder/nicvf_queues.c for (sqs = 0; sqs < nic->sqs_count; sqs++) nic 725 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->snicvf[sqs]) nic 726 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic->snicvf[sqs], nic 730 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_reset_rcv_queue_stats(struct nicvf *nic) nic 740 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 744 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_rcv_queue_config(struct nicvf *nic, struct queue_set *qs, nic 755 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RQ_0_7_CFG, qidx, 0); nic 758 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reclaim_rcv_queue(nic, qs, qidx); nic 773 drivers/net/ethernet/cavium/thunder/nicvf_queues.c WARN_ON(xdp_rxq_info_reg(&rq->xdp_rxq, nic->netdev, qidx) < 0); nic 783 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 789 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 798 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 800 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->sqs_mode && (qidx == 0)) { nic 804 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RQ_GEN_CFG, 0, nic 806 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_config_vlan_stripping(nic, nic->netdev->features); nic 813 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RQ_0_7_CFG, qidx, *(u64 *)&rq_cfg); nic 817 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_cmp_queue_config(struct nicvf *nic, struct queue_set *qs, nic 827 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reclaim_cmp_queue(nic, qs, qidx); nic 832 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG, qidx, NICVF_CQ_RESET); nic 839 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_BASE, nic 849 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG, qidx, *(u64 *)&cq_cfg); nic 852 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_THRESH, qidx, cq->thresh); nic 853 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_CQ_0_7_CFG2, nic 858 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_snd_queue_config(struct nicvf *nic, struct queue_set *qs, nic 869 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reclaim_snd_queue(nic, qs, qidx); nic 874 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, NICVF_SQ_RESET); nic 883 drivers/net/ethernet/cavium/thunder/nicvf_queues.c mbx.sq.sqs_mode = nic->sqs_mode; nic 885 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 888 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_BASE, nic 902 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, *(u64 *)&sq_cfg); nic 905 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_THRESH, qidx, sq->thresh); nic 910 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netif_set_xps_queue(nic->netdev, nic 916 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_rbdr_config(struct nicvf *nic, struct queue_set *qs, nic 923 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reclaim_rbdr(nic, rbdr, qidx); nic 928 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_BASE, nic 940 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_CFG, nic 944 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_DOOR, nic 948 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_RBDR_0_1_THRESH, nic 953 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_qset_config(struct nicvf *nic, bool enable) nic 956 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *qs = nic->qs; nic 960 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_warn(nic->netdev, nic 966 drivers/net/ethernet/cavium/thunder/nicvf_queues.c qs->vnic_id = nic->vf_id; nic 971 drivers/net/ethernet/cavium/thunder/nicvf_queues.c mbx.qs.sqs_count = nic->sqs_count; nic 982 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->ptp_clock) nic 985 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_send_msg_to_pf(nic, &mbx); nic 988 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_free_resources(struct nicvf *nic) nic 991 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *qs = nic->qs; nic 995 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_rbdr(nic, &qs->rbdr[qidx]); nic 999 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_cmp_queue(nic, &qs->cq[qidx]); nic 1003 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_snd_queue(nic, &qs->sq[qidx]); nic 1006 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_alloc_resources(struct nicvf *nic) nic 1009 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *qs = nic->qs; nic 1013 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_init_rbdr(nic, &qs->rbdr[qidx], qs->rbdr_len, nic 1020 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_init_snd_queue(nic, &qs->sq[qidx], qs->sq_len, qidx)) nic 1026 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_init_cmp_queue(nic, &qs->cq[qidx], qs->cq_len)) nic 1032 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_resources(nic); nic 1036 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_set_qset_resources(struct nicvf *nic) nic 1040 drivers/net/ethernet/cavium/thunder/nicvf_queues.c qs = devm_kzalloc(&nic->pdev->dev, sizeof(*qs), GFP_KERNEL); nic 1043 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->qs = qs; nic 1056 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->rx_queues = qs->rq_cnt; nic 1057 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->tx_queues = qs->sq_cnt; nic 1058 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic->xdp_tx_queues = 0; nic 1063 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_config_data_transfer(struct nicvf *nic, bool enable) nic 1066 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *qs = nic->qs; nic 1067 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct queue_set *pqs = nic->pnicvf->qs; nic 1077 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->sqs_mode && pqs) { nic 1083 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nicvf_alloc_resources(nic)) nic 1087 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_snd_queue_config(nic, qs, qidx, enable); nic 1089 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_cmp_queue_config(nic, qs, qidx, enable); nic 1091 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_rbdr_config(nic, qs, qidx, enable); nic 1093 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_rcv_queue_config(nic, qs, qidx, enable); nic 1096 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_rcv_queue_config(nic, qs, qidx, disable); nic 1098 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_rbdr_config(nic, qs, qidx, disable); nic 1100 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_snd_queue_config(nic, qs, qidx, disable); nic 1102 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_cmp_queue_config(nic, qs, qidx, disable); nic 1104 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_free_resources(nic); nic 1110 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reset_rcv_queue_stats(nic); nic 1159 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_sq_enable(struct nicvf *nic, struct snd_queue *sq, int qidx) nic 1163 drivers/net/ethernet/cavium/thunder/nicvf_queues.c sq_cfg = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_CFG, qidx); nic 1165 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, sq_cfg); nic 1167 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_DOOR, qidx, 0); nic 1170 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_sq_disable(struct nicvf *nic, int qidx) nic 1174 drivers/net/ethernet/cavium/thunder/nicvf_queues.c sq_cfg = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_CFG, qidx); nic 1176 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_CFG, qidx, sq_cfg); nic 1184 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct nicvf *nic = netdev_priv(netdev); nic 1187 drivers/net/ethernet/cavium/thunder/nicvf_queues.c head = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_HEAD, qidx) >> 4; nic 1188 drivers/net/ethernet/cavium/thunder/nicvf_queues.c tail = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_TAIL, qidx) >> 4; nic 1206 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_xdp_sq_doorbell(struct nicvf *nic, nic 1216 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_DOOR, nic 1236 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_xdp_sq_append_pkt(struct nicvf *nic, struct snd_queue *sq, nic 1307 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_sq_subdesc_required(struct nicvf *nic, struct sk_buff *skb) nic 1311 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (skb_shinfo(skb)->gso_size && !nic->hw_tso) { nic 1317 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->t88 && nic->hw_tso && skb_shinfo(skb)->gso_size) nic 1330 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry, nic 1346 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->t88 && nic->hw_tso && skb_shinfo(skb)->gso_size) { nic 1383 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->hw_tso && skb_shinfo(skb)->gso_size) { nic 1389 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->pnicvf->drv_stats->tx_tso); nic 1403 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!atomic_add_unless(&nic->pnicvf->tx_ptp_skbs, 1, 1)) nic 1465 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static inline void nicvf_sq_doorbell(struct nicvf *nic, struct sk_buff *skb, nic 1470 drivers/net/ethernet/cavium/thunder/nicvf_queues.c txq = netdev_get_tx_queue(nic->pnicvf->netdev, nic 1479 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_DOOR, nic 1486 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static int nicvf_sq_append_tso(struct nicvf *nic, struct snd_queue *sq, nic 1532 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_sq_add_hdr_subdesc(nic, sq, hdr_qentry, nic 1542 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_sq_doorbell(nic, skb, sq_num, desc_cnt); nic 1544 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->pnicvf->drv_stats->tx_tso); nic 1549 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_sq_append_skb(struct nicvf *nic, struct snd_queue *sq, nic 1557 drivers/net/ethernet/cavium/thunder/nicvf_queues.c subdesc_cnt = nicvf_sq_subdesc_required(nic, skb); nic 1564 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (skb_shinfo(skb)->gso_size && !nic->hw_tso) nic 1565 drivers/net/ethernet/cavium/thunder/nicvf_queues.c return nicvf_sq_append_tso(nic, sq, sq_num, qentry, skb); nic 1568 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_sq_add_hdr_subdesc(nic, sq, qentry, subdesc_cnt - 1, nic 1576 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_addr = dma_map_page_attrs(&nic->pdev->dev, virt_to_page(skb->data), nic 1579 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (dma_mapping_error(&nic->pdev->dev, dma_addr)) { nic 1595 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_addr = dma_map_page_attrs(&nic->pdev->dev, nic 1600 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (dma_mapping_error(&nic->pdev->dev, dma_addr)) { nic 1604 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_unmap_sndq_buffers(nic, sq, hdr_sqe, i); nic 1612 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (nic->t88 && skb_shinfo(skb)->gso_size) { nic 1617 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_sq_doorbell(nic, skb, sq_num, subdesc_cnt); nic 1623 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nic = nic->pnicvf; nic 1624 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_dbg(nic->netdev, "Not enough SQ descriptors to xmit pkt\n"); nic 1637 drivers/net/ethernet/cavium/thunder/nicvf_queues.c static void nicvf_unmap_rcv_buffer(struct nicvf *nic, u64 dma_addr, nic 1657 drivers/net/ethernet/cavium/thunder/nicvf_queues.c dma_unmap_page_attrs(&nic->pdev->dev, dma_addr, len, nic 1662 drivers/net/ethernet/cavium/thunder/nicvf_queues.c struct sk_buff *nicvf_get_rcv_skb(struct nicvf *nic, nic 1682 drivers/net/ethernet/cavium/thunder/nicvf_queues.c if (!nic->hw_tso) nic 1689 drivers/net/ethernet/cavium/thunder/nicvf_queues.c phys_addr = nicvf_iova_to_phys(nic, *rb_ptrs); nic 1698 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_unmap_rcv_buffer(nic, nic 1701 drivers/net/ethernet/cavium/thunder/nicvf_queues.c skb = nicvf_rb_ptr_to_skb(nic, nic 1710 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_unmap_rcv_buffer(nic, *rb_ptrs, phys_addr, xdp); nic 1756 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_enable_intr(struct nicvf *nic, int int_type, int q_idx) nic 1761 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_dbg(nic->netdev, nic 1765 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_write(nic, NIC_VF_ENA_W1S, nic 1766 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_read(nic, NIC_VF_ENA_W1S) | mask); nic 1770 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_disable_intr(struct nicvf *nic, int int_type, int q_idx) nic 1775 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_dbg(nic->netdev, nic 1780 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_write(nic, NIC_VF_ENA_W1C, mask); nic 1784 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_clear_intr(struct nicvf *nic, int int_type, int q_idx) nic 1789 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_dbg(nic->netdev, nic 1794 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_write(nic, NIC_VF_INT, mask); nic 1798 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_is_intr_enabled(struct nicvf *nic, int int_type, int q_idx) nic 1803 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netdev_dbg(nic->netdev, nic 1808 drivers/net/ethernet/cavium/thunder/nicvf_queues.c return mask & nicvf_reg_read(nic, NIC_VF_ENA_W1S); nic 1811 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_update_rq_stats(struct nicvf *nic, int rq_idx) nic 1816 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_read(nic, NIC_QSET_RQ_0_7_STAT_0_1 |\ nic 1819 drivers/net/ethernet/cavium/thunder/nicvf_queues.c rq = &nic->qs->rq[rq_idx]; nic 1824 drivers/net/ethernet/cavium/thunder/nicvf_queues.c void nicvf_update_sq_stats(struct nicvf *nic, int sq_idx) nic 1829 drivers/net/ethernet/cavium/thunder/nicvf_queues.c nicvf_reg_read(nic, NIC_QSET_SQ_0_7_STAT_0_1 |\ nic 1832 drivers/net/ethernet/cavium/thunder/nicvf_queues.c sq = &nic->qs->sq[sq_idx]; nic 1838 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_check_cqe_rx_errs(struct nicvf *nic, struct cqe_rx_t *cqe_rx) nic 1840 drivers/net/ethernet/cavium/thunder/nicvf_queues.c netif_err(nic, rx_err, nic->netdev, nic 1846 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_bgx_truncated_pkts); nic 1849 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_jabber_errs); nic 1852 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_fcs_errs); nic 1855 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_bgx_errs); nic 1858 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_prel2_errs); nic 1861 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l2_hdr_malformed); nic 1864 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_oversize); nic 1867 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_undersize); nic 1870 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l2_len_mismatch); nic 1873 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l2_pclp); nic 1876 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_ip_ver_errs); nic 1879 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_ip_csum_errs); nic 1882 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_ip_hdr_malformed); nic 1885 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_ip_payload_malformed); nic 1888 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_ip_ttl_errs); nic 1891 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l3_pclp); nic 1894 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l4_malformed); nic 1897 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l4_csum_errs); nic 1900 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_udp_len_errs); nic 1903 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l4_port_errs); nic 1906 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_tcp_flag_errs); nic 1909 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_tcp_offset_errs); nic 1912 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_l4_pclp); nic 1915 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->rx_truncated_pkts); nic 1923 drivers/net/ethernet/cavium/thunder/nicvf_queues.c int nicvf_check_cqe_tx_errs(struct nicvf *nic, struct cqe_send_t *cqe_tx) nic 1927 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_desc_fault); nic 1930 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_hdr_cons_err); nic 1933 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_subdesc_err); nic 1936 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_max_size_exceeded); nic 1939 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_imm_size_oflow); nic 1942 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_data_seq_err); nic 1945 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_mem_seq_err); nic 1948 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_lock_viol); nic 1951 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_data_fault); nic 1954 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_tstmp_conflict); nic 1957 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_tstmp_timeout); nic 1960 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_mem_fault); nic 1963 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_csum_overlap); nic 1966 drivers/net/ethernet/cavium/thunder/nicvf_queues.c this_cpu_inc(nic->drv_stats->tx_csum_overflow); nic 320 drivers/net/ethernet/cavium/thunder/nicvf_queues.h static inline u64 nicvf_iova_to_phys(struct nicvf *nic, dma_addr_t dma_addr) nic 323 drivers/net/ethernet/cavium/thunder/nicvf_queues.h if (nic->iommu_domain) nic 324 drivers/net/ethernet/cavium/thunder/nicvf_queues.h return iommu_iova_to_phys(nic->iommu_domain, dma_addr); nic 328 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_unmap_sndq_buffers(struct nicvf *nic, struct snd_queue *sq, nic 330 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_config_vlan_stripping(struct nicvf *nic, nic 332 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_set_qset_resources(struct nicvf *nic); nic 333 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_config_data_transfer(struct nicvf *nic, bool enable); nic 334 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_qset_config(struct nicvf *nic, bool enable); nic 335 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_cmp_queue_config(struct nicvf *nic, struct queue_set *qs, nic 338 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_sq_enable(struct nicvf *nic, struct snd_queue *sq, int qidx); nic 339 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_sq_disable(struct nicvf *nic, int qidx); nic 343 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_sq_append_skb(struct nicvf *nic, struct snd_queue *sq, nic 345 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_xdp_sq_append_pkt(struct nicvf *nic, struct snd_queue *sq, nic 347 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_xdp_sq_doorbell(struct nicvf *nic, struct snd_queue *sq, int sq_num); nic 349 drivers/net/ethernet/cavium/thunder/nicvf_queues.h struct sk_buff *nicvf_get_rcv_skb(struct nicvf *nic, nic 354 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_enable_intr(struct nicvf *nic, int int_type, int q_idx); nic 355 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_disable_intr(struct nicvf *nic, int int_type, int q_idx); nic 356 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_clear_intr(struct nicvf *nic, int int_type, int q_idx); nic 357 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_is_intr_enabled(struct nicvf *nic, int int_type, int q_idx); nic 360 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_reg_write(struct nicvf *nic, u64 offset, u64 val); nic 361 drivers/net/ethernet/cavium/thunder/nicvf_queues.h u64 nicvf_reg_read(struct nicvf *nic, u64 offset); nic 362 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_qset_reg_write(struct nicvf *nic, u64 offset, u64 val); nic 363 drivers/net/ethernet/cavium/thunder/nicvf_queues.h u64 nicvf_qset_reg_read(struct nicvf *nic, u64 offset); nic 364 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_queue_reg_write(struct nicvf *nic, u64 offset, nic 366 drivers/net/ethernet/cavium/thunder/nicvf_queues.h u64 nicvf_queue_reg_read(struct nicvf *nic, nic 370 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_update_rq_stats(struct nicvf *nic, int rq_idx); nic 371 drivers/net/ethernet/cavium/thunder/nicvf_queues.h void nicvf_update_sq_stats(struct nicvf *nic, int sq_idx); nic 372 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_check_cqe_rx_errs(struct nicvf *nic, struct cqe_rx_t *cqe_rx); nic 373 drivers/net/ethernet/cavium/thunder/nicvf_queues.h int nicvf_check_cqe_tx_errs(struct nicvf *nic, struct cqe_send_t *cqe_tx); nic 3450 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c if (hdr1->chip == hdr2->chip && SAME_INTF(nic) && SAME_INTF(vnic) && nic 4253 drivers/net/ethernet/emulex/benet/be_cmds.c struct be_nic_res_desc *nic; nic 4259 drivers/net/ethernet/emulex/benet/be_cmds.c nic = (struct be_nic_res_desc *)hdr; nic 4262 drivers/net/ethernet/emulex/benet/be_cmds.c nic->pf_num == pf_num) && nic 4263 drivers/net/ethernet/emulex/benet/be_cmds.c (!get_vft || nic->flags & BIT(VFT_SHIFT))) nic 4264 drivers/net/ethernet/emulex/benet/be_cmds.c return nic; nic 4441 drivers/net/ethernet/emulex/benet/be_cmds.c struct be_nic_res_desc *nic; nic 4487 drivers/net/ethernet/emulex/benet/be_cmds.c nic = be_get_func_nic_desc(resp->func_param, desc_count, nic 4489 drivers/net/ethernet/emulex/benet/be_cmds.c if (nic->link_param == adapter->port_num) { nic 4509 drivers/net/ethernet/emulex/benet/be_cmds.c nic = be_get_func_nic_desc(resp->func_param, desc_count, nic 4511 drivers/net/ethernet/emulex/benet/be_cmds.c if (nic) nic 4512 drivers/net/ethernet/emulex/benet/be_cmds.c be_copy_nic_desc(res, nic); nic 4559 drivers/net/ethernet/emulex/benet/be_cmds.c static void be_reset_nic_desc(struct be_nic_res_desc *nic) nic 4561 drivers/net/ethernet/emulex/benet/be_cmds.c memset(nic, 0, sizeof(*nic)); nic 4562 drivers/net/ethernet/emulex/benet/be_cmds.c nic->unicast_mac_count = 0xFFFF; nic 4563 drivers/net/ethernet/emulex/benet/be_cmds.c nic->mcc_count = 0xFFFF; nic 4564 drivers/net/ethernet/emulex/benet/be_cmds.c nic->vlan_count = 0xFFFF; nic 4565 drivers/net/ethernet/emulex/benet/be_cmds.c nic->mcast_mac_count = 0xFFFF; nic 4566 drivers/net/ethernet/emulex/benet/be_cmds.c nic->txq_count = 0xFFFF; nic 4567 drivers/net/ethernet/emulex/benet/be_cmds.c nic->rq_count = 0xFFFF; nic 4568 drivers/net/ethernet/emulex/benet/be_cmds.c nic->rssq_count = 0xFFFF; nic 4569 drivers/net/ethernet/emulex/benet/be_cmds.c nic->lro_count = 0xFFFF; nic 4570 drivers/net/ethernet/emulex/benet/be_cmds.c nic->cq_count = 0xFFFF; nic 4571 drivers/net/ethernet/emulex/benet/be_cmds.c nic->toe_conn_count = 0xFFFF; nic 4572 drivers/net/ethernet/emulex/benet/be_cmds.c nic->eq_count = 0xFFFF; nic 4573 drivers/net/ethernet/emulex/benet/be_cmds.c nic->iface_count = 0xFFFF; nic 4574 drivers/net/ethernet/emulex/benet/be_cmds.c nic->link_param = 0xFF; nic 4575 drivers/net/ethernet/emulex/benet/be_cmds.c nic->channel_id_param = cpu_to_le16(0xF000); nic 4576 drivers/net/ethernet/emulex/benet/be_cmds.c nic->acpi_params = 0xFF; nic 4577 drivers/net/ethernet/emulex/benet/be_cmds.c nic->wol_param = 0x0F; nic 4578 drivers/net/ethernet/emulex/benet/be_cmds.c nic->tunnel_iface_count = 0xFFFF; nic 4579 drivers/net/ethernet/emulex/benet/be_cmds.c nic->direct_tenant_iface_count = 0xFFFF; nic 4580 drivers/net/ethernet/emulex/benet/be_cmds.c nic->bw_min = 0xFFFFFFFF; nic 4581 drivers/net/ethernet/emulex/benet/be_cmds.c nic->bw_max = 0xFFFFFFFF; nic 187 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c handle = &vport[i].nic; nic 465 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c kinfo = &vport->nic.kinfo; nic 677 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c handle = &hdev->vport[0].nic; nic 1502 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 1509 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c hdev->htqp[i].q.handle = &vport->nic; nic 1533 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *nic = &vport->nic; nic 1534 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_knic_private_info *kinfo = &nic->kinfo; nic 1558 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *nic = &vport->nic; nic 1562 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c kinfo = &nic->kinfo; nic 1600 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *nic = &vport->nic; nic 1604 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nic->pdev = hdev->pdev; nic 1605 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nic->ae_algo = &ae_algo; nic 1606 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nic->numa_node_mask = hdev->numa_node_mask; nic 2278 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *nic = &vport->nic; nic 2288 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c roce->rinfo.netdev = nic->kinfo.netdev; nic 2291 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c roce->pdev = nic->pdev; nic 2292 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c roce->ae_algo = nic->ae_algo; nic 2293 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c roce->numa_node_mask = nic->numa_node_mask; nic 2723 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c handle = &hdev->vport[i].nic; nic 3118 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *handle = &hdev->vport[i].nic; nic 3312 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c client->ops->process_hw_error(&hdev->vport[i].nic, type); nic 3353 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *handle = &hdev->vport[0].nic; nic 3778 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c handle = &hdev->vport[0].nic; nic 3926 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c return container_of(handle, struct hclge_vport, nic); nic 3930 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c return container_of(handle, struct hclge_vport, nic); nic 4117 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.kinfo.rss_type = PKT_HASH_TYPE_L4; nic 4120 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.kinfo.rss_type = PKT_HASH_TYPE_L3; nic 4122 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.kinfo.rss_type = PKT_HASH_TYPE_NONE; nic 6151 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *handle = &hdev->vport[0].nic; nic 6597 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c kinfo = &vport->nic.kinfo; nic 6631 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c kinfo = &vport->nic.kinfo; nic 7944 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *handle = &hdev->vport[0].nic; nic 8186 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_handle *nic = &vport->nic; nic 8227 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nic->port_base_vlan_state = HNAE3_PORT_BASE_VLAN_DISABLE; nic 8229 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nic->port_base_vlan_state = HNAE3_PORT_BASE_VLAN_ENABLE; nic 8569 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c queue_gid = hclge_covert_handle_qid_global(&vport->nic, queue_id); nic 8850 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_client *client = vport->nic.client; nic 8856 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c ret = client->ops->init_instance(&vport->nic); nic 8877 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (netif_msg_drv(&hdev->vport->nic)) nic 8887 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c client->ops->uninit_instance(&vport->nic, 0); nic 8957 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.client = client; nic 8987 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.client = NULL; nic 9021 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c client->ops->uninit_instance(&vport->nic, 0); nic 9023 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c vport->nic.client = NULL; nic 9555 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 914 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h struct hnae3_handle nic; nic 150 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c hclge_get_queue_id(vport->nic.kinfo.tqp[req->msg[4]]); nic 167 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c hclge_get_queue_id(vport->nic.kinfo.tqp nic 318 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c struct hnae3_handle *handle = &vport->nic; nic 328 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c struct hnae3_handle *handle = &vport->nic; nic 370 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 394 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c memcpy(&resp_data[2], &vport->nic.kinfo.rss_size, sizeof(u16)); nic 524 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c qid_in_pf = hclge_covert_handle_qid_global(&vport->nic, queue_id); nic 203 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c struct net_device *netdev = hdev->vport[0].nic.netdev; nic 263 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c struct net_device *netdev = hdev->vport[0].nic.netdev; nic 516 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 753 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 785 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c &vport[k].nic.kinfo; nic 887 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 1005 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 1135 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; nic 1369 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c kinfo = &vport[k].nic.kinfo; nic 91 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c return container_of(handle, struct hclgevf_dev, nic); nic 95 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c return container_of(handle, struct hclgevf_dev, nic); nic 251 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 265 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->port_base_vlan_state = resp_msg; nic 384 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 389 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c kinfo = &nic->kinfo; nic 409 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c hdev->htqp[i].q.handle = &hdev->nic; nic 439 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *handle = &hdev->nic; nic 476 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 479 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->ae_algo = &ae_algovf; nic 480 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->pdev = hdev->pdev; nic 481 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->numa_node_mask = hdev->numa_node_mask; nic 482 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->flags |= HNAE3_SUPPORT_VF; nic 1293 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *handle = &hdev->nic; nic 1353 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *handle = &hdev->nic; nic 1870 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c handle = &hdev->nic; nic 2025 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 2035 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c roce->rinfo.netdev = nic->kinfo.netdev; nic 2038 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c roce->pdev = nic->pdev; nic 2039 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c roce->ae_algo = nic->ae_algo; nic 2040 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c roce->numa_node_mask = nic->numa_node_mask; nic 2074 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c rss_cfg->rss_size = hdev->nic.kinfo.rss_size; nic 2122 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c return hclgevf_set_vlan_filter(&hdev->nic, htons(ETH_P_8021Q), 0, nic 2368 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c ret = client->ops->init_instance(&hdev->nic); nic 2375 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (netif_msg_drv(&hdev->nic)) nic 2413 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c hdev->nic.client = client; nic 2444 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c hdev->nic.client = NULL; nic 2469 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c client->ops->uninit_instance(&hdev->nic, 0); nic 2471 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c hdev->nic.client = NULL; nic 2824 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 2825 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_knic_private_info *kinfo = &nic->kinfo; nic 3079 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct hnae3_handle *nic = &hdev->nic; nic 3092 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->port_base_vlan_state = HNAE3_PORT_BASE_VLAN_DISABLE; nic 3094 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nic->port_base_vlan_state = HNAE3_PORT_BASE_VLAN_ENABLE; nic 296 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h struct hnae3_handle nic; nic 545 drivers/net/ethernet/intel/e100.c u16 (*mdio_ctrl)(struct nic *nic, u32 addr, u32 dir, u32 reg, u16 data); nic 609 drivers/net/ethernet/intel/e100.c static inline void e100_write_flush(struct nic *nic) nic 613 drivers/net/ethernet/intel/e100.c (void)ioread8(&nic->csr->scb.status); nic 616 drivers/net/ethernet/intel/e100.c static void e100_enable_irq(struct nic *nic) nic 620 drivers/net/ethernet/intel/e100.c spin_lock_irqsave(&nic->cmd_lock, flags); nic 621 drivers/net/ethernet/intel/e100.c iowrite8(irq_mask_none, &nic->csr->scb.cmd_hi); nic 622 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); nic 623 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->cmd_lock, flags); nic 626 drivers/net/ethernet/intel/e100.c static void e100_disable_irq(struct nic *nic) nic 630 drivers/net/ethernet/intel/e100.c spin_lock_irqsave(&nic->cmd_lock, flags); nic 631 drivers/net/ethernet/intel/e100.c iowrite8(irq_mask_all, &nic->csr->scb.cmd_hi); nic 632 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); nic 633 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->cmd_lock, flags); nic 636 drivers/net/ethernet/intel/e100.c static void e100_hw_reset(struct nic *nic) nic 640 drivers/net/ethernet/intel/e100.c iowrite32(selective_reset, &nic->csr->port); nic 641 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(20); nic 644 drivers/net/ethernet/intel/e100.c iowrite32(software_reset, &nic->csr->port); nic 645 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(20); nic 648 drivers/net/ethernet/intel/e100.c e100_disable_irq(nic); nic 651 drivers/net/ethernet/intel/e100.c static int e100_self_test(struct nic *nic) nic 653 drivers/net/ethernet/intel/e100.c u32 dma_addr = nic->dma_addr + offsetof(struct mem, selftest); nic 658 drivers/net/ethernet/intel/e100.c nic->mem->selftest.signature = 0; nic 659 drivers/net/ethernet/intel/e100.c nic->mem->selftest.result = 0xFFFFFFFF; nic 661 drivers/net/ethernet/intel/e100.c iowrite32(selftest | dma_addr, &nic->csr->port); nic 662 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); nic 667 drivers/net/ethernet/intel/e100.c e100_disable_irq(nic); nic 670 drivers/net/ethernet/intel/e100.c if (nic->mem->selftest.result != 0) { nic 671 drivers/net/ethernet/intel/e100.c netif_err(nic, hw, nic->netdev, nic 673 drivers/net/ethernet/intel/e100.c nic->mem->selftest.result); nic 676 drivers/net/ethernet/intel/e100.c if (nic->mem->selftest.signature == 0) { nic 677 drivers/net/ethernet/intel/e100.c netif_err(nic, hw, nic->netdev, "Self-test failed: timed out\n"); nic 684 drivers/net/ethernet/intel/e100.c static void e100_eeprom_write(struct nic *nic, u16 addr_len, u16 addr, __le16 data) nic 700 drivers/net/ethernet/intel/e100.c iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo); nic 701 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 706 drivers/net/ethernet/intel/e100.c iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo); nic 707 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 709 drivers/net/ethernet/intel/e100.c iowrite8(ctrl | eesk, &nic->csr->eeprom_ctrl_lo); nic 710 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 716 drivers/net/ethernet/intel/e100.c iowrite8(0, &nic->csr->eeprom_ctrl_lo); nic 717 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 722 drivers/net/ethernet/intel/e100.c static __le16 e100_eeprom_read(struct nic *nic, u16 *addr_len, u16 addr) nic 732 drivers/net/ethernet/intel/e100.c iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo); nic 733 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 738 drivers/net/ethernet/intel/e100.c iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo); nic 739 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 741 drivers/net/ethernet/intel/e100.c iowrite8(ctrl | eesk, &nic->csr->eeprom_ctrl_lo); nic 742 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 746 drivers/net/ethernet/intel/e100.c ctrl = ioread8(&nic->csr->eeprom_ctrl_lo); nic 756 drivers/net/ethernet/intel/e100.c iowrite8(0, &nic->csr->eeprom_ctrl_lo); nic 757 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); udelay(4); nic 763 drivers/net/ethernet/intel/e100.c static int e100_eeprom_load(struct nic *nic) nic 768 drivers/net/ethernet/intel/e100.c e100_eeprom_read(nic, &addr_len, 0); nic 769 drivers/net/ethernet/intel/e100.c nic->eeprom_wc = 1 << addr_len; nic 771 drivers/net/ethernet/intel/e100.c for (addr = 0; addr < nic->eeprom_wc; addr++) { nic 772 drivers/net/ethernet/intel/e100.c nic->eeprom[addr] = e100_eeprom_read(nic, &addr_len, addr); nic 773 drivers/net/ethernet/intel/e100.c if (addr < nic->eeprom_wc - 1) nic 774 drivers/net/ethernet/intel/e100.c checksum += le16_to_cpu(nic->eeprom[addr]); nic 779 drivers/net/ethernet/intel/e100.c if (cpu_to_le16(0xBABA - checksum) != nic->eeprom[nic->eeprom_wc - 1]) { nic 780 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "EEPROM corrupted\n"); nic 789 drivers/net/ethernet/intel/e100.c static int e100_eeprom_save(struct nic *nic, u16 start, u16 count) nic 794 drivers/net/ethernet/intel/e100.c e100_eeprom_read(nic, &addr_len, 0); nic 795 drivers/net/ethernet/intel/e100.c nic->eeprom_wc = 1 << addr_len; nic 797 drivers/net/ethernet/intel/e100.c if (start + count >= nic->eeprom_wc) nic 801 drivers/net/ethernet/intel/e100.c e100_eeprom_write(nic, addr_len, addr, nic->eeprom[addr]); nic 805 drivers/net/ethernet/intel/e100.c for (addr = 0; addr < nic->eeprom_wc - 1; addr++) nic 806 drivers/net/ethernet/intel/e100.c checksum += le16_to_cpu(nic->eeprom[addr]); nic 807 drivers/net/ethernet/intel/e100.c nic->eeprom[nic->eeprom_wc - 1] = cpu_to_le16(0xBABA - checksum); nic 808 drivers/net/ethernet/intel/e100.c e100_eeprom_write(nic, addr_len, nic->eeprom_wc - 1, nic 809 drivers/net/ethernet/intel/e100.c nic->eeprom[nic->eeprom_wc - 1]); nic 816 drivers/net/ethernet/intel/e100.c static int e100_exec_cmd(struct nic *nic, u8 cmd, dma_addr_t dma_addr) nic 822 drivers/net/ethernet/intel/e100.c spin_lock_irqsave(&nic->cmd_lock, flags); nic 826 drivers/net/ethernet/intel/e100.c if (likely(!ioread8(&nic->csr->scb.cmd_lo))) nic 838 drivers/net/ethernet/intel/e100.c iowrite32(dma_addr, &nic->csr->scb.gen_ptr); nic 839 drivers/net/ethernet/intel/e100.c iowrite8(cmd, &nic->csr->scb.cmd_lo); nic 842 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->cmd_lock, flags); nic 847 drivers/net/ethernet/intel/e100.c static int e100_exec_cb(struct nic *nic, struct sk_buff *skb, nic 848 drivers/net/ethernet/intel/e100.c int (*cb_prepare)(struct nic *, struct cb *, struct sk_buff *)) nic 854 drivers/net/ethernet/intel/e100.c spin_lock_irqsave(&nic->cb_lock, flags); nic 856 drivers/net/ethernet/intel/e100.c if (unlikely(!nic->cbs_avail)) { nic 861 drivers/net/ethernet/intel/e100.c cb = nic->cb_to_use; nic 862 drivers/net/ethernet/intel/e100.c nic->cb_to_use = cb->next; nic 863 drivers/net/ethernet/intel/e100.c nic->cbs_avail--; nic 866 drivers/net/ethernet/intel/e100.c err = cb_prepare(nic, cb, skb); nic 870 drivers/net/ethernet/intel/e100.c if (unlikely(!nic->cbs_avail)) nic 880 drivers/net/ethernet/intel/e100.c while (nic->cb_to_send != nic->cb_to_use) { nic 881 drivers/net/ethernet/intel/e100.c if (unlikely(e100_exec_cmd(nic, nic->cuc_cmd, nic 882 drivers/net/ethernet/intel/e100.c nic->cb_to_send->dma_addr))) { nic 890 drivers/net/ethernet/intel/e100.c schedule_work(&nic->tx_timeout_task); nic 894 drivers/net/ethernet/intel/e100.c nic->cuc_cmd = cuc_resume; nic 895 drivers/net/ethernet/intel/e100.c nic->cb_to_send = nic->cb_to_send->next; nic 900 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->cb_lock, flags); nic 907 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 908 drivers/net/ethernet/intel/e100.c return nic->mdio_ctrl(nic, addr, mdi_read, reg, 0); nic 913 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 915 drivers/net/ethernet/intel/e100.c nic->mdio_ctrl(nic, addr, mdi_write, reg, data); nic 919 drivers/net/ethernet/intel/e100.c static u16 mdio_ctrl_hw(struct nic *nic, u32 addr, u32 dir, u32 reg, u16 data) nic 932 drivers/net/ethernet/intel/e100.c spin_lock_irqsave(&nic->mdio_lock, flags); nic 934 drivers/net/ethernet/intel/e100.c if (ioread32(&nic->csr->mdi_ctrl) & mdi_ready) nic 939 drivers/net/ethernet/intel/e100.c netdev_err(nic->netdev, "e100.mdio_ctrl won't go Ready\n"); nic 940 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->mdio_lock, flags); nic 943 drivers/net/ethernet/intel/e100.c iowrite32((reg << 16) | (addr << 21) | dir | data, &nic->csr->mdi_ctrl); nic 947 drivers/net/ethernet/intel/e100.c if ((data_out = ioread32(&nic->csr->mdi_ctrl)) & mdi_ready) nic 950 drivers/net/ethernet/intel/e100.c spin_unlock_irqrestore(&nic->mdio_lock, flags); nic 951 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 959 drivers/net/ethernet/intel/e100.c static u16 mdio_ctrl_phy_82552_v(struct nic *nic, nic 967 drivers/net/ethernet/intel/e100.c u16 advert = mdio_read(nic->netdev, nic->mii.phy_id, nic 980 drivers/net/ethernet/intel/e100.c return mdio_ctrl_hw(nic, addr, dir, reg, data); nic 989 drivers/net/ethernet/intel/e100.c static u16 mdio_ctrl_phy_mii_emulated(struct nic *nic, nic 1014 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 1023 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 1031 drivers/net/ethernet/intel/e100.c static inline int e100_phy_supports_mii(struct nic *nic) nic 1036 drivers/net/ethernet/intel/e100.c return (nic->mdio_ctrl != mdio_ctrl_phy_mii_emulated); nic 1039 drivers/net/ethernet/intel/e100.c static void e100_get_defaults(struct nic *nic) nic 1045 drivers/net/ethernet/intel/e100.c nic->mac = (nic->flags & ich) ? mac_82559_D101M : nic->pdev->revision; nic 1046 drivers/net/ethernet/intel/e100.c if (nic->mac == mac_unknown) nic 1047 drivers/net/ethernet/intel/e100.c nic->mac = mac_82557_D100_A; nic 1049 drivers/net/ethernet/intel/e100.c nic->params.rfds = rfds; nic 1050 drivers/net/ethernet/intel/e100.c nic->params.cbs = cbs; nic 1053 drivers/net/ethernet/intel/e100.c nic->tx_threshold = 0xE0; nic 1056 drivers/net/ethernet/intel/e100.c nic->tx_command = cpu_to_le16(cb_tx | cb_tx_sf | nic 1057 drivers/net/ethernet/intel/e100.c ((nic->mac >= mac_82558_D101_A4) ? cb_cid : cb_i)); nic 1060 drivers/net/ethernet/intel/e100.c nic->blank_rfd.command = 0; nic 1061 drivers/net/ethernet/intel/e100.c nic->blank_rfd.rbd = cpu_to_le32(0xFFFFFFFF); nic 1062 drivers/net/ethernet/intel/e100.c nic->blank_rfd.size = cpu_to_le16(VLAN_ETH_FRAME_LEN + ETH_FCS_LEN); nic 1065 drivers/net/ethernet/intel/e100.c nic->mii.phy_id_mask = 0x1F; nic 1066 drivers/net/ethernet/intel/e100.c nic->mii.reg_num_mask = 0x1F; nic 1067 drivers/net/ethernet/intel/e100.c nic->mii.dev = nic->netdev; nic 1068 drivers/net/ethernet/intel/e100.c nic->mii.mdio_read = mdio_read; nic 1069 drivers/net/ethernet/intel/e100.c nic->mii.mdio_write = mdio_write; nic 1072 drivers/net/ethernet/intel/e100.c static int e100_configure(struct nic *nic, struct cb *cb, struct sk_buff *skb) nic 1076 drivers/net/ethernet/intel/e100.c struct net_device *netdev = nic->netdev; nic 1089 drivers/net/ethernet/intel/e100.c if (e100_phy_supports_mii(nic)) nic 1108 drivers/net/ethernet/intel/e100.c config->adaptive_ifs = nic->adaptive_ifs; nic 1109 drivers/net/ethernet/intel/e100.c config->loopback = nic->loopback; nic 1111 drivers/net/ethernet/intel/e100.c if (nic->mii.force_media && nic->mii.full_duplex) nic 1114 drivers/net/ethernet/intel/e100.c if (nic->flags & promiscuous || nic->loopback) { nic 1123 drivers/net/ethernet/intel/e100.c if (nic->flags & multicast_all) nic 1127 drivers/net/ethernet/intel/e100.c if (netif_running(nic->netdev) || !(nic->flags & wol_magic)) nic 1130 drivers/net/ethernet/intel/e100.c if (nic->mac >= mac_82558_D101_A4) { nic 1135 drivers/net/ethernet/intel/e100.c if (nic->mac >= mac_82559_D101M) { nic 1138 drivers/net/ethernet/intel/e100.c if (nic->mac >= mac_82551_10) { nic 1153 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, "[00-07]=%8ph\n", nic 1155 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, "[08-15]=%8ph\n", nic 1157 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, "[16-23]=%8ph\n", nic 1222 drivers/net/ethernet/intel/e100.c static const struct firmware *e100_request_firmware(struct nic *nic) nic 1225 drivers/net/ethernet/intel/e100.c const struct firmware *fw = nic->fw; nic 1231 drivers/net/ethernet/intel/e100.c if (nic->flags & ich) nic 1247 drivers/net/ethernet/intel/e100.c if (nic->mac == mac_82559_D101M) { nic 1249 drivers/net/ethernet/intel/e100.c } else if (nic->mac == mac_82559_D101S) { nic 1251 drivers/net/ethernet/intel/e100.c } else if (nic->mac == mac_82551_F || nic->mac == mac_82551_10) { nic 1264 drivers/net/ethernet/intel/e100.c err = request_firmware(&fw, fw_name, &nic->pdev->dev); nic 1268 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, nic 1273 drivers/net/ethernet/intel/e100.c netif_info(nic, probe, nic->netdev, nic 1283 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, nic 1297 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, nic 1306 drivers/net/ethernet/intel/e100.c nic->fw = fw; nic 1310 drivers/net/ethernet/intel/e100.c static int e100_setup_ucode(struct nic *nic, struct cb *cb, nic 1340 drivers/net/ethernet/intel/e100.c static inline int e100_load_ucode_wait(struct nic *nic) nic 1344 drivers/net/ethernet/intel/e100.c struct cb *cb = nic->cb_to_clean; nic 1346 drivers/net/ethernet/intel/e100.c fw = e100_request_firmware(nic); nic 1351 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cb(nic, (void *)fw, e100_setup_ucode))) nic 1352 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, nic 1356 drivers/net/ethernet/intel/e100.c nic->cuc_cmd = cuc_start; nic 1359 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); nic 1369 drivers/net/ethernet/intel/e100.c iowrite8(~0, &nic->csr->scb.stat_ack); nic 1373 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "ucode load failed\n"); nic 1380 drivers/net/ethernet/intel/e100.c static int e100_setup_iaaddr(struct nic *nic, struct cb *cb, nic 1384 drivers/net/ethernet/intel/e100.c memcpy(cb->u.iaaddr, nic->netdev->dev_addr, ETH_ALEN); nic 1388 drivers/net/ethernet/intel/e100.c static int e100_dump(struct nic *nic, struct cb *cb, struct sk_buff *skb) nic 1391 drivers/net/ethernet/intel/e100.c cb->u.dump_buffer_addr = cpu_to_le32(nic->dma_addr + nic 1396 drivers/net/ethernet/intel/e100.c static int e100_phy_check_without_mii(struct nic *nic) nic 1401 drivers/net/ethernet/intel/e100.c phy_type = (nic->eeprom[eeprom_phy_iface] >> 8) & 0x0f; nic 1413 drivers/net/ethernet/intel/e100.c netif_info(nic, probe, nic->netdev, nic 1416 drivers/net/ethernet/intel/e100.c nic->mdio_ctrl = mdio_ctrl_phy_mii_emulated; nic 1417 drivers/net/ethernet/intel/e100.c nic->mii.phy_id = 0; /* is this ok for an MII-less PHY? */ nic 1437 drivers/net/ethernet/intel/e100.c static int e100_phy_init(struct nic *nic) nic 1439 drivers/net/ethernet/intel/e100.c struct net_device *netdev = nic->netdev; nic 1445 drivers/net/ethernet/intel/e100.c nic->mii.phy_id = (addr == 0) ? 1 : (addr == 1) ? 0 : addr; nic 1446 drivers/net/ethernet/intel/e100.c bmcr = mdio_read(netdev, nic->mii.phy_id, MII_BMCR); nic 1447 drivers/net/ethernet/intel/e100.c stat = mdio_read(netdev, nic->mii.phy_id, MII_BMSR); nic 1448 drivers/net/ethernet/intel/e100.c stat = mdio_read(netdev, nic->mii.phy_id, MII_BMSR); nic 1457 drivers/net/ethernet/intel/e100.c if (e100_phy_check_without_mii(nic)) nic 1461 drivers/net/ethernet/intel/e100.c netif_err(nic, hw, nic->netdev, nic 1466 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 1467 drivers/net/ethernet/intel/e100.c "phy_addr = %d\n", nic->mii.phy_id); nic 1470 drivers/net/ethernet/intel/e100.c id_lo = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID1); nic 1471 drivers/net/ethernet/intel/e100.c id_hi = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID2); nic 1472 drivers/net/ethernet/intel/e100.c nic->phy = (u32)id_hi << 16 | (u32)id_lo; nic 1473 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 1474 drivers/net/ethernet/intel/e100.c "phy ID = 0x%08X\n", nic->phy); nic 1478 drivers/net/ethernet/intel/e100.c if (addr != nic->mii.phy_id) { nic 1480 drivers/net/ethernet/intel/e100.c } else if (nic->phy != phy_82552_v) { nic 1491 drivers/net/ethernet/intel/e100.c if (nic->phy == phy_82552_v) nic 1492 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_BMCR, nic 1497 drivers/net/ethernet/intel/e100.c if ((nic->phy & NCS_PHY_MODEL_MASK) == phy_nsc_tx) { nic 1499 drivers/net/ethernet/intel/e100.c cong = mdio_read(netdev, nic->mii.phy_id, MII_NSC_CONG); nic 1502 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_NSC_CONG, cong); nic 1505 drivers/net/ethernet/intel/e100.c if (nic->phy == phy_82552_v) { nic 1506 drivers/net/ethernet/intel/e100.c u16 advert = mdio_read(netdev, nic->mii.phy_id, MII_ADVERTISE); nic 1509 drivers/net/ethernet/intel/e100.c nic->mdio_ctrl = mdio_ctrl_phy_82552_v; nic 1513 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_ADVERTISE, advert); nic 1516 drivers/net/ethernet/intel/e100.c bmcr = mdio_read(netdev, nic->mii.phy_id, MII_BMCR); nic 1518 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr); nic 1519 drivers/net/ethernet/intel/e100.c } else if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) && nic 1520 drivers/net/ethernet/intel/e100.c (mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000) && nic 1521 drivers/net/ethernet/intel/e100.c (nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) { nic 1523 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG, nic 1524 drivers/net/ethernet/intel/e100.c nic->mii.force_media ? 0 : NCONFIG_AUTO_SWITCH); nic 1530 drivers/net/ethernet/intel/e100.c static int e100_hw_init(struct nic *nic) nic 1534 drivers/net/ethernet/intel/e100.c e100_hw_reset(nic); nic 1536 drivers/net/ethernet/intel/e100.c netif_err(nic, hw, nic->netdev, "e100_hw_init\n"); nic 1537 drivers/net/ethernet/intel/e100.c if (!in_interrupt() && (err = e100_self_test(nic))) nic 1540 drivers/net/ethernet/intel/e100.c if ((err = e100_phy_init(nic))) nic 1542 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cmd(nic, cuc_load_base, 0))) nic 1544 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cmd(nic, ruc_load_base, 0))) nic 1546 drivers/net/ethernet/intel/e100.c if ((err = e100_load_ucode_wait(nic))) nic 1548 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cb(nic, NULL, e100_configure))) nic 1550 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cb(nic, NULL, e100_setup_iaaddr))) nic 1552 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cmd(nic, cuc_dump_addr, nic 1553 drivers/net/ethernet/intel/e100.c nic->dma_addr + offsetof(struct mem, stats)))) nic 1555 drivers/net/ethernet/intel/e100.c if ((err = e100_exec_cmd(nic, cuc_dump_reset, 0))) nic 1558 drivers/net/ethernet/intel/e100.c e100_disable_irq(nic); nic 1563 drivers/net/ethernet/intel/e100.c static int e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb) nic 1565 drivers/net/ethernet/intel/e100.c struct net_device *netdev = nic->netdev; nic 1583 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 1585 drivers/net/ethernet/intel/e100.c netif_printk(nic, hw, KERN_DEBUG, nic->netdev, nic 1590 drivers/net/ethernet/intel/e100.c nic->flags |= promiscuous; nic 1592 drivers/net/ethernet/intel/e100.c nic->flags &= ~promiscuous; nic 1596 drivers/net/ethernet/intel/e100.c nic->flags |= multicast_all; nic 1598 drivers/net/ethernet/intel/e100.c nic->flags &= ~multicast_all; nic 1600 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_configure); nic 1601 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_multi); nic 1604 drivers/net/ethernet/intel/e100.c static void e100_update_stats(struct nic *nic) nic 1606 drivers/net/ethernet/intel/e100.c struct net_device *dev = nic->netdev; nic 1608 drivers/net/ethernet/intel/e100.c struct stats *s = &nic->mem->stats; nic 1609 drivers/net/ethernet/intel/e100.c __le32 *complete = (nic->mac < mac_82558_D101_A4) ? &s->fc_xmt_pause : nic 1610 drivers/net/ethernet/intel/e100.c (nic->mac < mac_82559_D101M) ? (__le32 *)&s->xmt_tco_frames : nic 1619 drivers/net/ethernet/intel/e100.c nic->tx_frames = le32_to_cpu(s->tx_good_frames); nic 1620 drivers/net/ethernet/intel/e100.c nic->tx_collisions = le32_to_cpu(s->tx_total_collisions); nic 1625 drivers/net/ethernet/intel/e100.c ns->collisions += nic->tx_collisions; nic 1628 drivers/net/ethernet/intel/e100.c nic->rx_short_frame_errors += nic 1630 drivers/net/ethernet/intel/e100.c ns->rx_length_errors = nic->rx_short_frame_errors + nic 1631 drivers/net/ethernet/intel/e100.c nic->rx_over_length_errors; nic 1641 drivers/net/ethernet/intel/e100.c nic->tx_deferred += le32_to_cpu(s->tx_deferred); nic 1642 drivers/net/ethernet/intel/e100.c nic->tx_single_collisions += nic 1644 drivers/net/ethernet/intel/e100.c nic->tx_multiple_collisions += nic 1646 drivers/net/ethernet/intel/e100.c if (nic->mac >= mac_82558_D101_A4) { nic 1647 drivers/net/ethernet/intel/e100.c nic->tx_fc_pause += le32_to_cpu(s->fc_xmt_pause); nic 1648 drivers/net/ethernet/intel/e100.c nic->rx_fc_pause += le32_to_cpu(s->fc_rcv_pause); nic 1649 drivers/net/ethernet/intel/e100.c nic->rx_fc_unsupported += nic 1651 drivers/net/ethernet/intel/e100.c if (nic->mac >= mac_82559_D101M) { nic 1652 drivers/net/ethernet/intel/e100.c nic->tx_tco_frames += nic 1654 drivers/net/ethernet/intel/e100.c nic->rx_tco_frames += nic 1661 drivers/net/ethernet/intel/e100.c if (e100_exec_cmd(nic, cuc_dump_reset, 0)) nic 1662 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev, nic 1666 drivers/net/ethernet/intel/e100.c static void e100_adjust_adaptive_ifs(struct nic *nic, int speed, int duplex) nic 1672 drivers/net/ethernet/intel/e100.c u32 prev = nic->adaptive_ifs; nic 1675 drivers/net/ethernet/intel/e100.c if ((nic->tx_frames / 32 < nic->tx_collisions) && nic 1676 drivers/net/ethernet/intel/e100.c (nic->tx_frames > min_frames)) { nic 1677 drivers/net/ethernet/intel/e100.c if (nic->adaptive_ifs < 60) nic 1678 drivers/net/ethernet/intel/e100.c nic->adaptive_ifs += 5; nic 1679 drivers/net/ethernet/intel/e100.c } else if (nic->tx_frames < min_frames) { nic 1680 drivers/net/ethernet/intel/e100.c if (nic->adaptive_ifs >= 5) nic 1681 drivers/net/ethernet/intel/e100.c nic->adaptive_ifs -= 5; nic 1683 drivers/net/ethernet/intel/e100.c if (nic->adaptive_ifs != prev) nic 1684 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_configure); nic 1690 drivers/net/ethernet/intel/e100.c struct nic *nic = from_timer(nic, t, watchdog); nic 1694 drivers/net/ethernet/intel/e100.c netif_printk(nic, timer, KERN_DEBUG, nic->netdev, nic 1699 drivers/net/ethernet/intel/e100.c mii_ethtool_gset(&nic->mii, &cmd); nic 1702 drivers/net/ethernet/intel/e100.c if (mii_link_ok(&nic->mii) && !netif_carrier_ok(nic->netdev)) { nic 1703 drivers/net/ethernet/intel/e100.c netdev_info(nic->netdev, "NIC Link is Up %u Mbps %s Duplex\n", nic 1706 drivers/net/ethernet/intel/e100.c } else if (!mii_link_ok(&nic->mii) && netif_carrier_ok(nic->netdev)) { nic 1707 drivers/net/ethernet/intel/e100.c netdev_info(nic->netdev, "NIC Link is Down\n"); nic 1710 drivers/net/ethernet/intel/e100.c mii_check_link(&nic->mii); nic 1717 drivers/net/ethernet/intel/e100.c spin_lock_irq(&nic->cmd_lock); nic 1718 drivers/net/ethernet/intel/e100.c iowrite8(ioread8(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi); nic 1719 drivers/net/ethernet/intel/e100.c e100_write_flush(nic); nic 1720 drivers/net/ethernet/intel/e100.c spin_unlock_irq(&nic->cmd_lock); nic 1722 drivers/net/ethernet/intel/e100.c e100_update_stats(nic); nic 1723 drivers/net/ethernet/intel/e100.c e100_adjust_adaptive_ifs(nic, speed, cmd.duplex); nic 1725 drivers/net/ethernet/intel/e100.c if (nic->mac <= mac_82557_D100_C) nic 1727 drivers/net/ethernet/intel/e100.c e100_set_multicast_list(nic->netdev); nic 1729 drivers/net/ethernet/intel/e100.c if (nic->flags & ich && speed == SPEED_10 && cmd.duplex == DUPLEX_HALF) nic 1731 drivers/net/ethernet/intel/e100.c nic->flags |= ich_10h_workaround; nic 1733 drivers/net/ethernet/intel/e100.c nic->flags &= ~ich_10h_workaround; nic 1735 drivers/net/ethernet/intel/e100.c mod_timer(&nic->watchdog, nic 1739 drivers/net/ethernet/intel/e100.c static int e100_xmit_prepare(struct nic *nic, struct cb *cb, nic 1743 drivers/net/ethernet/intel/e100.c cb->command = nic->tx_command; nic 1745 drivers/net/ethernet/intel/e100.c dma_addr = pci_map_single(nic->pdev, nic 1748 drivers/net/ethernet/intel/e100.c if (pci_dma_mapping_error(nic->pdev, dma_addr)) { nic 1764 drivers/net/ethernet/intel/e100.c if ((nic->cbs_avail & ~15) == nic->cbs_avail) nic 1768 drivers/net/ethernet/intel/e100.c cb->u.tcb.threshold = nic->tx_threshold; nic 1779 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 1782 drivers/net/ethernet/intel/e100.c if (nic->flags & ich_10h_workaround) { nic 1786 drivers/net/ethernet/intel/e100.c if (e100_exec_cmd(nic, cuc_nop, 0)) nic 1787 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev, nic 1792 drivers/net/ethernet/intel/e100.c err = e100_exec_cb(nic, skb, e100_xmit_prepare); nic 1797 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev, nic 1803 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev, nic 1812 drivers/net/ethernet/intel/e100.c static int e100_tx_clean(struct nic *nic) nic 1814 drivers/net/ethernet/intel/e100.c struct net_device *dev = nic->netdev; nic 1818 drivers/net/ethernet/intel/e100.c spin_lock(&nic->cb_lock); nic 1821 drivers/net/ethernet/intel/e100.c for (cb = nic->cb_to_clean; nic 1823 drivers/net/ethernet/intel/e100.c cb = nic->cb_to_clean = cb->next) { nic 1825 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_done, KERN_DEBUG, nic->netdev, nic 1827 drivers/net/ethernet/intel/e100.c (int)(((void*)cb - (void*)nic->cbs)/sizeof(struct cb)), nic 1834 drivers/net/ethernet/intel/e100.c pci_unmap_single(nic->pdev, nic 1843 drivers/net/ethernet/intel/e100.c nic->cbs_avail++; nic 1846 drivers/net/ethernet/intel/e100.c spin_unlock(&nic->cb_lock); nic 1849 drivers/net/ethernet/intel/e100.c if (unlikely(tx_cleaned && netif_queue_stopped(nic->netdev))) nic 1850 drivers/net/ethernet/intel/e100.c netif_wake_queue(nic->netdev); nic 1855 drivers/net/ethernet/intel/e100.c static void e100_clean_cbs(struct nic *nic) nic 1857 drivers/net/ethernet/intel/e100.c if (nic->cbs) { nic 1858 drivers/net/ethernet/intel/e100.c while (nic->cbs_avail != nic->params.cbs.count) { nic 1859 drivers/net/ethernet/intel/e100.c struct cb *cb = nic->cb_to_clean; nic 1861 drivers/net/ethernet/intel/e100.c pci_unmap_single(nic->pdev, nic 1867 drivers/net/ethernet/intel/e100.c nic->cb_to_clean = nic->cb_to_clean->next; nic 1868 drivers/net/ethernet/intel/e100.c nic->cbs_avail++; nic 1870 drivers/net/ethernet/intel/e100.c dma_pool_free(nic->cbs_pool, nic->cbs, nic->cbs_dma_addr); nic 1871 drivers/net/ethernet/intel/e100.c nic->cbs = NULL; nic 1872 drivers/net/ethernet/intel/e100.c nic->cbs_avail = 0; nic 1874 drivers/net/ethernet/intel/e100.c nic->cuc_cmd = cuc_start; nic 1875 drivers/net/ethernet/intel/e100.c nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = nic 1876 drivers/net/ethernet/intel/e100.c nic->cbs; nic 1879 drivers/net/ethernet/intel/e100.c static int e100_alloc_cbs(struct nic *nic) nic 1882 drivers/net/ethernet/intel/e100.c unsigned int i, count = nic->params.cbs.count; nic 1884 drivers/net/ethernet/intel/e100.c nic->cuc_cmd = cuc_start; nic 1885 drivers/net/ethernet/intel/e100.c nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = NULL; nic 1886 drivers/net/ethernet/intel/e100.c nic->cbs_avail = 0; nic 1888 drivers/net/ethernet/intel/e100.c nic->cbs = dma_pool_zalloc(nic->cbs_pool, GFP_KERNEL, nic 1889 drivers/net/ethernet/intel/e100.c &nic->cbs_dma_addr); nic 1890 drivers/net/ethernet/intel/e100.c if (!nic->cbs) nic 1893 drivers/net/ethernet/intel/e100.c for (cb = nic->cbs, i = 0; i < count; cb++, i++) { nic 1894 drivers/net/ethernet/intel/e100.c cb->next = (i + 1 < count) ? cb + 1 : nic->cbs; nic 1895 drivers/net/ethernet/intel/e100.c cb->prev = (i == 0) ? nic->cbs + count - 1 : cb - 1; nic 1897 drivers/net/ethernet/intel/e100.c cb->dma_addr = nic->cbs_dma_addr + i * sizeof(struct cb); nic 1898 drivers/net/ethernet/intel/e100.c cb->link = cpu_to_le32(nic->cbs_dma_addr + nic 1902 drivers/net/ethernet/intel/e100.c nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = nic->cbs; nic 1903 drivers/net/ethernet/intel/e100.c nic->cbs_avail = count; nic 1908 drivers/net/ethernet/intel/e100.c static inline void e100_start_receiver(struct nic *nic, struct rx *rx) nic 1910 drivers/net/ethernet/intel/e100.c if (!nic->rxs) return; nic 1911 drivers/net/ethernet/intel/e100.c if (RU_SUSPENDED != nic->ru_running) return; nic 1914 drivers/net/ethernet/intel/e100.c if (!rx) rx = nic->rxs; nic 1918 drivers/net/ethernet/intel/e100.c e100_exec_cmd(nic, ruc_start, rx->dma_addr); nic 1919 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_RUNNING; nic 1924 drivers/net/ethernet/intel/e100.c static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx) nic 1926 drivers/net/ethernet/intel/e100.c if (!(rx->skb = netdev_alloc_skb_ip_align(nic->netdev, RFD_BUF_LEN))) nic 1930 drivers/net/ethernet/intel/e100.c skb_copy_to_linear_data(rx->skb, &nic->blank_rfd, sizeof(struct rfd)); nic 1931 drivers/net/ethernet/intel/e100.c rx->dma_addr = pci_map_single(nic->pdev, rx->skb->data, nic 1934 drivers/net/ethernet/intel/e100.c if (pci_dma_mapping_error(nic->pdev, rx->dma_addr)) { nic 1947 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr, nic 1954 drivers/net/ethernet/intel/e100.c static int e100_rx_indicate(struct nic *nic, struct rx *rx, nic 1957 drivers/net/ethernet/intel/e100.c struct net_device *dev = nic->netdev; nic 1967 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_cpu(nic->pdev, rx->dma_addr, nic 1971 drivers/net/ethernet/intel/e100.c netif_printk(nic, rx_status, KERN_DEBUG, nic->netdev, nic 1983 drivers/net/ethernet/intel/e100.c (RU_RUNNING == nic->ru_running)) nic 1985 drivers/net/ethernet/intel/e100.c if (ioread8(&nic->csr->scb.status) & rus_no_res) nic 1986 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_SUSPENDED; nic 1987 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr, nic 2001 drivers/net/ethernet/intel/e100.c pci_unmap_single(nic->pdev, rx->dma_addr, nic 2011 drivers/net/ethernet/intel/e100.c (RU_RUNNING == nic->ru_running)) { nic 2013 drivers/net/ethernet/intel/e100.c if (ioread8(&nic->csr->scb.status) & rus_no_res) nic 2014 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_SUSPENDED; nic 2020 drivers/net/ethernet/intel/e100.c skb->protocol = eth_type_trans(skb, nic->netdev); nic 2028 drivers/net/ethernet/intel/e100.c nic->rx_over_length_errors++; nic 2037 drivers/net/ethernet/intel/e100.c nic->rx_over_length_errors++; nic 2053 drivers/net/ethernet/intel/e100.c static void e100_rx_clean(struct nic *nic, unsigned int *work_done, nic 2062 drivers/net/ethernet/intel/e100.c for (rx = nic->rx_to_clean; rx->skb; rx = nic->rx_to_clean = rx->next) { nic 2063 drivers/net/ethernet/intel/e100.c err = e100_rx_indicate(nic, rx, work_done, work_to_do); nic 2076 drivers/net/ethernet/intel/e100.c if (-EAGAIN != err && RU_SUSPENDED == nic->ru_running) nic 2079 drivers/net/ethernet/intel/e100.c old_before_last_rx = nic->rx_to_use->prev->prev; nic 2083 drivers/net/ethernet/intel/e100.c for (rx = nic->rx_to_use; !rx->skb; rx = nic->rx_to_use = rx->next) { nic 2084 drivers/net/ethernet/intel/e100.c if (unlikely(e100_rx_alloc_skb(nic, rx))) nic 2088 drivers/net/ethernet/intel/e100.c new_before_last_rx = nic->rx_to_use->prev->prev; nic 2103 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, nic 2111 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, nic 2116 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, nic 2123 drivers/net/ethernet/intel/e100.c iowrite8(stat_ack_rnr, &nic->csr->scb.stat_ack); nic 2124 drivers/net/ethernet/intel/e100.c e100_start_receiver(nic, nic->rx_to_clean); nic 2130 drivers/net/ethernet/intel/e100.c static void e100_rx_clean_list(struct nic *nic) nic 2133 drivers/net/ethernet/intel/e100.c unsigned int i, count = nic->params.rfds.count; nic 2135 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_UNINITIALIZED; nic 2137 drivers/net/ethernet/intel/e100.c if (nic->rxs) { nic 2138 drivers/net/ethernet/intel/e100.c for (rx = nic->rxs, i = 0; i < count; rx++, i++) { nic 2140 drivers/net/ethernet/intel/e100.c pci_unmap_single(nic->pdev, rx->dma_addr, nic 2145 drivers/net/ethernet/intel/e100.c kfree(nic->rxs); nic 2146 drivers/net/ethernet/intel/e100.c nic->rxs = NULL; nic 2149 drivers/net/ethernet/intel/e100.c nic->rx_to_use = nic->rx_to_clean = NULL; nic 2152 drivers/net/ethernet/intel/e100.c static int e100_rx_alloc_list(struct nic *nic) nic 2155 drivers/net/ethernet/intel/e100.c unsigned int i, count = nic->params.rfds.count; nic 2158 drivers/net/ethernet/intel/e100.c nic->rx_to_use = nic->rx_to_clean = NULL; nic 2159 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_UNINITIALIZED; nic 2161 drivers/net/ethernet/intel/e100.c if (!(nic->rxs = kcalloc(count, sizeof(struct rx), GFP_ATOMIC))) nic 2164 drivers/net/ethernet/intel/e100.c for (rx = nic->rxs, i = 0; i < count; rx++, i++) { nic 2165 drivers/net/ethernet/intel/e100.c rx->next = (i + 1 < count) ? rx + 1 : nic->rxs; nic 2166 drivers/net/ethernet/intel/e100.c rx->prev = (i == 0) ? nic->rxs + count - 1 : rx - 1; nic 2167 drivers/net/ethernet/intel/e100.c if (e100_rx_alloc_skb(nic, rx)) { nic 2168 drivers/net/ethernet/intel/e100.c e100_rx_clean_list(nic); nic 2179 drivers/net/ethernet/intel/e100.c rx = nic->rxs->prev->prev; nic 2183 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr, nic 2186 drivers/net/ethernet/intel/e100.c nic->rx_to_use = nic->rx_to_clean = nic->rxs; nic 2187 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_SUSPENDED; nic 2195 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2196 drivers/net/ethernet/intel/e100.c u8 stat_ack = ioread8(&nic->csr->scb.stat_ack); nic 2198 drivers/net/ethernet/intel/e100.c netif_printk(nic, intr, KERN_DEBUG, nic->netdev, nic 2206 drivers/net/ethernet/intel/e100.c iowrite8(stat_ack, &nic->csr->scb.stat_ack); nic 2210 drivers/net/ethernet/intel/e100.c nic->ru_running = RU_SUSPENDED; nic 2212 drivers/net/ethernet/intel/e100.c if (likely(napi_schedule_prep(&nic->napi))) { nic 2213 drivers/net/ethernet/intel/e100.c e100_disable_irq(nic); nic 2214 drivers/net/ethernet/intel/e100.c __napi_schedule(&nic->napi); nic 2222 drivers/net/ethernet/intel/e100.c struct nic *nic = container_of(napi, struct nic, napi); nic 2225 drivers/net/ethernet/intel/e100.c e100_rx_clean(nic, &work_done, budget); nic 2226 drivers/net/ethernet/intel/e100.c e100_tx_clean(nic); nic 2234 drivers/net/ethernet/intel/e100.c e100_enable_irq(nic); nic 2242 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2244 drivers/net/ethernet/intel/e100.c e100_disable_irq(nic); nic 2245 drivers/net/ethernet/intel/e100.c e100_intr(nic->pdev->irq, netdev); nic 2246 drivers/net/ethernet/intel/e100.c e100_tx_clean(nic); nic 2247 drivers/net/ethernet/intel/e100.c e100_enable_irq(nic); nic 2253 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2260 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_setup_iaaddr); nic 2265 drivers/net/ethernet/intel/e100.c static int e100_asf(struct nic *nic) nic 2268 drivers/net/ethernet/intel/e100.c return (nic->pdev->device >= 0x1050) && (nic->pdev->device <= 0x1057) && nic 2269 drivers/net/ethernet/intel/e100.c (nic->eeprom[eeprom_config_asf] & eeprom_asf) && nic 2270 drivers/net/ethernet/intel/e100.c !(nic->eeprom[eeprom_config_asf] & eeprom_gcl) && nic 2271 drivers/net/ethernet/intel/e100.c ((nic->eeprom[eeprom_smbus_addr] & 0xFF) != 0xFE); nic 2274 drivers/net/ethernet/intel/e100.c static int e100_up(struct nic *nic) nic 2278 drivers/net/ethernet/intel/e100.c if ((err = e100_rx_alloc_list(nic))) nic 2280 drivers/net/ethernet/intel/e100.c if ((err = e100_alloc_cbs(nic))) nic 2282 drivers/net/ethernet/intel/e100.c if ((err = e100_hw_init(nic))) nic 2284 drivers/net/ethernet/intel/e100.c e100_set_multicast_list(nic->netdev); nic 2285 drivers/net/ethernet/intel/e100.c e100_start_receiver(nic, NULL); nic 2286 drivers/net/ethernet/intel/e100.c mod_timer(&nic->watchdog, jiffies); nic 2287 drivers/net/ethernet/intel/e100.c if ((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED, nic 2288 drivers/net/ethernet/intel/e100.c nic->netdev->name, nic->netdev))) nic 2290 drivers/net/ethernet/intel/e100.c netif_wake_queue(nic->netdev); nic 2291 drivers/net/ethernet/intel/e100.c napi_enable(&nic->napi); nic 2294 drivers/net/ethernet/intel/e100.c e100_enable_irq(nic); nic 2298 drivers/net/ethernet/intel/e100.c del_timer_sync(&nic->watchdog); nic 2300 drivers/net/ethernet/intel/e100.c e100_clean_cbs(nic); nic 2302 drivers/net/ethernet/intel/e100.c e100_rx_clean_list(nic); nic 2306 drivers/net/ethernet/intel/e100.c static void e100_down(struct nic *nic) nic 2309 drivers/net/ethernet/intel/e100.c napi_disable(&nic->napi); nic 2310 drivers/net/ethernet/intel/e100.c netif_stop_queue(nic->netdev); nic 2311 drivers/net/ethernet/intel/e100.c e100_hw_reset(nic); nic 2312 drivers/net/ethernet/intel/e100.c free_irq(nic->pdev->irq, nic->netdev); nic 2313 drivers/net/ethernet/intel/e100.c del_timer_sync(&nic->watchdog); nic 2314 drivers/net/ethernet/intel/e100.c netif_carrier_off(nic->netdev); nic 2315 drivers/net/ethernet/intel/e100.c e100_clean_cbs(nic); nic 2316 drivers/net/ethernet/intel/e100.c e100_rx_clean_list(nic); nic 2321 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2325 drivers/net/ethernet/intel/e100.c schedule_work(&nic->tx_timeout_task); nic 2330 drivers/net/ethernet/intel/e100.c struct nic *nic = container_of(work, struct nic, tx_timeout_task); nic 2331 drivers/net/ethernet/intel/e100.c struct net_device *netdev = nic->netdev; nic 2333 drivers/net/ethernet/intel/e100.c netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev, nic 2334 drivers/net/ethernet/intel/e100.c "scb.status=0x%02X\n", ioread8(&nic->csr->scb.status)); nic 2344 drivers/net/ethernet/intel/e100.c static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode) nic 2354 drivers/net/ethernet/intel/e100.c if ((err = e100_rx_alloc_list(nic))) nic 2356 drivers/net/ethernet/intel/e100.c if ((err = e100_alloc_cbs(nic))) nic 2360 drivers/net/ethernet/intel/e100.c if (nic->flags & ich && loopback_mode == lb_phy) nic 2363 drivers/net/ethernet/intel/e100.c nic->loopback = loopback_mode; nic 2364 drivers/net/ethernet/intel/e100.c if ((err = e100_hw_init(nic))) nic 2368 drivers/net/ethernet/intel/e100.c mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, nic 2371 drivers/net/ethernet/intel/e100.c e100_start_receiver(nic, NULL); nic 2373 drivers/net/ethernet/intel/e100.c if (!(skb = netdev_alloc_skb(nic->netdev, ETH_DATA_LEN))) { nic 2379 drivers/net/ethernet/intel/e100.c e100_xmit_frame(skb, nic->netdev); nic 2383 drivers/net/ethernet/intel/e100.c pci_dma_sync_single_for_cpu(nic->pdev, nic->rx_to_clean->dma_addr, nic 2386 drivers/net/ethernet/intel/e100.c if (memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd), nic 2391 drivers/net/ethernet/intel/e100.c mdio_write(nic->netdev, nic->mii.phy_id, MII_BMCR, 0); nic 2392 drivers/net/ethernet/intel/e100.c nic->loopback = lb_none; nic 2393 drivers/net/ethernet/intel/e100.c e100_clean_cbs(nic); nic 2394 drivers/net/ethernet/intel/e100.c e100_hw_reset(nic); nic 2396 drivers/net/ethernet/intel/e100.c e100_rx_clean_list(nic); nic 2408 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2410 drivers/net/ethernet/intel/e100.c mii_ethtool_get_link_ksettings(&nic->mii, cmd); nic 2418 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2421 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, MII_BMCR, BMCR_RESET); nic 2422 drivers/net/ethernet/intel/e100.c err = mii_ethtool_set_link_ksettings(&nic->mii, cmd); nic 2423 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_configure); nic 2431 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2434 drivers/net/ethernet/intel/e100.c strlcpy(info->bus_info, pci_name(nic->pdev), nic 2441 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2442 drivers/net/ethernet/intel/e100.c return 1 + E100_PHY_REGS + sizeof(nic->mem->dump_buf); nic 2448 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2452 drivers/net/ethernet/intel/e100.c regs->version = (1 << 24) | nic->pdev->revision; nic 2453 drivers/net/ethernet/intel/e100.c buff[0] = ioread8(&nic->csr->scb.cmd_hi) << 24 | nic 2454 drivers/net/ethernet/intel/e100.c ioread8(&nic->csr->scb.cmd_lo) << 16 | nic 2455 drivers/net/ethernet/intel/e100.c ioread16(&nic->csr->scb.status); nic 2458 drivers/net/ethernet/intel/e100.c mdio_read(netdev, nic->mii.phy_id, i); nic 2459 drivers/net/ethernet/intel/e100.c memset(nic->mem->dump_buf, 0, sizeof(nic->mem->dump_buf)); nic 2460 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_dump); nic 2462 drivers/net/ethernet/intel/e100.c memcpy(&buff[2 + E100_PHY_REGS], nic->mem->dump_buf, nic 2463 drivers/net/ethernet/intel/e100.c sizeof(nic->mem->dump_buf)); nic 2468 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2469 drivers/net/ethernet/intel/e100.c wol->supported = (nic->mac >= mac_82558_D101_A4) ? WAKE_MAGIC : 0; nic 2470 drivers/net/ethernet/intel/e100.c wol->wolopts = (nic->flags & wol_magic) ? WAKE_MAGIC : 0; nic 2475 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2478 drivers/net/ethernet/intel/e100.c !device_can_wakeup(&nic->pdev->dev)) nic 2482 drivers/net/ethernet/intel/e100.c nic->flags |= wol_magic; nic 2484 drivers/net/ethernet/intel/e100.c nic->flags &= ~wol_magic; nic 2486 drivers/net/ethernet/intel/e100.c device_set_wakeup_enable(&nic->pdev->dev, wol->wolopts); nic 2488 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_configure); nic 2495 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2496 drivers/net/ethernet/intel/e100.c return nic->msg_enable; nic 2501 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2502 drivers/net/ethernet/intel/e100.c nic->msg_enable = value; nic 2507 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2508 drivers/net/ethernet/intel/e100.c return mii_nway_restart(&nic->mii); nic 2513 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2514 drivers/net/ethernet/intel/e100.c return mii_link_ok(&nic->mii); nic 2519 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2520 drivers/net/ethernet/intel/e100.c return nic->eeprom_wc << 1; nic 2527 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2530 drivers/net/ethernet/intel/e100.c memcpy(bytes, &((u8 *)nic->eeprom)[eeprom->offset], eeprom->len); nic 2538 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2543 drivers/net/ethernet/intel/e100.c memcpy(&((u8 *)nic->eeprom)[eeprom->offset], bytes, eeprom->len); nic 2545 drivers/net/ethernet/intel/e100.c return e100_eeprom_save(nic, eeprom->offset >> 1, nic 2552 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2553 drivers/net/ethernet/intel/e100.c struct param_range *rfds = &nic->params.rfds; nic 2554 drivers/net/ethernet/intel/e100.c struct param_range *cbs = &nic->params.cbs; nic 2565 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2566 drivers/net/ethernet/intel/e100.c struct param_range *rfds = &nic->params.rfds; nic 2567 drivers/net/ethernet/intel/e100.c struct param_range *cbs = &nic->params.cbs; nic 2573 drivers/net/ethernet/intel/e100.c e100_down(nic); nic 2578 drivers/net/ethernet/intel/e100.c netif_info(nic, drv, nic->netdev, "Ring Param settings: rx: %d, tx %d\n", nic 2581 drivers/net/ethernet/intel/e100.c e100_up(nic); nic 2599 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2603 drivers/net/ethernet/intel/e100.c data[0] = !mii_link_ok(&nic->mii); nic 2604 drivers/net/ethernet/intel/e100.c data[1] = e100_eeprom_load(nic); nic 2608 drivers/net/ethernet/intel/e100.c err = mii_ethtool_gset(&nic->mii, &cmd); nic 2611 drivers/net/ethernet/intel/e100.c e100_down(nic); nic 2612 drivers/net/ethernet/intel/e100.c data[2] = e100_self_test(nic); nic 2613 drivers/net/ethernet/intel/e100.c data[3] = e100_loopback_test(nic, lb_mac); nic 2614 drivers/net/ethernet/intel/e100.c data[4] = e100_loopback_test(nic, lb_phy); nic 2617 drivers/net/ethernet/intel/e100.c err = mii_ethtool_sset(&nic->mii, &cmd); nic 2620 drivers/net/ethernet/intel/e100.c e100_up(nic); nic 2631 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2638 drivers/net/ethernet/intel/e100.c u16 led_reg = (nic->phy == phy_82552_v) ? E100_82552_LED_OVERRIDE : nic 2647 drivers/net/ethernet/intel/e100.c leds = (nic->phy == phy_82552_v) ? E100_82552_LED_ON : nic 2648 drivers/net/ethernet/intel/e100.c (nic->mac < mac_82559_D101M) ? led_on_557 : led_on_559; nic 2652 drivers/net/ethernet/intel/e100.c leds = (nic->phy == phy_82552_v) ? E100_82552_LED_OFF : led_off; nic 2659 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, led_reg, leds); nic 2694 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2700 drivers/net/ethernet/intel/e100.c data[i++] = nic->tx_deferred; nic 2701 drivers/net/ethernet/intel/e100.c data[i++] = nic->tx_single_collisions; nic 2702 drivers/net/ethernet/intel/e100.c data[i++] = nic->tx_multiple_collisions; nic 2703 drivers/net/ethernet/intel/e100.c data[i++] = nic->tx_fc_pause; nic 2704 drivers/net/ethernet/intel/e100.c data[i++] = nic->rx_fc_pause; nic 2705 drivers/net/ethernet/intel/e100.c data[i++] = nic->rx_fc_unsupported; nic 2706 drivers/net/ethernet/intel/e100.c data[i++] = nic->tx_tco_frames; nic 2707 drivers/net/ethernet/intel/e100.c data[i++] = nic->rx_tco_frames; nic 2708 drivers/net/ethernet/intel/e100.c data[i++] = nic->rx_short_frame_errors; nic 2709 drivers/net/ethernet/intel/e100.c data[i++] = nic->rx_over_length_errors; nic 2751 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2753 drivers/net/ethernet/intel/e100.c return generic_mii_ioctl(&nic->mii, if_mii(ifr), cmd, NULL); nic 2756 drivers/net/ethernet/intel/e100.c static int e100_alloc(struct nic *nic) nic 2758 drivers/net/ethernet/intel/e100.c nic->mem = pci_alloc_consistent(nic->pdev, sizeof(struct mem), nic 2759 drivers/net/ethernet/intel/e100.c &nic->dma_addr); nic 2760 drivers/net/ethernet/intel/e100.c return nic->mem ? 0 : -ENOMEM; nic 2763 drivers/net/ethernet/intel/e100.c static void e100_free(struct nic *nic) nic 2765 drivers/net/ethernet/intel/e100.c if (nic->mem) { nic 2766 drivers/net/ethernet/intel/e100.c pci_free_consistent(nic->pdev, sizeof(struct mem), nic 2767 drivers/net/ethernet/intel/e100.c nic->mem, nic->dma_addr); nic 2768 drivers/net/ethernet/intel/e100.c nic->mem = NULL; nic 2774 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2778 drivers/net/ethernet/intel/e100.c if ((err = e100_up(nic))) nic 2779 drivers/net/ethernet/intel/e100.c netif_err(nic, ifup, nic->netdev, "Cannot open interface, aborting\n"); nic 2792 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2799 drivers/net/ethernet/intel/e100.c e100_exec_cb(nic, NULL, e100_configure); nic 2821 drivers/net/ethernet/intel/e100.c struct nic *nic; nic 2824 drivers/net/ethernet/intel/e100.c if (!(netdev = alloc_etherdev(sizeof(struct nic)))) nic 2836 drivers/net/ethernet/intel/e100.c nic = netdev_priv(netdev); nic 2837 drivers/net/ethernet/intel/e100.c netif_napi_add(netdev, &nic->napi, e100_poll, E100_NAPI_WEIGHT); nic 2838 drivers/net/ethernet/intel/e100.c nic->netdev = netdev; nic 2839 drivers/net/ethernet/intel/e100.c nic->pdev = pdev; nic 2840 drivers/net/ethernet/intel/e100.c nic->msg_enable = (1 << debug) - 1; nic 2841 drivers/net/ethernet/intel/e100.c nic->mdio_ctrl = mdio_ctrl_hw; nic 2845 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot enable PCI device, aborting\n"); nic 2850 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot find proper PCI device base address, aborting\n"); nic 2856 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot obtain PCI resources, aborting\n"); nic 2861 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "No usable DMA configuration, aborting\n"); nic 2868 drivers/net/ethernet/intel/e100.c netif_info(nic, probe, nic->netdev, "using i/o access mode\n"); nic 2870 drivers/net/ethernet/intel/e100.c nic->csr = pci_iomap(pdev, (use_io ? 1 : 0), sizeof(struct csr)); nic 2871 drivers/net/ethernet/intel/e100.c if (!nic->csr) { nic 2872 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot map device registers, aborting\n"); nic 2878 drivers/net/ethernet/intel/e100.c nic->flags |= ich; nic 2880 drivers/net/ethernet/intel/e100.c nic->flags &= ~ich; nic 2882 drivers/net/ethernet/intel/e100.c e100_get_defaults(nic); nic 2885 drivers/net/ethernet/intel/e100.c if (nic->mac < mac_82558_D101_A4) nic 2889 drivers/net/ethernet/intel/e100.c spin_lock_init(&nic->cb_lock); nic 2890 drivers/net/ethernet/intel/e100.c spin_lock_init(&nic->cmd_lock); nic 2891 drivers/net/ethernet/intel/e100.c spin_lock_init(&nic->mdio_lock); nic 2896 drivers/net/ethernet/intel/e100.c e100_hw_reset(nic); nic 2900 drivers/net/ethernet/intel/e100.c timer_setup(&nic->watchdog, e100_watchdog, 0); nic 2902 drivers/net/ethernet/intel/e100.c INIT_WORK(&nic->tx_timeout_task, e100_tx_timeout_task); nic 2904 drivers/net/ethernet/intel/e100.c if ((err = e100_alloc(nic))) { nic 2905 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot alloc driver memory, aborting\n"); nic 2909 drivers/net/ethernet/intel/e100.c if ((err = e100_eeprom_load(nic))) nic 2912 drivers/net/ethernet/intel/e100.c e100_phy_init(nic); nic 2914 drivers/net/ethernet/intel/e100.c memcpy(netdev->dev_addr, nic->eeprom, ETH_ALEN); nic 2917 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Invalid MAC address from EEPROM, aborting\n"); nic 2921 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Invalid MAC address from EEPROM, you MUST configure one.\n"); nic 2926 drivers/net/ethernet/intel/e100.c if ((nic->mac >= mac_82558_D101_A4) && nic 2927 drivers/net/ethernet/intel/e100.c (nic->eeprom[eeprom_id] & eeprom_id_wol)) { nic 2928 drivers/net/ethernet/intel/e100.c nic->flags |= wol_magic; nic 2937 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot register net device, aborting\n"); nic 2940 drivers/net/ethernet/intel/e100.c nic->cbs_pool = dma_pool_create(netdev->name, nic 2941 drivers/net/ethernet/intel/e100.c &nic->pdev->dev, nic 2942 drivers/net/ethernet/intel/e100.c nic->params.cbs.max * sizeof(struct cb), nic 2945 drivers/net/ethernet/intel/e100.c if (!nic->cbs_pool) { nic 2946 drivers/net/ethernet/intel/e100.c netif_err(nic, probe, nic->netdev, "Cannot create DMA pool, aborting\n"); nic 2950 drivers/net/ethernet/intel/e100.c netif_info(nic, probe, nic->netdev, nic 2960 drivers/net/ethernet/intel/e100.c e100_free(nic); nic 2962 drivers/net/ethernet/intel/e100.c pci_iounmap(pdev, nic->csr); nic 2977 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2979 drivers/net/ethernet/intel/e100.c e100_free(nic); nic 2980 drivers/net/ethernet/intel/e100.c pci_iounmap(pdev, nic->csr); nic 2981 drivers/net/ethernet/intel/e100.c dma_pool_destroy(nic->cbs_pool); nic 2994 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 2997 drivers/net/ethernet/intel/e100.c e100_down(nic); nic 3002 drivers/net/ethernet/intel/e100.c if ((nic->flags & wol_magic) | e100_asf(nic)) { nic 3004 drivers/net/ethernet/intel/e100.c if (nic->phy == phy_82552_v) { nic 3005 drivers/net/ethernet/intel/e100.c u16 smartspeed = mdio_read(netdev, nic->mii.phy_id, nic 3008 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, nic 3042 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 3050 drivers/net/ethernet/intel/e100.c if (nic->phy == phy_82552_v) { nic 3051 drivers/net/ethernet/intel/e100.c u16 smartspeed = mdio_read(netdev, nic->mii.phy_id, nic 3054 drivers/net/ethernet/intel/e100.c mdio_write(netdev, nic->mii.phy_id, nic 3061 drivers/net/ethernet/intel/e100.c e100_up(nic); nic 3084 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 3092 drivers/net/ethernet/intel/e100.c e100_down(nic); nic 3108 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 3119 drivers/net/ethernet/intel/e100.c e100_hw_reset(nic); nic 3120 drivers/net/ethernet/intel/e100.c e100_phy_init(nic); nic 3135 drivers/net/ethernet/intel/e100.c struct nic *nic = netdev_priv(netdev); nic 3143 drivers/net/ethernet/intel/e100.c mod_timer(&nic->watchdog, jiffies); nic 563 drivers/net/ethernet/neterion/s2io.c static int init_shared_mem(struct s2io_nic *nic) nic 571 drivers/net/ethernet/neterion/s2io.c struct net_device *dev = nic->dev; nic 574 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 575 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 635 drivers/net/ethernet/neterion/s2io.c fifo->nic = nic; nic 643 drivers/net/ethernet/neterion/s2io.c tmp_v = pci_alloc_consistent(nic->pdev, nic 661 drivers/net/ethernet/neterion/s2io.c tmp_v = pci_alloc_consistent(nic->pdev, nic 700 drivers/net/ethernet/neterion/s2io.c if (rx_cfg->num_rxd % (rxd_count[nic->rxd_mode] + 1)) { nic 708 drivers/net/ethernet/neterion/s2io.c (rxd_count[nic->rxd_mode] + 1); nic 711 drivers/net/ethernet/neterion/s2io.c if (nic->rxd_mode == RXD_MODE_1) nic 726 drivers/net/ethernet/neterion/s2io.c ring->nic = nic; nic 729 drivers/net/ethernet/neterion/s2io.c blk_cnt = rx_cfg->num_rxd / (rxd_count[nic->rxd_mode] + 1); nic 737 drivers/net/ethernet/neterion/s2io.c tmp_v_addr = pci_alloc_consistent(nic->pdev, size, nic 752 drivers/net/ethernet/neterion/s2io.c rxd_count[nic->rxd_mode]; nic 759 drivers/net/ethernet/neterion/s2io.c for (l = 0; l < rxd_count[nic->rxd_mode]; l++) { nic 762 drivers/net/ethernet/neterion/s2io.c (rxd_size[nic->rxd_mode] * l); nic 765 drivers/net/ethernet/neterion/s2io.c (rxd_size[nic->rxd_mode] * l); nic 783 drivers/net/ethernet/neterion/s2io.c if (nic->rxd_mode == RXD_MODE_3B) { nic 793 drivers/net/ethernet/neterion/s2io.c (rxd_count[nic->rxd_mode] + 1); nic 803 drivers/net/ethernet/neterion/s2io.c (rxd_count[nic->rxd_mode] + 1); nic 808 drivers/net/ethernet/neterion/s2io.c while (k != rxd_count[nic->rxd_mode]) { nic 838 drivers/net/ethernet/neterion/s2io.c pci_alloc_consistent(nic->pdev, size, nic 856 drivers/net/ethernet/neterion/s2io.c dev_name(&nic->pdev->dev), (unsigned long long)tmp_p_addr); nic 868 drivers/net/ethernet/neterion/s2io.c static void free_shared_mem(struct s2io_nic *nic) nic 881 drivers/net/ethernet/neterion/s2io.c if (!nic) nic 884 drivers/net/ethernet/neterion/s2io.c dev = nic->dev; nic 886 drivers/net/ethernet/neterion/s2io.c config = &nic->config; nic 887 drivers/net/ethernet/neterion/s2io.c mac_control = &nic->mac_control; nic 909 drivers/net/ethernet/neterion/s2io.c pci_free_consistent(nic->pdev, PAGE_SIZE, nic 918 drivers/net/ethernet/neterion/s2io.c pci_free_consistent(nic->pdev, PAGE_SIZE, nic 942 drivers/net/ethernet/neterion/s2io.c pci_free_consistent(nic->pdev, size, nic 947 drivers/net/ethernet/neterion/s2io.c rxd_count[nic->rxd_mode]; nic 951 drivers/net/ethernet/neterion/s2io.c if (nic->rxd_mode == RXD_MODE_3B) { nic 958 drivers/net/ethernet/neterion/s2io.c (rxd_count[nic->rxd_mode] + 1); nic 963 drivers/net/ethernet/neterion/s2io.c while (k != rxd_count[nic->rxd_mode]) { nic 975 drivers/net/ethernet/neterion/s2io.c (rxd_count[nic->rxd_mode] + 1); nic 983 drivers/net/ethernet/neterion/s2io.c for (i = 0; i < nic->config.tx_fifo_num; i++) { nic 996 drivers/net/ethernet/neterion/s2io.c pci_free_consistent(nic->pdev, nic 1007 drivers/net/ethernet/neterion/s2io.c static int s2io_verify_pci_mode(struct s2io_nic *nic) nic 1009 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1041 drivers/net/ethernet/neterion/s2io.c static int s2io_print_pci_mode(struct s2io_nic *nic) nic 1043 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1046 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 1057 drivers/net/ethernet/neterion/s2io.c if (s2io_on_nec_bridge(nic->pdev)) { nic 1059 drivers/net/ethernet/neterion/s2io.c nic->dev->name); nic 1094 drivers/net/ethernet/neterion/s2io.c nic->dev->name, val64 & PCI_MODE_32_BITS ? 32 : 64, pcimode); nic 1109 drivers/net/ethernet/neterion/s2io.c static int init_tti(struct s2io_nic *nic, int link) nic 1111 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1114 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 1122 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 1123 drivers/net/ethernet/neterion/s2io.c int count = (nic->config.bus_speed * 125)/2; nic 1137 drivers/net/ethernet/neterion/s2io.c if (nic->config.intr_type == MSI_X) { nic 1143 drivers/net/ethernet/neterion/s2io.c if ((nic->config.tx_steering_type == nic 1146 drivers/net/ethernet/neterion/s2io.c (i >= nic->udp_fifo_idx) && nic 1147 drivers/net/ethernet/neterion/s2io.c (i < (nic->udp_fifo_idx + nic 1148 drivers/net/ethernet/neterion/s2io.c nic->total_udp_fifos))) nic 1185 drivers/net/ethernet/neterion/s2io.c static int init_nic(struct s2io_nic *nic) nic 1187 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1188 drivers/net/ethernet/neterion/s2io.c struct net_device *dev = nic->dev; nic 1196 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 1197 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 1200 drivers/net/ethernet/neterion/s2io.c if (s2io_set_swapper(nic)) { nic 1208 drivers/net/ethernet/neterion/s2io.c if (nic->device_type & XFRAME_II_DEVICE) { nic 1224 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 1253 drivers/net/ethernet/neterion/s2io.c if (nic->device_type & XFRAME_II_DEVICE) { nic 1319 drivers/net/ethernet/neterion/s2io.c if ((nic->device_type == XFRAME_I_DEVICE) && (nic->pdev->revision < 4)) nic 1351 drivers/net/ethernet/neterion/s2io.c if (nic->device_type & XFRAME_II_DEVICE) nic 1632 drivers/net/ethernet/neterion/s2io.c if (rts_ds_steer(nic, i, 0) == FAILURE) { nic 1643 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 1662 drivers/net/ethernet/neterion/s2io.c if (SUCCESS != init_tti(nic, nic->last_link_state)) nic 1666 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 1671 drivers/net/ethernet/neterion/s2io.c int count = (nic->config.bus_speed * 125)/4; nic 1684 drivers/net/ethernet/neterion/s2io.c if (nic->config.intr_type == MSI_X) nic 1742 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) nic 1757 drivers/net/ethernet/neterion/s2io.c val64 |= RMAC_PAUSE_HG_PTIME(nic->mac_control.rmac_pause_time); nic 1769 drivers/net/ethernet/neterion/s2io.c nic->mac_control.mc_pause_threshold_q0q3) nic 1777 drivers/net/ethernet/neterion/s2io.c nic->mac_control.mc_pause_threshold_q4q7) nic 1790 drivers/net/ethernet/neterion/s2io.c if (nic->config.bus_speed == 266) { nic 1800 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 1808 drivers/net/ethernet/neterion/s2io.c if (strstr(nic->product_name, "CX4")) { nic 1818 drivers/net/ethernet/neterion/s2io.c static int s2io_link_fault_indication(struct s2io_nic *nic) nic 1820 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) nic 1848 drivers/net/ethernet/neterion/s2io.c static void en_dis_err_alarms(struct s2io_nic *nic, u16 mask, int flag) nic 1850 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1947 drivers/net/ethernet/neterion/s2io.c if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) nic 1969 drivers/net/ethernet/neterion/s2io.c nic->general_int_mask = gen_int_mask; nic 1972 drivers/net/ethernet/neterion/s2io.c nic->general_int_mask = 0; nic 1986 drivers/net/ethernet/neterion/s2io.c static void en_dis_able_nic_intrs(struct s2io_nic *nic, u16 mask, int flag) nic 1988 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 1991 drivers/net/ethernet/neterion/s2io.c intr_mask = nic->general_int_mask; nic 2005 drivers/net/ethernet/neterion/s2io.c if (s2io_link_fault_indication(nic) == nic 2062 drivers/net/ethernet/neterion/s2io.c nic->general_int_mask = readq(&bar0->general_int_mask); nic 2202 drivers/net/ethernet/neterion/s2io.c static int start_nic(struct s2io_nic *nic) nic 2204 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 2205 drivers/net/ethernet/neterion/s2io.c struct net_device *dev = nic->dev; nic 2208 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 2209 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 2219 drivers/net/ethernet/neterion/s2io.c if (nic->rxd_mode == RXD_MODE_1) nic 2223 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) nic 2230 drivers/net/ethernet/neterion/s2io.c if (nic->rxd_mode == RXD_MODE_3B) { nic 2241 drivers/net/ethernet/neterion/s2io.c nic->vlan_strip_flag = 0; nic 2266 drivers/net/ethernet/neterion/s2io.c if (!verify_xena_quiescence(nic)) { nic 2286 drivers/net/ethernet/neterion/s2io.c if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) { nic 2291 drivers/net/ethernet/neterion/s2io.c schedule_work(&nic->set_link_task); nic 2294 drivers/net/ethernet/neterion/s2io.c subid = nic->pdev->subsystem_device; nic 2296 drivers/net/ethernet/neterion/s2io.c (nic->device_type == XFRAME_I_DEVICE)) { nic 2312 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = fifo_data->nic; nic 2319 drivers/net/ethernet/neterion/s2io.c pci_unmap_single(nic->pdev, (dma_addr_t)txds->Buffer_Pointer, nic 2329 drivers/net/ethernet/neterion/s2io.c pci_unmap_single(nic->pdev, (dma_addr_t)txds->Buffer_Pointer, nic 2338 drivers/net/ethernet/neterion/s2io.c pci_unmap_page(nic->pdev, nic 2355 drivers/net/ethernet/neterion/s2io.c static void free_tx_buffers(struct s2io_nic *nic) nic 2357 drivers/net/ethernet/neterion/s2io.c struct net_device *dev = nic->dev; nic 2362 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 2363 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 2401 drivers/net/ethernet/neterion/s2io.c static void stop_nic(struct s2io_nic *nic) nic 2403 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 2408 drivers/net/ethernet/neterion/s2io.c en_dis_err_alarms(nic, ENA_ALL_INTRS, DISABLE_INTRS); nic 2411 drivers/net/ethernet/neterion/s2io.c en_dis_able_nic_intrs(nic, interruptible, DISABLE_INTRS); nic 2441 drivers/net/ethernet/neterion/s2io.c static int fill_rx_buffers(struct s2io_nic *nic, struct ring_info *ring, nic 2455 drivers/net/ethernet/neterion/s2io.c struct swStat *swstats = &ring->nic->mac_control.stats_info->sw_stat; nic 2504 drivers/net/ethernet/neterion/s2io.c skb = netdev_alloc_skb(nic->dev, size); nic 2527 drivers/net/ethernet/neterion/s2io.c if (pci_dma_mapping_error(nic->pdev, nic 2563 drivers/net/ethernet/neterion/s2io.c if (pci_dma_mapping_error(nic->pdev, nic 2585 drivers/net/ethernet/neterion/s2io.c if (pci_dma_mapping_error(nic->pdev, nic 2596 drivers/net/ethernet/neterion/s2io.c if (pci_dma_mapping_error(nic->pdev, nic 2732 drivers/net/ethernet/neterion/s2io.c static int s2io_chk_rx_buffers(struct s2io_nic *nic, struct ring_info *ring) nic 2734 drivers/net/ethernet/neterion/s2io.c if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) { nic 2761 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = netdev_priv(dev); nic 2762 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 2765 drivers/net/ethernet/neterion/s2io.c if (unlikely(!is_s2io_card_up(nic))) nic 2769 drivers/net/ethernet/neterion/s2io.c s2io_chk_rx_buffers(nic, ring); nic 2785 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = container_of(napi, struct s2io_nic, napi); nic 2788 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 2790 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 2791 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 2793 drivers/net/ethernet/neterion/s2io.c if (unlikely(!is_s2io_card_up(nic))) nic 2799 drivers/net/ethernet/neterion/s2io.c s2io_chk_rx_buffers(nic, ring); nic 2826 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = netdev_priv(dev); nic 2827 drivers/net/ethernet/neterion/s2io.c const int irq = nic->pdev->irq; nic 2828 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 2831 drivers/net/ethernet/neterion/s2io.c struct config_param *config = &nic->config; nic 2832 drivers/net/ethernet/neterion/s2io.c struct mac_info *mac_control = &nic->mac_control; nic 2834 drivers/net/ethernet/neterion/s2io.c if (pci_channel_offline(nic->pdev)) nic 2859 drivers/net/ethernet/neterion/s2io.c if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) { nic 2956 drivers/net/ethernet/neterion/s2io.c if (ring_data->nic->config.napi) { nic 2971 drivers/net/ethernet/neterion/s2io.c update_L3L4_header(ring_data->nic, lro); nic 2994 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = fifo_data->nic; nic 3001 drivers/net/ethernet/neterion/s2io.c struct stat_block *stats = nic->mac_control.stats_info; nic 3066 drivers/net/ethernet/neterion/s2io.c s2io_wake_tx_queue(fifo_data, pkt_cnt, nic->config.multiq); nic 3646 drivers/net/ethernet/neterion/s2io.c static int wait_for_msix_trans(struct s2io_nic *nic, int i) nic 3648 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 3667 drivers/net/ethernet/neterion/s2io.c static void restore_xmsi_data(struct s2io_nic *nic) nic 3669 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 3673 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_I_DEVICE) nic 3678 drivers/net/ethernet/neterion/s2io.c writeq(nic->msix_info[i].addr, &bar0->xmsi_address); nic 3679 drivers/net/ethernet/neterion/s2io.c writeq(nic->msix_info[i].data, &bar0->xmsi_data); nic 3682 drivers/net/ethernet/neterion/s2io.c if (wait_for_msix_trans(nic, msix_index)) nic 3688 drivers/net/ethernet/neterion/s2io.c static void store_xmsi_data(struct s2io_nic *nic) nic 3690 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 3694 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_I_DEVICE) nic 3702 drivers/net/ethernet/neterion/s2io.c if (wait_for_msix_trans(nic, msix_index)) { nic 3710 drivers/net/ethernet/neterion/s2io.c nic->msix_info[i].addr = addr; nic 3711 drivers/net/ethernet/neterion/s2io.c nic->msix_info[i].data = data; nic 3716 drivers/net/ethernet/neterion/s2io.c static int s2io_enable_msi_x(struct s2io_nic *nic) nic 3718 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 3723 drivers/net/ethernet/neterion/s2io.c struct stat_block *stats = nic->mac_control.stats_info; nic 3726 drivers/net/ethernet/neterion/s2io.c size = nic->num_entries * sizeof(struct msix_entry); nic 3727 drivers/net/ethernet/neterion/s2io.c nic->entries = kzalloc(size, GFP_KERNEL); nic 3728 drivers/net/ethernet/neterion/s2io.c if (!nic->entries) { nic 3736 drivers/net/ethernet/neterion/s2io.c size = nic->num_entries * sizeof(struct s2io_msix_entry); nic 3737 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries = kzalloc(size, GFP_KERNEL); nic 3738 drivers/net/ethernet/neterion/s2io.c if (!nic->s2io_entries) { nic 3742 drivers/net/ethernet/neterion/s2io.c kfree(nic->entries); nic 3744 drivers/net/ethernet/neterion/s2io.c += (nic->num_entries * sizeof(struct msix_entry)); nic 3749 drivers/net/ethernet/neterion/s2io.c nic->entries[0].entry = 0; nic 3750 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[0].entry = 0; nic 3751 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[0].in_use = MSIX_FLG; nic 3752 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[0].type = MSIX_ALARM_TYPE; nic 3753 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[0].arg = &nic->mac_control.fifos; nic 3755 drivers/net/ethernet/neterion/s2io.c for (i = 1; i < nic->num_entries; i++) { nic 3756 drivers/net/ethernet/neterion/s2io.c nic->entries[i].entry = ((i - 1) * 8) + 1; nic 3757 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[i].entry = ((i - 1) * 8) + 1; nic 3758 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[i].arg = NULL; nic 3759 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[i].in_use = 0; nic 3763 drivers/net/ethernet/neterion/s2io.c for (j = 0; j < nic->config.rx_ring_num; j++) { nic 3765 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[j+1].arg = &nic->mac_control.rings[j]; nic 3766 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[j+1].type = MSIX_RING_TYPE; nic 3767 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries[j+1].in_use = MSIX_FLG; nic 3773 drivers/net/ethernet/neterion/s2io.c ret = pci_enable_msix_range(nic->pdev, nic->entries, nic 3774 drivers/net/ethernet/neterion/s2io.c nic->num_entries, nic->num_entries); nic 3778 drivers/net/ethernet/neterion/s2io.c kfree(nic->entries); nic 3779 drivers/net/ethernet/neterion/s2io.c swstats->mem_freed += nic->num_entries * nic 3781 drivers/net/ethernet/neterion/s2io.c kfree(nic->s2io_entries); nic 3782 drivers/net/ethernet/neterion/s2io.c swstats->mem_freed += nic->num_entries * nic 3784 drivers/net/ethernet/neterion/s2io.c nic->entries = NULL; nic 3785 drivers/net/ethernet/neterion/s2io.c nic->s2io_entries = NULL; nic 3793 drivers/net/ethernet/neterion/s2io.c pci_read_config_word(nic->pdev, 0x42, &msi_control); nic 3795 drivers/net/ethernet/neterion/s2io.c pci_write_config_word(nic->pdev, 0x42, msi_control); nic 4198 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *sp = ring->nic; nic 4226 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *sp = fifos->nic; nic 5671 drivers/net/ethernet/neterion/s2io.c static void s2io_vpd_read(struct s2io_nic *nic) nic 5677 drivers/net/ethernet/neterion/s2io.c struct swStat *swstats = &nic->mac_control.stats_info->sw_stat; nic 5679 drivers/net/ethernet/neterion/s2io.c if (nic->device_type == XFRAME_II_DEVICE) { nic 5680 drivers/net/ethernet/neterion/s2io.c strcpy(nic->product_name, "Xframe II 10GbE network adapter"); nic 5683 drivers/net/ethernet/neterion/s2io.c strcpy(nic->product_name, "Xframe I 10GbE network adapter"); nic 5686 drivers/net/ethernet/neterion/s2io.c strcpy(nic->serial_num, "NOT AVAILABLE"); nic 5696 drivers/net/ethernet/neterion/s2io.c pci_write_config_byte(nic->pdev, (vpd_addr + 2), i); nic 5697 drivers/net/ethernet/neterion/s2io.c pci_read_config_byte(nic->pdev, (vpd_addr + 2), &data); nic 5698 drivers/net/ethernet/neterion/s2io.c pci_write_config_byte(nic->pdev, (vpd_addr + 3), 0); nic 5701 drivers/net/ethernet/neterion/s2io.c pci_read_config_byte(nic->pdev, (vpd_addr + 3), &data); nic 5710 drivers/net/ethernet/neterion/s2io.c pci_read_config_dword(nic->pdev, (vpd_addr + 4), nic 5721 drivers/net/ethernet/neterion/s2io.c memcpy(nic->serial_num, nic 5724 drivers/net/ethernet/neterion/s2io.c memset(nic->serial_num+len, nic 5735 drivers/net/ethernet/neterion/s2io.c memcpy(nic->product_name, &vpd_data[3], len); nic 5736 drivers/net/ethernet/neterion/s2io.c nic->product_name[len] = 0; nic 6666 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *nic = container_of(work, struct s2io_nic, nic 6668 drivers/net/ethernet/neterion/s2io.c struct net_device *dev = nic->dev; nic 6669 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 6678 drivers/net/ethernet/neterion/s2io.c if (test_and_set_bit(__S2IO_STATE_LINK_TASK, &(nic->state))) { nic 6683 drivers/net/ethernet/neterion/s2io.c subid = nic->pdev->subsystem_device; nic 6684 drivers/net/ethernet/neterion/s2io.c if (s2io_link_fault_indication(nic) == MAC_RMAC_ERR_TIMER) { nic 6695 drivers/net/ethernet/neterion/s2io.c if (verify_xena_quiescence(nic)) { nic 6700 drivers/net/ethernet/neterion/s2io.c nic->device_type, subid)) { nic 6709 drivers/net/ethernet/neterion/s2io.c nic->device_enabled_once = true; nic 6714 drivers/net/ethernet/neterion/s2io.c s2io_stop_all_tx_queue(nic); nic 6720 drivers/net/ethernet/neterion/s2io.c s2io_link(nic, LINK_UP); nic 6722 drivers/net/ethernet/neterion/s2io.c if (CARDS_WITH_FAULTY_LINK_INDICATORS(nic->device_type, nic 6733 drivers/net/ethernet/neterion/s2io.c s2io_link(nic, LINK_DOWN); nic 6735 drivers/net/ethernet/neterion/s2io.c clear_bit(__S2IO_STATE_LINK_TASK, &(nic->state)); nic 7272 drivers/net/ethernet/neterion/s2io.c struct s2io_nic *sp = ring_data->nic; nic 7597 drivers/net/ethernet/neterion/s2io.c static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring) nic 7599 drivers/net/ethernet/neterion/s2io.c struct XENA_dev_config __iomem *bar0 = nic->bar0; nic 710 drivers/net/ethernet/neterion/s2io.h struct s2io_nic *nic; nic 788 drivers/net/ethernet/neterion/s2io.h struct s2io_nic *nic; nic 1062 drivers/net/ethernet/neterion/s2io.h static int init_nic(struct s2io_nic *nic); nic 1087 drivers/net/ethernet/neterion/s2io.h static void s2io_card_down(struct s2io_nic *nic); nic 1088 drivers/net/ethernet/neterion/s2io.h static int s2io_card_up(struct s2io_nic *nic); nic 1094 drivers/net/ethernet/neterion/s2io.h static void restore_xmsi_data(struct s2io_nic *nic); nic 1110 drivers/net/ethernet/neterion/s2io.h static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring); nic 2373 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c struct qlcnic_info *nic) nic 2389 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[1] = (nic->pci_func << 16); nic 2391 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[3] = nic->phys_port | (nic->switch_mode << 16); nic 2392 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[4] = nic->capabilities; nic 2393 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[5] = (nic->max_mac_filters & 0xFF) | ((nic->max_mtu) << 16); nic 2394 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[6] = (nic->max_tx_ques) | ((nic->max_rx_ques) << 16); nic 2395 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c cmd.req.arg[7] = (nic->min_tx_bw) | ((nic->max_tx_bw) << 16); nic 2466 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c u16 *nic, u16 *fcoe, u16 *iscsi) nic 2473 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c (*nic)++; nic 2495 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c u16 nic = 0, fcoe = 0, iscsi = 0; nic 2519 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c &nic, &fcoe, &iscsi); nic 2537 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c ahw->total_nic_func = nic; nic 2538 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c ahw->total_pci_func = nic + fcoe + iscsi; nic 900 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c struct qlcnic_info *nic) nic 919 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->pci_func = cpu_to_le16(nic->pci_func); nic 920 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->op_mode = cpu_to_le16(nic->op_mode); nic 921 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->phys_port = cpu_to_le16(nic->phys_port); nic 922 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->switch_mode = cpu_to_le16(nic->switch_mode); nic 923 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->capabilities = cpu_to_le32(nic->capabilities); nic 924 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->max_mac_filters = nic->max_mac_filters; nic 925 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->max_tx_ques = cpu_to_le16(nic->max_tx_ques); nic 926 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->max_rx_ques = cpu_to_le16(nic->max_rx_ques); nic 927 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->min_tx_bw = cpu_to_le16(nic->min_tx_bw); nic 928 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c nic_info->max_tx_bw = cpu_to_le16(nic->max_tx_bw); nic 936 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c cmd.req.arg[3] = ((nic->pci_func << 16) | nic_size); nic 960 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c u16 nic = 0, fcoe = 0, iscsi = 0; nic 991 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c &nic, &fcoe, &iscsi); nic 1006 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c ahw->total_nic_func = nic; nic 1007 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c ahw->total_pci_func = nic + fcoe + iscsi; nic 53 drivers/net/ethernet/sfc/ethtool.c EFX_ETHTOOL_STAT(field, nic, field, \ nic 53 drivers/net/ethernet/sfc/falcon/ethtool.c EF4_ETHTOOL_STAT(field, nic, field, \ nic 155 drivers/net/ethernet/sfc/falcon/nic.h int (*init) (struct ef4_nic *nic); nic 157 drivers/net/ethernet/sfc/falcon/nic.h void (*fini) (struct ef4_nic *nic); nic 159 drivers/net/ethernet/sfc/falcon/nic.h int (*monitor) (struct ef4_nic *nic); nic 363 drivers/net/ethernet/sgi/ioc3-eth.c u8 nic[14]; nic 385 drivers/net/ethernet/sgi/ioc3-eth.c nic[i] = nic_read_byte(mcr); nic 388 drivers/net/ethernet/sgi/ioc3-eth.c ip->dev->dev_addr[i - 2] = nic[i]; nic 99 drivers/net/ethernet/tehuti/tehuti.c struct pci_nic *nic = pci_get_drvdata(pdev); nic 107 drivers/net/ethernet/tehuti/tehuti.c nic->port_num == 1 ? "" : ", 2-Port"); nic 109 drivers/net/ethernet/tehuti/tehuti.c readl(nic->regs + SROM_VER), readl(nic->regs + FPGA_VER) & 0xFFF, nic 110 drivers/net/ethernet/tehuti/tehuti.c readl(nic->regs + FPGA_SEED), nic 115 drivers/net/ethernet/tehuti/tehuti.c static void print_fw_id(struct pci_nic *nic) nic 117 drivers/net/ethernet/tehuti/tehuti.c pr_info("fw 0x%x\n", readl(nic->regs + FW_VER)); nic 423 drivers/net/ethernet/tehuti/tehuti.c #define BDX_IRQ_TYPE ((priv->nic->irq_type == IRQ_MSI) ? 0 : IRQF_SHARED) nic 622 drivers/net/ethernet/tehuti/tehuti.c print_fw_id(priv->nic); nic 633 drivers/net/ethernet/tehuti/tehuti.c return (offset > (u32) (BDX_REGS_SIZE / priv->nic->port_num)) ? nic 1904 drivers/net/ethernet/tehuti/tehuti.c struct pci_nic *nic; nic 1908 drivers/net/ethernet/tehuti/tehuti.c nic = vmalloc(sizeof(*nic)); nic 1909 drivers/net/ethernet/tehuti/tehuti.c if (!nic) nic 1948 drivers/net/ethernet/tehuti/tehuti.c nic->regs = ioremap(pciaddr, regionSize); nic 1949 drivers/net/ethernet/tehuti/tehuti.c if (!nic->regs) { nic 1960 drivers/net/ethernet/tehuti/tehuti.c pci_set_drvdata(pdev, nic); nic 1963 drivers/net/ethernet/tehuti/tehuti.c nic->port_num = 2; nic 1965 drivers/net/ethernet/tehuti/tehuti.c nic->port_num = 1; nic 1969 drivers/net/ethernet/tehuti/tehuti.c bdx_hw_reset_direct(nic->regs); nic 1971 drivers/net/ethernet/tehuti/tehuti.c nic->irq_type = IRQ_INTX; nic 1973 drivers/net/ethernet/tehuti/tehuti.c if ((readl(nic->regs + FPGA_VER) & 0xFFF) >= 378) { nic 1978 drivers/net/ethernet/tehuti/tehuti.c nic->irq_type = IRQ_MSI; nic 1984 drivers/net/ethernet/tehuti/tehuti.c for (port = 0; port < nic->port_num; port++) { nic 2010 drivers/net/ethernet/tehuti/tehuti.c priv = nic->priv[port] = netdev_priv(ndev); nic 2012 drivers/net/ethernet/tehuti/tehuti.c priv->pBdxRegs = nic->regs + port * 0x8000; nic 2016 drivers/net/ethernet/tehuti/tehuti.c priv->nic = nic; nic 2021 drivers/net/ethernet/tehuti/tehuti.c if ((readl(nic->regs + FPGA_VER) & 0xFFF) == 308) { nic 2073 drivers/net/ethernet/tehuti/tehuti.c iounmap(nic->regs); nic 2079 drivers/net/ethernet/tehuti/tehuti.c vfree(nic); nic 2402 drivers/net/ethernet/tehuti/tehuti.c struct pci_nic *nic = pci_get_drvdata(pdev); nic 2406 drivers/net/ethernet/tehuti/tehuti.c for (port = 0; port < nic->port_num; port++) { nic 2407 drivers/net/ethernet/tehuti/tehuti.c ndev = nic->priv[port]->ndev; nic 2414 drivers/net/ethernet/tehuti/tehuti.c if (nic->irq_type == IRQ_MSI) nic 2418 drivers/net/ethernet/tehuti/tehuti.c iounmap(nic->regs); nic 2421 drivers/net/ethernet/tehuti/tehuti.c vfree(nic); nic 272 drivers/net/ethernet/tehuti/tehuti.h struct pci_nic *nic; nic 2893 drivers/net/wireless/intel/ipw2x00/ipw2100.c (u32) (txq->nic + i * sizeof(struct ipw2100_bd)), nic 2901 drivers/net/wireless/intel/ipw2x00/ipw2100.c (u32) (txq->nic + i * nic 3024 drivers/net/wireless/intel/ipw2x00/ipw2100.c (u32) (txq->nic + txq->next * nic 4325 drivers/net/wireless/intel/ipw2x00/ipw2100.c q->drv = pci_zalloc_consistent(priv->pci_dev, q->size, &q->nic); nic 4343 drivers/net/wireless/intel/ipw2x00/ipw2100.c priv->status_queue.nic); nic 4359 drivers/net/wireless/intel/ipw2x00/ipw2100.c q->drv = pci_zalloc_consistent(priv->pci_dev, q->size, &q->nic); nic 4379 drivers/net/wireless/intel/ipw2x00/ipw2100.c pci_free_consistent(priv->pci_dev, q->size, q->drv, q->nic); nic 4393 drivers/net/wireless/intel/ipw2x00/ipw2100.c (u32) q->nic); nic 4395 drivers/net/wireless/intel/ipw2x00/ipw2100.c write_register(priv->net_dev, base, q->nic); nic 4645 drivers/net/wireless/intel/ipw2x00/ipw2100.c priv->status_queue.nic); nic 170 drivers/net/wireless/intel/ipw2x00/ipw2100.h dma_addr_t nic; nic 219 drivers/net/wireless/intel/ipw2x00/ipw2100.h dma_addr_t nic; nic 6064 drivers/net/wireless/ti/wlcore/main.c static void wl12xx_derive_mac_addresses(struct wl1271 *wl, u32 oui, u32 nic) nic 6069 drivers/net/wireless/ti/wlcore/main.c oui, nic); nic 6071 drivers/net/wireless/ti/wlcore/main.c if (nic + WLCORE_NUM_MAC_ADDRESSES - wl->num_mac_addr > 0xffffff) nic 6078 drivers/net/wireless/ti/wlcore/main.c wl->addresses[i].addr[3] = (u8)(nic >> 16); nic 6079 drivers/net/wireless/ti/wlcore/main.c wl->addresses[i].addr[4] = (u8)(nic >> 8); nic 6080 drivers/net/wireless/ti/wlcore/main.c wl->addresses[i].addr[5] = (u8) nic; nic 6081 drivers/net/wireless/ti/wlcore/main.c nic++; nic 797 drivers/scsi/be2iscsi/be_mgmt.c struct be_cmd_get_nic_conf_resp *nic) nic 804 drivers/scsi/be2iscsi/be_mgmt.c sizeof(*nic)); nic 809 drivers/scsi/be2iscsi/be_mgmt.c nic, sizeof(*nic)); nic 2233 drivers/scsi/csiostor/csio_hw.c if (hdr1->chip == hdr2->chip && SAME_INTF(nic) && SAME_INTF(vnic) && nic 82 drivers/scsi/iscsi_boot_sysfs.c iscsi_boot_rd_attr(tgt_nic, nic-assoc, ISCSI_BOOT_TGT_NIC_ASSOC); nic 71 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = arg; nic 73 drivers/staging/gdm724x/gdm_lte.c if (netif_queue_stopped(nic->netdev)) nic 74 drivers/staging/gdm724x/gdm_lte.c netif_wake_queue(nic->netdev); nic 77 drivers/staging/gdm724x/gdm_lte.c static int gdm_lte_rx(struct sk_buff *skb, struct nic *nic, int nic_type) nic 83 drivers/staging/gdm724x/gdm_lte.c nic->stats.rx_dropped++; nic 85 drivers/staging/gdm724x/gdm_lte.c nic->stats.rx_packets++; nic 86 drivers/staging/gdm724x/gdm_lte.c nic->stats.rx_bytes += skb->len + ETH_HLEN; nic 94 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(skb_in->dev); nic 151 drivers/staging/gdm724x/gdm_lte.c memcpy(mac_header_data + ETH_ALEN, nic->src_mac_addr, ETH_ALEN); nic 168 drivers/staging/gdm724x/gdm_lte.c gdm_lte_rx(skb_out, nic, nic_type); nic 214 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(skb_in->dev); nic 312 drivers/staging/gdm724x/gdm_lte.c memcpy(mac_header_data + ETH_ALEN, nic->src_mac_addr, ETH_ALEN); nic 330 drivers/staging/gdm724x/gdm_lte.c gdm_lte_rx(skb_out, nic, nic_type); nic 337 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(dev); nic 347 drivers/staging/gdm724x/gdm_lte.c nic_type = 0x00000010 | nic->nic_id; nic 403 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(dev); nic 440 drivers/staging/gdm724x/gdm_lte.c nic->vlan_id = ntohs(vlan_eth->h_vlan_TCI) & VLAN_VID_MASK; nic 444 drivers/staging/gdm724x/gdm_lte.c nic->vlan_id = 0; nic 467 drivers/staging/gdm724x/gdm_lte.c ret = nic->phy_dev->send_sdu_func(nic->phy_dev->priv_dev, nic 469 drivers/staging/gdm724x/gdm_lte.c nic->pdn_table.dft_eps_id, 0, nic 470 drivers/staging/gdm724x/gdm_lte.c tx_complete, nic, idx, nic 485 drivers/staging/gdm724x/gdm_lte.c nic->stats.tx_dropped++; nic 487 drivers/staging/gdm724x/gdm_lte.c nic->stats.tx_packets++; nic 488 drivers/staging/gdm724x/gdm_lte.c nic->stats.tx_bytes += data_len; nic 497 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(dev); nic 499 drivers/staging/gdm724x/gdm_lte.c return &nic->stats; nic 504 drivers/staging/gdm724x/gdm_lte.c struct phy_dev *phy_dev = ((struct nic *)netdev_priv(dev))->phy_dev; nic 522 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(dev); nic 524 drivers/staging/gdm724x/gdm_lte.c nic->phy_dev->send_hci_func(nic->phy_dev->priv_dev, msg, len, NULL, nic 565 drivers/staging/gdm724x/gdm_lte.c struct nic *nic; nic 574 drivers/staging/gdm724x/gdm_lte.c nic = netdev_priv(dev); nic 617 drivers/staging/gdm724x/gdm_lte.c ether_addr_copy(nic->dest_mac_addr, addr); nic 621 drivers/staging/gdm724x/gdm_lte.c if (nic->vlan_id > 0) { nic 630 drivers/staging/gdm724x/gdm_lte.c ether_addr_copy(mac_header_data, nic->dest_mac_addr); nic 631 drivers/staging/gdm724x/gdm_lte.c memcpy(mac_header_data + ETH_ALEN, nic->src_mac_addr, ETH_ALEN); nic 633 drivers/staging/gdm724x/gdm_lte.c vlan_eth.h_vlan_TCI = htons(nic->vlan_id); nic 670 drivers/staging/gdm724x/gdm_lte.c gdm_lte_rx(skb, nic, nic_type); nic 721 drivers/staging/gdm724x/gdm_lte.c struct nic *nic = netdev_priv(dev); nic 723 drivers/staging/gdm724x/gdm_lte.c u8 ed = nic->phy_dev->get_endian(nic->phy_dev->priv_dev); nic 726 drivers/staging/gdm724x/gdm_lte.c memset(&nic->pdn_table, 0x00, sizeof(struct pdn_table)); nic 732 drivers/staging/gdm724x/gdm_lte.c nic->pdn_table.activate = pdn_table->activate; nic 733 drivers/staging/gdm724x/gdm_lte.c nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu(ed, pdn_table->dft_eps_id); nic 734 drivers/staging/gdm724x/gdm_lte.c nic->pdn_table.nic_type = gdm_dev32_to_cpu(ed, pdn_table->nic_type); nic 737 drivers/staging/gdm724x/gdm_lte.c nic->pdn_table.nic_type); nic 858 drivers/staging/gdm724x/gdm_lte.c struct nic *nic; nic 871 drivers/staging/gdm724x/gdm_lte.c net = alloc_netdev(sizeof(struct nic), pdn_dev_name, nic 881 drivers/staging/gdm724x/gdm_lte.c nic = netdev_priv(net); nic 882 drivers/staging/gdm724x/gdm_lte.c memset(nic, 0, sizeof(struct nic)); nic 883 drivers/staging/gdm724x/gdm_lte.c nic->netdev = net; nic 884 drivers/staging/gdm724x/gdm_lte.c nic->phy_dev = phy_dev; nic 885 drivers/staging/gdm724x/gdm_lte.c nic->nic_id = index; nic 888 drivers/staging/gdm724x/gdm_lte.c nic->src_mac_addr, nic 889 drivers/staging/gdm724x/gdm_lte.c nic->dest_mac_addr, nic 34 drivers/staging/gdm724x/gdm_lte.h struct nic; nic 243 drivers/staging/wilc1000/wilc_wlan.h int (*enable_interrupt)(struct wilc *nic); nic 244 drivers/staging/wilc1000/wilc_wlan.h void (*disable_interrupt)(struct wilc *nic);