Lines Matching refs:ionic

54 	new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec);  in ionic_dim_work()
63 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_dim_work()
106 mod_timer(&lif->ionic->watchdog_timer, jiffies + 1); in ionic_lif_deferred_work()
160 ionic_port_identify(lif->ionic); in ionic_link_status_check()
215 struct device *dev = lif->ionic->dev; in ionic_request_irq()
233 struct ionic *ionic = lif->ionic; in ionic_intr_alloc() local
236 index = find_first_zero_bit(ionic->intrs, ionic->nintrs); in ionic_intr_alloc()
237 if (index == ionic->nintrs) { in ionic_intr_alloc()
239 __func__, index, ionic->nintrs); in ionic_intr_alloc()
243 set_bit(index, ionic->intrs); in ionic_intr_alloc()
244 ionic_intr_init(&ionic->idev, intr, index); in ionic_intr_alloc()
249 static void ionic_intr_free(struct ionic *ionic, int index) in ionic_intr_free() argument
251 if (index != IONIC_INTR_INDEX_NOT_ASSIGNED && index < ionic->nintrs) in ionic_intr_free()
252 clear_bit(index, ionic->intrs); in ionic_intr_free()
273 idev = &lif->ionic->idev; in ionic_qcq_enable()
274 dev = lif->ionic->dev; in ionic_qcq_enable()
311 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_disable()
330 dev_dbg(lif->ionic->dev, "q_disable.index %d q_disable.qtype %d\n", in ionic_qcq_disable()
338 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_qcq_deinit()
361 devm_free_irq(lif->ionic->dev, qcq->intr.vector, &qcq->napi); in ionic_qcq_intr_free()
363 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_qcq_intr_free()
369 struct device *dev = lif->ionic->dev; in ionic_qcq_free()
408 struct device *dev = lif->ionic->dev; in ionic_qcqs_free()
448 ionic_intr_free(n_qcq->cq.lif->ionic, n_qcq->intr.index); in ionic_link_qcq_interrupts()
472 err = ionic_bus_get_irq(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
479 ionic_intr_mask_assert(lif->ionic->idev.intr_ctrl, qcq->intr.index, in ionic_alloc_qcq_interrupt()
490 dev_to_node(lif->ionic->dev)); in ionic_alloc_qcq_interrupt()
498 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
511 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_alloc()
512 struct device *dev = lif->ionic->dev; in ionic_qcq_alloc()
646 ionic_intr_free(lif->ionic, new->intr.index); in ionic_qcq_alloc()
659 struct device *dev = lif->ionic->dev; in ionic_qcqs_alloc()
673 if (lif->ionic->nnqs_per_lif) { in ionic_qcqs_alloc()
689 lif->txqcqs = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif, in ionic_qcqs_alloc()
693 lif->rxqcqs = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif, in ionic_qcqs_alloc()
698 lif->txqstats = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif + 1, in ionic_qcqs_alloc()
702 lif->rxqstats = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif + 1, in ionic_qcqs_alloc()
727 struct device *dev = lif->ionic->dev; in ionic_lif_txq_init()
786 struct device *dev = lif->ionic->dev; in ionic_lif_rxq_init()
864 txq_i = lif->ionic->ntxqs_per_lif; in ionic_lif_create_hwstamp_txq()
900 devm_kfree(lif->ionic->dev, txq); in ionic_lif_create_hwstamp_txq()
923 rxq_i = lif->ionic->nrxqs_per_lif; in ionic_lif_create_hwstamp_rxq()
960 devm_kfree(lif->ionic->dev, rxq); in ionic_lif_create_hwstamp_rxq()
1102 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
1111 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
1150 struct ionic_dev *idev = &lif->ionic->idev; in ionic_adminq_napi()
1406 struct device *dev = lif->ionic->dev; in ionic_set_nic_features()
1439 dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n"); in ionic_set_nic_features()
1796 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_config()
1820 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_init()
1831 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_deinit()
1917 for (i = 0; i < lif->ionic->ntxqs_per_lif && lif->txqcqs[i]; i++) { in ionic_txrx_free()
1919 devm_kfree(lif->ionic->dev, lif->txqcqs[i]); in ionic_txrx_free()
1925 for (i = 0; i < lif->ionic->nrxqs_per_lif && lif->rxqcqs[i]; i++) { in ionic_txrx_free()
1927 devm_kfree(lif->ionic->dev, lif->rxqcqs[i]); in ionic_txrx_free()
1934 devm_kfree(lif->ionic->dev, lif->hwstamp_txq); in ionic_txrx_free()
1940 devm_kfree(lif->ionic->dev, lif->hwstamp_rxq); in ionic_txrx_free()
1973 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2002 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2063 dev_err(lif->ionic->dev, "%s: bad qcq %d\n", __func__, i); in ionic_txrx_enable()
2223 static int ionic_update_cached_vf_config(struct ionic *ionic, int vf) in ionic_update_cached_vf_config() argument
2230 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2234 ionic->vfs[vf].vlanid = comp.vlanid; in ionic_update_cached_vf_config()
2237 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2241 ionic->vfs[vf].spoofchk = comp.spoofchk; in ionic_update_cached_vf_config()
2244 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2250 ionic->vfs[vf].linkstate = IFLA_VF_LINK_STATE_ENABLE; in ionic_update_cached_vf_config()
2253 ionic->vfs[vf].linkstate = IFLA_VF_LINK_STATE_DISABLE; in ionic_update_cached_vf_config()
2256 ionic->vfs[vf].linkstate = IFLA_VF_LINK_STATE_AUTO; in ionic_update_cached_vf_config()
2259 dev_warn(ionic->dev, "Unexpected link state %u\n", comp.linkstate); in ionic_update_cached_vf_config()
2265 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2269 ionic->vfs[vf].maxrate = comp.maxrate; in ionic_update_cached_vf_config()
2272 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2276 ionic->vfs[vf].trusted = comp.trust; in ionic_update_cached_vf_config()
2279 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_update_cached_vf_config()
2283 ether_addr_copy(ionic->vfs[vf].macaddr, comp.macaddr); in ionic_update_cached_vf_config()
2287 dev_err(ionic->dev, "Failed to get %s for VF %d\n", in ionic_update_cached_vf_config()
2297 struct ionic *ionic = lif->ionic; in ionic_get_vf_config() local
2303 down_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2305 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_config()
2311 ret = ionic_update_cached_vf_config(ionic, vf); in ionic_get_vf_config()
2313 ivf->vlan = le16_to_cpu(ionic->vfs[vf].vlanid); in ionic_get_vf_config()
2314 ivf->spoofchk = ionic->vfs[vf].spoofchk; in ionic_get_vf_config()
2315 ivf->linkstate = ionic->vfs[vf].linkstate; in ionic_get_vf_config()
2316 ivf->max_tx_rate = le32_to_cpu(ionic->vfs[vf].maxrate); in ionic_get_vf_config()
2317 ivf->trusted = ionic->vfs[vf].trusted; in ionic_get_vf_config()
2318 ether_addr_copy(ivf->mac, ionic->vfs[vf].macaddr); in ionic_get_vf_config()
2322 up_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2330 struct ionic *ionic = lif->ionic; in ionic_get_vf_stats() local
2337 down_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2339 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_stats()
2343 vs = &ionic->vfs[vf].stats; in ionic_get_vf_stats()
2359 up_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2367 struct ionic *ionic = lif->ionic; in ionic_set_vf_mac() local
2376 down_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2378 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_mac()
2382 dev_dbg(ionic->dev, "%s: vf %d macaddr %pM\n", in ionic_set_vf_mac()
2385 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_mac()
2387 ether_addr_copy(ionic->vfs[vf].macaddr, mac); in ionic_set_vf_mac()
2390 up_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2399 struct ionic *ionic = lif->ionic; in ionic_set_vf_vlan() local
2415 down_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2417 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_vlan()
2421 dev_dbg(ionic->dev, "%s: vf %d vlan %d\n", in ionic_set_vf_vlan()
2424 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_vlan()
2426 ionic->vfs[vf].vlanid = cpu_to_le16(vlan); in ionic_set_vf_vlan()
2429 up_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2438 struct ionic *ionic = lif->ionic; in ionic_set_vf_rate() local
2448 down_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2450 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_rate()
2454 dev_dbg(ionic->dev, "%s: vf %d maxrate %d\n", in ionic_set_vf_rate()
2457 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_rate()
2459 lif->ionic->vfs[vf].maxrate = cpu_to_le32(tx_max); in ionic_set_vf_rate()
2462 up_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2470 struct ionic *ionic = lif->ionic; in ionic_set_vf_spoofchk() local
2476 down_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2478 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_spoofchk()
2482 dev_dbg(ionic->dev, "%s: vf %d spoof %d\n", in ionic_set_vf_spoofchk()
2485 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_spoofchk()
2487 ionic->vfs[vf].spoofchk = set; in ionic_set_vf_spoofchk()
2490 up_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2498 struct ionic *ionic = lif->ionic; in ionic_set_vf_trust() local
2504 down_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2506 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_trust()
2510 dev_dbg(ionic->dev, "%s: vf %d trust %d\n", in ionic_set_vf_trust()
2513 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_trust()
2515 ionic->vfs[vf].trusted = set; in ionic_set_vf_trust()
2518 up_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2526 struct ionic *ionic = lif->ionic; in ionic_set_vf_link_state() local
2547 down_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2549 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_link_state()
2553 dev_dbg(ionic->dev, "%s: vf %d linkstate %d\n", in ionic_set_vf_link_state()
2556 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_link_state()
2558 ionic->vfs[vf].linkstate = set; in ionic_set_vf_link_state()
2561 up_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2633 tx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->ntxqs_per_lif, in ionic_reconfigure_queues()
2643 rx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->nrxqs_per_lif, in ionic_reconfigure_queues()
2736 for (i = 0; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
2745 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
2752 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
2795 devm_kfree(lif->ionic->dev, tx_qcqs[i]); in ionic_reconfigure_queues()
2801 devm_kfree(lif->ionic->dev, rx_qcqs[i]); in ionic_reconfigure_queues()
2808 devm_kfree(lif->ionic->dev, rx_qcqs); in ionic_reconfigure_queues()
2812 devm_kfree(lif->ionic->dev, tx_qcqs); in ionic_reconfigure_queues()
2819 for (i = lif->nxqs; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
2837 int ionic_lif_alloc(struct ionic *ionic) in ionic_lif_alloc() argument
2839 struct device *dev = ionic->dev; in ionic_lif_alloc()
2851 ionic->ntxqs_per_lif, ionic->ntxqs_per_lif); in ionic_lif_alloc()
2862 ionic->lif = lif; in ionic_lif_alloc()
2871 err = ionic_lif_identify(ionic, lif->lif_type, lif->identity); in ionic_lif_alloc()
2873 dev_err(ionic->dev, "Cannot identify type %d: %d\n", in ionic_lif_alloc()
2882 lif->neqs = ionic->neqs_per_lif; in ionic_lif_alloc()
2883 lif->nxqs = ionic->ntxqs_per_lif; in ionic_lif_alloc()
2885 lif->ionic = ionic; in ionic_lif_alloc()
2898 lif->rx_coalesce_hw = ionic_coal_usec_to_hw(lif->ionic, in ionic_lif_alloc()
2935 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_alloc()
2972 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_reset()
2974 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
2976 ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_reset()
2977 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
2982 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_down() local
2987 dev_info(ionic->dev, "FW Down: Stopping LIFs\n"); in ionic_lif_handle_fw_down()
2993 dev_info(ionic->dev, "Surprise FW stop, stopping queues\n"); in ionic_lif_handle_fw_down()
3002 ionic_reset(ionic); in ionic_lif_handle_fw_down()
3008 dev_info(ionic->dev, "FW Down: LIFs stopped\n"); in ionic_lif_handle_fw_down()
3013 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_up() local
3019 dev_info(ionic->dev, "FW Up: restarting LIFs\n"); in ionic_lif_handle_fw_up()
3021 ionic_init_devinfo(ionic); in ionic_lif_handle_fw_up()
3022 err = ionic_identify(ionic); in ionic_lif_handle_fw_up()
3025 err = ionic_port_identify(ionic); in ionic_lif_handle_fw_up()
3028 err = ionic_port_init(ionic); in ionic_lif_handle_fw_up()
3035 dev_info(ionic->dev, "FW Up: clearing broken state\n"); in ionic_lif_handle_fw_up()
3065 dev_info(ionic->dev, "FW Up: LIFs restarted\n"); in ionic_lif_handle_fw_up()
3081 dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err); in ionic_lif_handle_fw_up()
3086 struct device *dev = lif->ionic->dev; in ionic_lif_free()
3108 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_free()
3141 struct device *dev = lif->ionic->dev; in ionic_lif_adminq_init()
3148 idev = &lif->ionic->idev; in ionic_lif_adminq_init()
3152 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3154 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_adminq_init()
3156 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3185 struct device *dev = lif->ionic->dev; in ionic_lif_notifyq_init()
3300 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_init()
3301 struct device *dev = lif->ionic->dev; in ionic_lif_init()
3306 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3308 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_init()
3310 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3317 lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_lif_init()
3325 lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num); in ionic_lif_init()
3335 if (lif->ionic->nnqs_per_lif) { in ionic_lif_init()
3369 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_init()
3408 struct ionic *ionic = container_of(nb, struct ionic, nb); in ionic_lif_notify() local
3411 if (!lif || lif->ionic != ionic) in ionic_lif_notify()
3429 INIT_WORK(&lif->ionic->nb_work, ionic_lif_notify_work); in ionic_lif_register()
3431 lif->ionic->nb.notifier_call = ionic_lif_notify; in ionic_lif_register()
3433 err = register_netdevice_notifier(&lif->ionic->nb); in ionic_lif_register()
3435 lif->ionic->nb.notifier_call = NULL; in ionic_lif_register()
3440 dev_err(lif->ionic->dev, "Cannot register net device, aborting\n"); in ionic_lif_register()
3454 if (lif->ionic->nb.notifier_call) { in ionic_lif_unregister()
3455 unregister_netdevice_notifier(&lif->ionic->nb); in ionic_lif_unregister()
3456 cancel_work_sync(&lif->ionic->nb_work); in ionic_lif_unregister()
3457 lif->ionic->nb.notifier_call = NULL; in ionic_lif_unregister()
3471 struct ionic *ionic = lif->ionic; in ionic_lif_queue_identify() local
3476 idev = &lif->ionic->idev; in ionic_lif_queue_identify()
3495 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3498 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_queue_identify()
3509 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3512 dev_err(ionic->dev, "qtype %d not supported\n", qtype); in ionic_lif_queue_identify()
3515 dev_err(ionic->dev, "q_ident failed, not supported on older FW\n"); in ionic_lif_queue_identify()
3518 dev_err(ionic->dev, "q_ident failed, qtype %d: %d\n", in ionic_lif_queue_identify()
3523 dev_dbg(ionic->dev, " qtype[%d].version = %d\n", in ionic_lif_queue_identify()
3525 dev_dbg(ionic->dev, " qtype[%d].supported = 0x%02x\n", in ionic_lif_queue_identify()
3527 dev_dbg(ionic->dev, " qtype[%d].features = 0x%04llx\n", in ionic_lif_queue_identify()
3529 dev_dbg(ionic->dev, " qtype[%d].desc_sz = %d\n", in ionic_lif_queue_identify()
3531 dev_dbg(ionic->dev, " qtype[%d].comp_sz = %d\n", in ionic_lif_queue_identify()
3533 dev_dbg(ionic->dev, " qtype[%d].sg_desc_sz = %d\n", in ionic_lif_queue_identify()
3535 dev_dbg(ionic->dev, " qtype[%d].max_sg_elems = %d\n", in ionic_lif_queue_identify()
3537 dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n", in ionic_lif_queue_identify()
3542 int ionic_lif_identify(struct ionic *ionic, u8 lif_type, in ionic_lif_identify() argument
3545 struct ionic_dev *idev = &ionic->idev; in ionic_lif_identify()
3551 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3553 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_identify()
3555 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3559 dev_dbg(ionic->dev, "capabilities 0x%llx\n", in ionic_lif_identify()
3562 dev_dbg(ionic->dev, "eth.max_ucast_filters %d\n", in ionic_lif_identify()
3564 dev_dbg(ionic->dev, "eth.max_mcast_filters %d\n", in ionic_lif_identify()
3566 dev_dbg(ionic->dev, "eth.features 0x%llx\n", in ionic_lif_identify()
3568 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_ADMINQ] %d\n", in ionic_lif_identify()
3570 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_NOTIFYQ] %d\n", in ionic_lif_identify()
3572 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_RXQ] %d\n", in ionic_lif_identify()
3574 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_TXQ] %d\n", in ionic_lif_identify()
3576 dev_dbg(ionic->dev, "eth.config.name %s\n", lid->eth.config.name); in ionic_lif_identify()
3577 dev_dbg(ionic->dev, "eth.config.mac %pM\n", lid->eth.config.mac); in ionic_lif_identify()
3578 dev_dbg(ionic->dev, "eth.config.mtu %d\n", in ionic_lif_identify()
3584 int ionic_lif_size(struct ionic *ionic) in ionic_lif_size() argument
3586 struct ionic_identity *ident = &ionic->ident; in ionic_lif_size()
3640 err = ionic_bus_alloc_irq_vectors(ionic, nintrs); in ionic_lif_size()
3642 dev_err(ionic->dev, "Can't get intrs from OS: %d\n", err); in ionic_lif_size()
3649 ionic_bus_free_irq_vectors(ionic); in ionic_lif_size()
3653 ionic->nnqs_per_lif = nnqs_per_lif; in ionic_lif_size()
3654 ionic->neqs_per_lif = neqs; in ionic_lif_size()
3655 ionic->ntxqs_per_lif = nxqs; in ionic_lif_size()
3656 ionic->nrxqs_per_lif = nxqs; in ionic_lif_size()
3657 ionic->nintrs = nintrs; in ionic_lif_size()
3659 ionic_debugfs_add_sizes(ionic); in ionic_lif_size()
3676 dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs); in ionic_lif_size()