Lines Matching refs:adapter
144 void t4vf_os_link_changed(struct adapter *adapter, int pidx, int link_ok) in t4vf_os_link_changed() argument
146 struct net_device *dev = adapter->port[pidx]; in t4vf_os_link_changed()
217 void t4vf_os_portmod_changed(struct adapter *adapter, int pidx) in t4vf_os_portmod_changed() argument
222 const struct net_device *dev = adapter->port[pidx]; in t4vf_os_portmod_changed()
226 dev_info(adapter->pdev_dev, "%s: port module unplugged\n", in t4vf_os_portmod_changed()
229 dev_info(adapter->pdev_dev, "%s: %s port module inserted\n", in t4vf_os_portmod_changed()
232 dev_info(adapter->pdev_dev, "%s: unsupported optical port " in t4vf_os_portmod_changed()
235 dev_info(adapter->pdev_dev, "%s: unknown port module inserted," in t4vf_os_portmod_changed()
238 dev_info(adapter->pdev_dev, "%s: transceiver module error\n", in t4vf_os_portmod_changed()
241 dev_info(adapter->pdev_dev, "%s: unknown module type %d " in t4vf_os_portmod_changed()
266 ret = t4vf_set_rxmode(pi->adapter, pi->viid, dev->mtu, -1, -1, -1, 1, in link_start()
269 ret = t4vf_change_mac(pi->adapter, pi->viid, in link_start()
283 ret = t4vf_enable_vi(pi->adapter, pi->viid, true, true); in link_start()
290 static void name_msix_vecs(struct adapter *adapter) in name_msix_vecs() argument
292 int namelen = sizeof(adapter->msix_info[0].desc) - 1; in name_msix_vecs()
298 snprintf(adapter->msix_info[MSIX_FW].desc, namelen, in name_msix_vecs()
299 "%s-FWeventq", adapter->name); in name_msix_vecs()
300 adapter->msix_info[MSIX_FW].desc[namelen] = 0; in name_msix_vecs()
305 for_each_port(adapter, pidx) { in name_msix_vecs()
306 struct net_device *dev = adapter->port[pidx]; in name_msix_vecs()
311 snprintf(adapter->msix_info[msi].desc, namelen, in name_msix_vecs()
313 adapter->msix_info[msi].desc[namelen] = 0; in name_msix_vecs()
321 static int request_msix_queue_irqs(struct adapter *adapter) in request_msix_queue_irqs() argument
323 struct sge *s = &adapter->sge; in request_msix_queue_irqs()
329 err = request_irq(adapter->msix_info[MSIX_FW].vec, t4vf_sge_intr_msix, in request_msix_queue_irqs()
330 0, adapter->msix_info[MSIX_FW].desc, &s->fw_evtq); in request_msix_queue_irqs()
339 err = request_irq(adapter->msix_info[msi].vec, in request_msix_queue_irqs()
341 adapter->msix_info[msi].desc, in request_msix_queue_irqs()
351 free_irq(adapter->msix_info[--msi].vec, &s->ethrxq[rxq].rspq); in request_msix_queue_irqs()
352 free_irq(adapter->msix_info[MSIX_FW].vec, &s->fw_evtq); in request_msix_queue_irqs()
359 static void free_msix_queue_irqs(struct adapter *adapter) in free_msix_queue_irqs() argument
361 struct sge *s = &adapter->sge; in free_msix_queue_irqs()
364 free_irq(adapter->msix_info[MSIX_FW].vec, &s->fw_evtq); in free_msix_queue_irqs()
367 free_irq(adapter->msix_info[msi++].vec, in free_msix_queue_irqs()
382 t4_write_reg(rspq->adapter, T4VF_SGE_BASE_ADDR + SGE_VF_GTS, in qenable()
391 static void enable_rx(struct adapter *adapter) in enable_rx() argument
394 struct sge *s = &adapter->sge; in enable_rx()
404 if (adapter->flags & USING_MSI) in enable_rx()
405 t4_write_reg(adapter, T4VF_SGE_BASE_ADDR + SGE_VF_GTS, in enable_rx()
415 static void quiesce_rx(struct adapter *adapter) in quiesce_rx() argument
417 struct sge *s = &adapter->sge; in quiesce_rx()
434 struct adapter *adapter = rspq->adapter; in fwevtq_handler() local
445 t4vf_handle_fw_rpl(adapter, fw_msg->data); in fwevtq_handler()
455 dev_err(adapter->pdev_dev, "unexpected FW4/CPL %#x on FW event queue\n" in fwevtq_handler()
475 struct sge *s = &adapter->sge; in fwevtq_handler()
489 dev_err(adapter->pdev_dev, in fwevtq_handler()
495 dev_err(adapter->pdev_dev, in fwevtq_handler()
501 dev_err(adapter->pdev_dev, in fwevtq_handler()
517 dev_err(adapter->pdev_dev, in fwevtq_handler()
529 static int setup_sge_queues(struct adapter *adapter) in setup_sge_queues() argument
531 struct sge *s = &adapter->sge; in setup_sge_queues()
548 if (adapter->flags & USING_MSI) { in setup_sge_queues()
549 err = t4vf_sge_alloc_rxq(adapter, &s->intrq, false, in setup_sge_queues()
550 adapter->port[0], 0, NULL, NULL); in setup_sge_queues()
558 err = t4vf_sge_alloc_rxq(adapter, &s->fw_evtq, true, adapter->port[0], in setup_sge_queues()
570 for_each_port(adapter, pidx) { in setup_sge_queues()
571 struct net_device *dev = adapter->port[pidx]; in setup_sge_queues()
578 err = t4vf_sge_alloc_rxq(adapter, &rxq->rspq, false, in setup_sge_queues()
584 err = t4vf_sge_alloc_eth_txq(adapter, txq, dev, in setup_sge_queues()
601 for_each_port(adapter, pidx) { in setup_sge_queues()
602 struct net_device *dev = adapter->port[pidx]; in setup_sge_queues()
628 t4vf_free_sge_resources(adapter); in setup_sge_queues()
640 static int setup_rss(struct adapter *adapter) in setup_rss() argument
644 for_each_port(adapter, pidx) { in setup_rss()
645 struct port_info *pi = adap2pinfo(adapter, pidx); in setup_rss()
646 struct sge_eth_rxq *rxq = &adapter->sge.ethrxq[pi->first_qset]; in setup_rss()
653 err = t4vf_config_rss_range(adapter, pi->viid, in setup_rss()
661 switch (adapter->params.rss.mode) { in setup_rss()
670 if (!adapter->params.rss.u.basicvirtual.tnlalllookup) { in setup_rss()
672 err = t4vf_read_rss_vi_config(adapter, in setup_rss()
679 err = t4vf_write_rss_vi_config(adapter, in setup_rss()
699 static int adapter_up(struct adapter *adapter) in adapter_up() argument
708 if ((adapter->flags & FULL_INIT_DONE) == 0) { in adapter_up()
709 err = setup_sge_queues(adapter); in adapter_up()
712 err = setup_rss(adapter); in adapter_up()
714 t4vf_free_sge_resources(adapter); in adapter_up()
718 if (adapter->flags & USING_MSIX) in adapter_up()
719 name_msix_vecs(adapter); in adapter_up()
720 adapter->flags |= FULL_INIT_DONE; in adapter_up()
726 BUG_ON((adapter->flags & (USING_MSIX|USING_MSI)) == 0); in adapter_up()
727 if (adapter->flags & USING_MSIX) in adapter_up()
728 err = request_msix_queue_irqs(adapter); in adapter_up()
730 err = request_irq(adapter->pdev->irq, in adapter_up()
731 t4vf_intr_handler(adapter), 0, in adapter_up()
732 adapter->name, adapter); in adapter_up()
734 dev_err(adapter->pdev_dev, "request_irq failed, err %d\n", in adapter_up()
742 enable_rx(adapter); in adapter_up()
743 t4vf_sge_start(adapter); in adapter_up()
752 static void adapter_down(struct adapter *adapter) in adapter_down() argument
757 if (adapter->flags & USING_MSIX) in adapter_down()
758 free_msix_queue_irqs(adapter); in adapter_down()
760 free_irq(adapter->pdev->irq, adapter); in adapter_down()
765 quiesce_rx(adapter); in adapter_down()
775 struct adapter *adapter = pi->adapter; in cxgb4vf_open() local
781 if (adapter->open_device_map == 0) { in cxgb4vf_open()
782 err = adapter_up(adapter); in cxgb4vf_open()
799 set_bit(pi->port_id, &adapter->open_device_map); in cxgb4vf_open()
803 if (adapter->open_device_map == 0) in cxgb4vf_open()
804 adapter_down(adapter); in cxgb4vf_open()
815 struct adapter *adapter = pi->adapter; in cxgb4vf_stop() local
819 t4vf_enable_vi(adapter, pi->viid, false, false); in cxgb4vf_stop()
822 clear_bit(pi->port_id, &adapter->open_device_map); in cxgb4vf_stop()
823 if (adapter->open_device_map == 0) in cxgb4vf_stop()
824 adapter_down(adapter); in cxgb4vf_stop()
835 struct adapter *adapter = pi->adapter; in cxgb4vf_get_stats() local
839 spin_lock(&adapter->stats_lock); in cxgb4vf_get_stats()
840 err = t4vf_get_port_stats(adapter, pi->pidx, &stats); in cxgb4vf_get_stats()
841 spin_unlock(&adapter->stats_lock); in cxgb4vf_get_stats()
929 ret = t4vf_alloc_mac_filt(pi->adapter, pi->viid, free, in set_addr_filters()
944 ret = t4vf_alloc_mac_filt(pi->adapter, pi->viid, free, in set_addr_filters()
951 return t4vf_set_addr_hash(pi->adapter, pi->viid, uhash != 0, in set_addr_filters()
966 ret = t4vf_set_rxmode(pi->adapter, pi->viid, -1, in set_rxmode()
1021 static unsigned int qtimer_val(const struct adapter *adapter, in qtimer_val() argument
1027 ? adapter->sge.timer_val[timer_idx] in qtimer_val()
1042 static int set_rxq_intr_params(struct adapter *adapter, struct sge_rspq *rspq, in set_rxq_intr_params() argument
1064 pktcnt_idx = closest_thres(&adapter->sge, cnt); in set_rxq_intr_params()
1070 err = t4vf_set_params(adapter, 1, &v, &pktcnt_idx); in set_rxq_intr_params()
1083 : closest_timer(&adapter->sge, us)); in set_rxq_intr_params()
1099 static inline unsigned int mk_adap_vers(const struct adapter *adapter) in mk_adap_vers() argument
1104 return CHELSIO_CHIP_VERSION(adapter->params.chip) | (0x3f << 10); in mk_adap_vers()
1140 ret = t4vf_set_rxmode(pi->adapter, pi->viid, new_mtu, in cxgb4vf_change_mtu()
1169 t4vf_set_rxmode(pi->adapter, pi->viid, -1, -1, -1, -1, in cxgb4vf_set_features()
1187 ret = t4vf_change_mac(pi->adapter, pi->viid, pi->xact_addr_filt, in cxgb4vf_set_mac_addr()
1205 struct adapter *adapter = pi->adapter; in cxgb4vf_poll_controller() local
1207 if (adapter->flags & USING_MSIX) { in cxgb4vf_poll_controller()
1211 rxq = &adapter->sge.ethrxq[pi->first_qset]; in cxgb4vf_poll_controller()
1217 t4vf_intr_handler(adapter)(0, adapter); in cxgb4vf_poll_controller()
1337 struct adapter *adapter = netdev2adap(dev); in cxgb4vf_get_drvinfo() local
1345 FW_HDR_FW_VER_MAJOR_G(adapter->params.dev.fwrev), in cxgb4vf_get_drvinfo()
1346 FW_HDR_FW_VER_MINOR_G(adapter->params.dev.fwrev), in cxgb4vf_get_drvinfo()
1347 FW_HDR_FW_VER_MICRO_G(adapter->params.dev.fwrev), in cxgb4vf_get_drvinfo()
1348 FW_HDR_FW_VER_BUILD_G(adapter->params.dev.fwrev), in cxgb4vf_get_drvinfo()
1349 FW_HDR_FW_VER_MAJOR_G(adapter->params.dev.tprev), in cxgb4vf_get_drvinfo()
1350 FW_HDR_FW_VER_MINOR_G(adapter->params.dev.tprev), in cxgb4vf_get_drvinfo()
1351 FW_HDR_FW_VER_MICRO_G(adapter->params.dev.tprev), in cxgb4vf_get_drvinfo()
1352 FW_HDR_FW_VER_BUILD_G(adapter->params.dev.tprev)); in cxgb4vf_get_drvinfo()
1381 const struct sge *s = &pi->adapter->sge; in cxgb4vf_get_ringparam()
1404 struct adapter *adapter = pi->adapter; in cxgb4vf_set_ringparam() local
1405 struct sge *s = &adapter->sge; in cxgb4vf_set_ringparam()
1417 if (adapter->flags & FULL_INIT_DONE) in cxgb4vf_set_ringparam()
1437 const struct adapter *adapter = pi->adapter; in cxgb4vf_get_coalesce() local
1438 const struct sge_rspq *rspq = &adapter->sge.ethrxq[pi->first_qset].rspq; in cxgb4vf_get_coalesce()
1440 coalesce->rx_coalesce_usecs = qtimer_val(adapter, rspq); in cxgb4vf_get_coalesce()
1443 ? adapter->sge.counter_val[rspq->pktcnt_idx] in cxgb4vf_get_coalesce()
1457 struct adapter *adapter = pi->adapter; in cxgb4vf_set_coalesce() local
1459 return set_rxq_intr_params(adapter, in cxgb4vf_set_coalesce()
1460 &adapter->sge.ethrxq[pi->first_qset].rspq, in cxgb4vf_set_coalesce()
1494 return t4vf_identify_port(pi->adapter, pi->viid, val); in cxgb4vf_phys_id()
1581 static void collect_sge_port_stats(const struct adapter *adapter, in collect_sge_port_stats() argument
1585 const struct sge_eth_txq *txq = &adapter->sge.ethtxq[pi->first_qset]; in collect_sge_port_stats()
1586 const struct sge_eth_rxq *rxq = &adapter->sge.ethrxq[pi->first_qset]; in collect_sge_port_stats()
1609 struct adapter *adapter = pi->adapter; in cxgb4vf_get_ethtool_stats() local
1610 int err = t4vf_get_port_stats(adapter, pi->pidx, in cxgb4vf_get_ethtool_stats()
1616 collect_sge_port_stats(adapter, pi, (struct queue_port_stats *)data); in cxgb4vf_get_ethtool_stats()
1630 static void reg_block_dump(struct adapter *adapter, void *regbuf, in reg_block_dump() argument
1644 *bp++ = t4_read_reg(adapter, start); in reg_block_dump()
1655 struct adapter *adapter = netdev2adap(dev); in cxgb4vf_get_regs() local
1657 regs->version = mk_adap_vers(adapter); in cxgb4vf_get_regs()
1664 reg_block_dump(adapter, regbuf, in cxgb4vf_get_regs()
1667 reg_block_dump(adapter, regbuf, in cxgb4vf_get_regs()
1673 reg_block_dump(adapter, regbuf, in cxgb4vf_get_regs()
1675 T4VF_PL_BASE_ADDR + (is_t4(adapter->params.chip) in cxgb4vf_get_regs()
1677 reg_block_dump(adapter, regbuf, in cxgb4vf_get_regs()
1681 reg_block_dump(adapter, regbuf, in cxgb4vf_get_regs()
1734 struct adapter *adapter = seq->private; in sge_qinfo_show() local
1735 int eth_entries = DIV_ROUND_UP(adapter->sge.ethqsets, QPL); in sge_qinfo_show()
1753 const struct sge_eth_rxq *rxq = &adapter->sge.ethrxq[r * QPL]; in sge_qinfo_show()
1754 const struct sge_eth_txq *txq = &adapter->sge.ethtxq[r * QPL]; in sge_qinfo_show()
1755 int n = min(QPL, adapter->sge.ethqsets - QPL * r); in sge_qinfo_show()
1775 S3("u", "Intr delay:", qtimer_val(adapter, &rxq[qs].rspq)); in sge_qinfo_show()
1777 adapter->sge.counter_val[rxq[qs].rspq.pktcnt_idx]); in sge_qinfo_show()
1790 const struct sge_rspq *evtq = &adapter->sge.fw_evtq; in sge_qinfo_show()
1795 qtimer_val(adapter, evtq)); in sge_qinfo_show()
1797 adapter->sge.counter_val[evtq->pktcnt_idx]); in sge_qinfo_show()
1801 const struct sge_rspq *intrq = &adapter->sge.intrq; in sge_qinfo_show()
1806 qtimer_val(adapter, intrq)); in sge_qinfo_show()
1808 adapter->sge.counter_val[intrq->pktcnt_idx]); in sge_qinfo_show()
1829 static int sge_queue_entries(const struct adapter *adapter) in sge_queue_entries() argument
1831 return DIV_ROUND_UP(adapter->sge.ethqsets, QPL) + 1 + in sge_queue_entries()
1832 ((adapter->flags & USING_MSI) != 0); in sge_queue_entries()
1887 struct adapter *adapter = seq->private; in sge_qstats_show() local
1888 int eth_entries = DIV_ROUND_UP(adapter->sge.ethqsets, QPL); in sge_qstats_show()
1910 const struct sge_eth_rxq *rxq = &adapter->sge.ethrxq[r * QPL]; in sge_qstats_show()
1911 const struct sge_eth_txq *txq = &adapter->sge.ethtxq[r * QPL]; in sge_qstats_show()
1912 int n = min(QPL, adapter->sge.ethqsets - QPL * r); in sge_qstats_show()
1940 const struct sge_rspq *evtq = &adapter->sge.fw_evtq; in sge_qstats_show()
1948 const struct sge_rspq *intrq = &adapter->sge.intrq; in sge_qstats_show()
1975 static int sge_qstats_entries(const struct adapter *adapter) in sge_qstats_entries() argument
1977 return DIV_ROUND_UP(adapter->sge.ethqsets, QPL) + 1 + in sge_qstats_entries()
1978 ((adapter->flags & USING_MSI) != 0); in sge_qstats_entries()
2031 struct adapter *adapter = seq->private; in resources_show() local
2032 struct vf_resources *vfres = &adapter->params.vfres; in resources_show()
2075 struct adapter *adapter = seq->private; in interfaces_show() local
2077 struct net_device *dev = adapter->port[pidx]; in interfaces_show()
2086 static inline void *interfaces_get_idx(struct adapter *adapter, loff_t pos) in interfaces_get_idx() argument
2088 return pos <= adapter->params.nports in interfaces_get_idx()
2161 static int setup_debugfs(struct adapter *adapter) in setup_debugfs() argument
2165 BUG_ON(IS_ERR_OR_NULL(adapter->debugfs_root)); in setup_debugfs()
2173 adapter->debugfs_root, in setup_debugfs()
2174 (void *)adapter, in setup_debugfs()
2184 static void cleanup_debugfs(struct adapter *adapter) in cleanup_debugfs() argument
2186 BUG_ON(IS_ERR_OR_NULL(adapter->debugfs_root)); in cleanup_debugfs()
2202 static int adap_init0(struct adapter *adapter) in adap_init0() argument
2204 struct vf_resources *vfres = &adapter->params.vfres; in adap_init0()
2205 struct sge_params *sge_params = &adapter->params.sge; in adap_init0()
2206 struct sge *s = &adapter->sge; in adap_init0()
2214 err = t4vf_wait_dev_ready(adapter); in adap_init0()
2216 dev_err(adapter->pdev_dev, "device didn't become ready:" in adap_init0()
2231 err = t4vf_fw_reset(adapter); in adap_init0()
2233 dev_err(adapter->pdev_dev, "FW reset failed: err=%d\n", err); in adap_init0()
2245 err = t4vf_get_dev_params(adapter); in adap_init0()
2247 dev_err(adapter->pdev_dev, "unable to retrieve adapter" in adap_init0()
2251 err = t4vf_get_vpd_params(adapter); in adap_init0()
2253 dev_err(adapter->pdev_dev, "unable to retrieve adapter" in adap_init0()
2257 err = t4vf_get_sge_params(adapter); in adap_init0()
2259 dev_err(adapter->pdev_dev, "unable to retrieve adapter" in adap_init0()
2263 err = t4vf_get_rss_glb_config(adapter); in adap_init0()
2265 dev_err(adapter->pdev_dev, "unable to retrieve adapter" in adap_init0()
2269 if (adapter->params.rss.mode != in adap_init0()
2271 dev_err(adapter->pdev_dev, "unable to operate with global RSS" in adap_init0()
2272 " mode %d\n", adapter->params.rss.mode); in adap_init0()
2275 err = t4vf_sge_init(adapter); in adap_init0()
2277 dev_err(adapter->pdev_dev, "unable to use adapter parameters:" in adap_init0()
2290 (void) t4vf_set_params(adapter, 1, ¶m, &val); in adap_init0()
2296 s->timer_val[0] = core_ticks_to_us(adapter, in adap_init0()
2298 s->timer_val[1] = core_ticks_to_us(adapter, in adap_init0()
2300 s->timer_val[2] = core_ticks_to_us(adapter, in adap_init0()
2302 s->timer_val[3] = core_ticks_to_us(adapter, in adap_init0()
2304 s->timer_val[4] = core_ticks_to_us(adapter, in adap_init0()
2306 s->timer_val[5] = core_ticks_to_us(adapter, in adap_init0()
2319 err = t4vf_get_vfres(adapter); in adap_init0()
2321 dev_err(adapter->pdev_dev, "unable to get virtual interface" in adap_init0()
2330 adapter->params.nports = vfres->nvi; in adap_init0()
2331 if (adapter->params.nports > MAX_NPORTS) { in adap_init0()
2332 dev_warn(adapter->pdev_dev, "only using %d of %d allowed" in adap_init0()
2334 adapter->params.nports); in adap_init0()
2335 adapter->params.nports = MAX_NPORTS; in adap_init0()
2351 dev_warn(adapter->pdev_dev, "unequal number of [available]" in adap_init0()
2357 dev_warn(adapter->pdev_dev, "Not enough Egress Contexts (%d)" in adap_init0()
2363 dev_warn(adapter->pdev_dev, "only using %d of %d allowed Queue" in adap_init0()
2364 " Sets\n", MAX_ETH_QSETS, adapter->sge.max_ethqsets); in adap_init0()
2368 dev_warn(adapter->pdev_dev, "unused resources niq/neq (%d/%d)" in adap_init0()
2371 adapter->sge.max_ethqsets = ethqsets; in adap_init0()
2378 if (adapter->sge.max_ethqsets < adapter->params.nports) { in adap_init0()
2379 dev_warn(adapter->pdev_dev, "only using %d of %d available" in adap_init0()
2381 adapter->sge.max_ethqsets, adapter->params.nports); in adap_init0()
2382 adapter->params.nports = adapter->sge.max_ethqsets; in adap_init0()
2384 if (adapter->params.nports == 0) { in adap_init0()
2385 dev_err(adapter->pdev_dev, "no virtual interfaces configured/" in adap_init0()
2412 static void cfg_queues(struct adapter *adapter) in cfg_queues() argument
2414 struct sge *s = &adapter->sge; in cfg_queues()
2423 BUG_ON((adapter->flags & (USING_MSIX|USING_MSI)) == 0); in cfg_queues()
2429 for_each_port(adapter, pidx) in cfg_queues()
2430 n10g += is_x_10g_port(&adap2pinfo(adapter, pidx)->link_cfg); in cfg_queues()
2439 int n1g = (adapter->params.nports - n10g); in cfg_queues()
2440 q10g = (adapter->sge.max_ethqsets - n1g) / n10g; in cfg_queues()
2451 for_each_port(adapter, pidx) { in cfg_queues()
2452 struct port_info *pi = adap2pinfo(adapter, pidx); in cfg_queues()
2507 static void reduce_ethqs(struct adapter *adapter, int n) in reduce_ethqs() argument
2516 BUG_ON(n < adapter->params.nports); in reduce_ethqs()
2517 while (n < adapter->sge.ethqsets) in reduce_ethqs()
2518 for_each_port(adapter, i) { in reduce_ethqs()
2519 pi = adap2pinfo(adapter, i); in reduce_ethqs()
2522 adapter->sge.ethqsets--; in reduce_ethqs()
2523 if (adapter->sge.ethqsets <= n) in reduce_ethqs()
2532 for_each_port(adapter, i) { in reduce_ethqs()
2533 pi = adap2pinfo(adapter, i); in reduce_ethqs()
2546 static int enable_msix(struct adapter *adapter) in enable_msix() argument
2550 struct sge *s = &adapter->sge; in enable_msix()
2563 need = adapter->params.nports + MSIX_EXTRAS; in enable_msix()
2565 want = pci_enable_msix_range(adapter->pdev, entries, need, want); in enable_msix()
2571 dev_warn(adapter->pdev_dev, "only enough MSI-X vectors" in enable_msix()
2575 reduce_ethqs(adapter, nqsets); in enable_msix()
2578 adapter->msix_info[i].vec = entries[i].vector; in enable_msix()
2611 struct adapter *adapter; in cxgb4vf_pci_probe() local
2670 adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); in cxgb4vf_pci_probe()
2671 if (!adapter) { in cxgb4vf_pci_probe()
2675 pci_set_drvdata(pdev, adapter); in cxgb4vf_pci_probe()
2676 adapter->pdev = pdev; in cxgb4vf_pci_probe()
2677 adapter->pdev_dev = &pdev->dev; in cxgb4vf_pci_probe()
2682 spin_lock_init(&adapter->stats_lock); in cxgb4vf_pci_probe()
2687 adapter->regs = pci_ioremap_bar(pdev, 0); in cxgb4vf_pci_probe()
2688 if (!adapter->regs) { in cxgb4vf_pci_probe()
2696 err = t4vf_prep_adapter(adapter); in cxgb4vf_pci_probe()
2698 dev_err(adapter->pdev_dev, "device didn't become ready:" in cxgb4vf_pci_probe()
2706 if (!is_t4(adapter->params.chip)) { in cxgb4vf_pci_probe()
2707 adapter->bar2 = ioremap_wc(pci_resource_start(pdev, 2), in cxgb4vf_pci_probe()
2709 if (!adapter->bar2) { in cxgb4vf_pci_probe()
2710 dev_err(adapter->pdev_dev, "cannot map BAR2 doorbells\n"); in cxgb4vf_pci_probe()
2718 adapter->name = pci_name(pdev); in cxgb4vf_pci_probe()
2719 adapter->msg_enable = dflt_msg_enable; in cxgb4vf_pci_probe()
2720 err = adap_init0(adapter); in cxgb4vf_pci_probe()
2727 pmask = adapter->params.vfres.pmask; in cxgb4vf_pci_probe()
2728 for_each_port(adapter, pidx) { in cxgb4vf_pci_probe()
2741 viid = t4vf_alloc_vi(adapter, port_id); in cxgb4vf_pci_probe()
2755 t4vf_free_vi(adapter, viid); in cxgb4vf_pci_probe()
2759 adapter->port[pidx] = netdev; in cxgb4vf_pci_probe()
2762 pi->adapter = adapter; in cxgb4vf_pci_probe()
2794 err = t4vf_port_init(adapter, pidx); in cxgb4vf_pci_probe()
2808 for_each_port(adapter, pidx) { in cxgb4vf_pci_probe()
2809 netdev = adapter->port[pidx]; in cxgb4vf_pci_probe()
2820 set_bit(pidx, &adapter->registered_device_map); in cxgb4vf_pci_probe()
2822 if (adapter->registered_device_map == 0) { in cxgb4vf_pci_probe()
2831 adapter->debugfs_root = in cxgb4vf_pci_probe()
2834 if (IS_ERR_OR_NULL(adapter->debugfs_root)) in cxgb4vf_pci_probe()
2838 setup_debugfs(adapter); in cxgb4vf_pci_probe()
2847 if (msi == MSI_MSIX && enable_msix(adapter) == 0) in cxgb4vf_pci_probe()
2848 adapter->flags |= USING_MSIX; in cxgb4vf_pci_probe()
2857 adapter->flags |= USING_MSI; in cxgb4vf_pci_probe()
2865 cfg_queues(adapter); in cxgb4vf_pci_probe()
2871 for_each_port(adapter, pidx) { in cxgb4vf_pci_probe()
2872 dev_info(adapter->pdev_dev, "%s: Chelsio VF NIC PCIe %s\n", in cxgb4vf_pci_probe()
2873 adapter->port[pidx]->name, in cxgb4vf_pci_probe()
2874 (adapter->flags & USING_MSIX) ? "MSI-X" : in cxgb4vf_pci_probe()
2875 (adapter->flags & USING_MSI) ? "MSI" : ""); in cxgb4vf_pci_probe()
2889 if (!IS_ERR_OR_NULL(adapter->debugfs_root)) { in cxgb4vf_pci_probe()
2890 cleanup_debugfs(adapter); in cxgb4vf_pci_probe()
2891 debugfs_remove_recursive(adapter->debugfs_root); in cxgb4vf_pci_probe()
2895 for_each_port(adapter, pidx) { in cxgb4vf_pci_probe()
2896 netdev = adapter->port[pidx]; in cxgb4vf_pci_probe()
2900 t4vf_free_vi(adapter, pi->viid); in cxgb4vf_pci_probe()
2901 if (test_bit(pidx, &adapter->registered_device_map)) in cxgb4vf_pci_probe()
2907 if (!is_t4(adapter->params.chip)) in cxgb4vf_pci_probe()
2908 iounmap(adapter->bar2); in cxgb4vf_pci_probe()
2911 iounmap(adapter->regs); in cxgb4vf_pci_probe()
2914 kfree(adapter); in cxgb4vf_pci_probe()
2933 struct adapter *adapter = pci_get_drvdata(pdev); in cxgb4vf_pci_remove() local
2938 if (adapter) { in cxgb4vf_pci_remove()
2945 for_each_port(adapter, pidx) in cxgb4vf_pci_remove()
2946 if (test_bit(pidx, &adapter->registered_device_map)) in cxgb4vf_pci_remove()
2947 unregister_netdev(adapter->port[pidx]); in cxgb4vf_pci_remove()
2948 t4vf_sge_stop(adapter); in cxgb4vf_pci_remove()
2949 if (adapter->flags & USING_MSIX) { in cxgb4vf_pci_remove()
2950 pci_disable_msix(adapter->pdev); in cxgb4vf_pci_remove()
2951 adapter->flags &= ~USING_MSIX; in cxgb4vf_pci_remove()
2952 } else if (adapter->flags & USING_MSI) { in cxgb4vf_pci_remove()
2953 pci_disable_msi(adapter->pdev); in cxgb4vf_pci_remove()
2954 adapter->flags &= ~USING_MSI; in cxgb4vf_pci_remove()
2960 if (!IS_ERR_OR_NULL(adapter->debugfs_root)) { in cxgb4vf_pci_remove()
2961 cleanup_debugfs(adapter); in cxgb4vf_pci_remove()
2962 debugfs_remove_recursive(adapter->debugfs_root); in cxgb4vf_pci_remove()
2968 t4vf_free_sge_resources(adapter); in cxgb4vf_pci_remove()
2969 for_each_port(adapter, pidx) { in cxgb4vf_pci_remove()
2970 struct net_device *netdev = adapter->port[pidx]; in cxgb4vf_pci_remove()
2977 t4vf_free_vi(adapter, pi->viid); in cxgb4vf_pci_remove()
2980 iounmap(adapter->regs); in cxgb4vf_pci_remove()
2981 if (!is_t4(adapter->params.chip)) in cxgb4vf_pci_remove()
2982 iounmap(adapter->bar2); in cxgb4vf_pci_remove()
2983 kfree(adapter); in cxgb4vf_pci_remove()
3000 struct adapter *adapter; in cxgb4vf_pci_shutdown() local
3003 adapter = pci_get_drvdata(pdev); in cxgb4vf_pci_shutdown()
3004 if (!adapter) in cxgb4vf_pci_shutdown()
3011 for_each_port(adapter, pidx) in cxgb4vf_pci_shutdown()
3012 if (test_bit(pidx, &adapter->registered_device_map)) in cxgb4vf_pci_shutdown()
3013 unregister_netdev(adapter->port[pidx]); in cxgb4vf_pci_shutdown()
3018 t4vf_sge_stop(adapter); in cxgb4vf_pci_shutdown()
3019 if (adapter->flags & USING_MSIX) { in cxgb4vf_pci_shutdown()
3020 pci_disable_msix(adapter->pdev); in cxgb4vf_pci_shutdown()
3021 adapter->flags &= ~USING_MSIX; in cxgb4vf_pci_shutdown()
3022 } else if (adapter->flags & USING_MSI) { in cxgb4vf_pci_shutdown()
3023 pci_disable_msi(adapter->pdev); in cxgb4vf_pci_shutdown()
3024 adapter->flags &= ~USING_MSI; in cxgb4vf_pci_shutdown()
3031 t4vf_free_sge_resources(adapter); in cxgb4vf_pci_shutdown()