Lines Matching refs:ionic
58 new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec); in ionic_dim_work()
67 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_dim_work()
110 mod_timer(&lif->ionic->watchdog_timer, jiffies + 1); in ionic_lif_deferred_work()
164 ionic_port_identify(lif->ionic); in ionic_link_status_check()
227 struct device *dev = lif->ionic->dev; in ionic_request_irq()
245 struct ionic *ionic = lif->ionic; in ionic_intr_alloc() local
248 index = find_first_zero_bit(ionic->intrs, ionic->nintrs); in ionic_intr_alloc()
249 if (index == ionic->nintrs) { in ionic_intr_alloc()
251 __func__, index, ionic->nintrs); in ionic_intr_alloc()
255 set_bit(index, ionic->intrs); in ionic_intr_alloc()
256 ionic_intr_init(&ionic->idev, intr, index); in ionic_intr_alloc()
261 static void ionic_intr_free(struct ionic *ionic, int index) in ionic_intr_free() argument
263 if (index != IONIC_INTR_INDEX_NOT_ASSIGNED && index < ionic->nintrs) in ionic_intr_free()
264 clear_bit(index, ionic->intrs); in ionic_intr_free()
286 idev = &lif->ionic->idev; in ionic_qcq_enable()
287 dev = lif->ionic->dev; in ionic_qcq_enable()
332 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_disable()
352 dev_dbg(lif->ionic->dev, "q_disable.index %d q_disable.qtype %d\n", in ionic_qcq_disable()
360 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_qcq_deinit()
383 devm_free_irq(lif->ionic->dev, qcq->intr.vector, &qcq->napi); in ionic_qcq_intr_free()
385 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_qcq_intr_free()
391 struct device *dev = lif->ionic->dev; in ionic_qcq_free()
439 struct device *dev = lif->ionic->dev; in ionic_qcqs_free()
499 err = ionic_bus_get_irq(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
506 ionic_intr_mask_assert(lif->ionic->idev.intr_ctrl, qcq->intr.index, in ionic_alloc_qcq_interrupt()
517 dev_to_node(lif->ionic->dev)); in ionic_alloc_qcq_interrupt()
525 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
538 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_alloc()
539 struct device *dev = lif->ionic->dev; in ionic_qcq_alloc()
707 ionic_intr_free(lif->ionic, new->intr.index); in ionic_qcq_alloc()
720 struct device *dev = lif->ionic->dev; in ionic_qcqs_alloc()
734 if (lif->ionic->nnqs_per_lif) { in ionic_qcqs_alloc()
750 lif->txqcqs = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif, in ionic_qcqs_alloc()
754 lif->rxqcqs = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif, in ionic_qcqs_alloc()
759 lif->txqstats = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif + 1, in ionic_qcqs_alloc()
763 lif->rxqstats = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif + 1, in ionic_qcqs_alloc()
790 struct device *dev = lif->ionic->dev; in ionic_lif_txq_init()
858 struct device *dev = lif->ionic->dev; in ionic_lif_rxq_init()
947 txq_i = lif->ionic->ntxqs_per_lif; in ionic_lif_create_hwstamp_txq()
983 devm_kfree(lif->ionic->dev, txq); in ionic_lif_create_hwstamp_txq()
1006 rxq_i = lif->ionic->nrxqs_per_lif; in ionic_lif_create_hwstamp_rxq()
1043 devm_kfree(lif->ionic->dev, rxq); in ionic_lif_create_hwstamp_rxq()
1185 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
1194 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
1233 struct ionic_dev *idev = &lif->ionic->idev; in ionic_adminq_napi()
1500 struct device *dev = lif->ionic->dev; in ionic_set_nic_features()
1533 dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n"); in ionic_set_nic_features()
1837 dev_err(lif->ionic->dev, "%s: Restarting queues failed\n", __func__); in ionic_tx_timeout_work()
1900 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_config()
1924 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_init()
1935 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_deinit()
2021 for (i = 0; i < lif->ionic->ntxqs_per_lif && lif->txqcqs[i]; i++) { in ionic_txrx_free()
2023 devm_kfree(lif->ionic->dev, lif->txqcqs[i]); in ionic_txrx_free()
2029 for (i = 0; i < lif->ionic->nrxqs_per_lif && lif->rxqcqs[i]; i++) { in ionic_txrx_free()
2031 devm_kfree(lif->ionic->dev, lif->rxqcqs[i]); in ionic_txrx_free()
2038 devm_kfree(lif->ionic->dev, lif->hwstamp_txq); in ionic_txrx_free()
2044 devm_kfree(lif->ionic->dev, lif->hwstamp_rxq); in ionic_txrx_free()
2082 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2114 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2175 dev_err(lif->ionic->dev, "%s: bad qcq %d\n", __func__, i); in ionic_txrx_enable()
2335 static int ionic_get_fw_vf_config(struct ionic *ionic, int vf, struct ionic_vf *vfdata) in ionic_get_fw_vf_config() argument
2342 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2349 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2356 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2371 dev_warn(ionic->dev, "Unexpected link state %u\n", comp.linkstate); in ionic_get_fw_vf_config()
2377 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2384 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2391 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2399 dev_err(ionic->dev, "Failed to get %s for VF %d\n", in ionic_get_fw_vf_config()
2409 struct ionic *ionic = lif->ionic; in ionic_get_vf_config() local
2416 down_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2418 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_config()
2424 ret = ionic_get_fw_vf_config(ionic, vf, &vfdata); in ionic_get_vf_config()
2435 up_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2443 struct ionic *ionic = lif->ionic; in ionic_get_vf_stats() local
2450 down_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2452 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_stats()
2456 vs = &ionic->vfs[vf].stats; in ionic_get_vf_stats()
2472 up_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2480 struct ionic *ionic = lif->ionic; in ionic_set_vf_mac() local
2489 down_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2491 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_mac()
2495 dev_dbg(ionic->dev, "%s: vf %d macaddr %pM\n", in ionic_set_vf_mac()
2498 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_mac()
2500 ether_addr_copy(ionic->vfs[vf].macaddr, mac); in ionic_set_vf_mac()
2503 up_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2512 struct ionic *ionic = lif->ionic; in ionic_set_vf_vlan() local
2528 down_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2530 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_vlan()
2534 dev_dbg(ionic->dev, "%s: vf %d vlan %d\n", in ionic_set_vf_vlan()
2537 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_vlan()
2539 ionic->vfs[vf].vlanid = cpu_to_le16(vlan); in ionic_set_vf_vlan()
2542 up_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2551 struct ionic *ionic = lif->ionic; in ionic_set_vf_rate() local
2561 down_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2563 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_rate()
2567 dev_dbg(ionic->dev, "%s: vf %d maxrate %d\n", in ionic_set_vf_rate()
2570 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_rate()
2572 ionic->vfs[vf].maxrate = cpu_to_le32(tx_max); in ionic_set_vf_rate()
2575 up_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2583 struct ionic *ionic = lif->ionic; in ionic_set_vf_spoofchk() local
2589 down_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2591 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_spoofchk()
2595 dev_dbg(ionic->dev, "%s: vf %d spoof %d\n", in ionic_set_vf_spoofchk()
2598 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_spoofchk()
2600 ionic->vfs[vf].spoofchk = set; in ionic_set_vf_spoofchk()
2603 up_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2611 struct ionic *ionic = lif->ionic; in ionic_set_vf_trust() local
2617 down_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2619 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_trust()
2623 dev_dbg(ionic->dev, "%s: vf %d trust %d\n", in ionic_set_vf_trust()
2626 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_trust()
2628 ionic->vfs[vf].trusted = set; in ionic_set_vf_trust()
2631 up_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2639 struct ionic *ionic = lif->ionic; in ionic_set_vf_link_state() local
2660 down_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2662 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_link_state()
2666 dev_dbg(ionic->dev, "%s: vf %d linkstate %d\n", in ionic_set_vf_link_state()
2669 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_link_state()
2671 ionic->vfs[vf].linkstate = set; in ionic_set_vf_link_state()
2674 up_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2681 struct ionic *ionic = lif->ionic; in ionic_vf_attr_replay() local
2685 if (!ionic->vfs) in ionic_vf_attr_replay()
2688 down_read(&ionic->vf_op_lock); in ionic_vf_attr_replay()
2690 for (i = 0; i < ionic->num_vfs; i++) { in ionic_vf_attr_replay()
2691 v = &ionic->vfs[i]; in ionic_vf_attr_replay()
2696 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2703 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2710 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2717 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2724 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2731 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2738 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2743 up_read(&ionic->vf_op_lock); in ionic_vf_attr_replay()
2745 ionic_vf_start(ionic); in ionic_vf_attr_replay()
2798 dev_warn(lif->ionic->dev, in ionic_cmb_reconfig()
2805 dev_err(lif->ionic->dev, in ionic_cmb_reconfig()
2813 dev_err(lif->ionic->dev, in ionic_cmb_reconfig()
2875 tx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->ntxqs_per_lif, in ionic_reconfigure_queues()
2885 rx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->nrxqs_per_lif, in ionic_reconfigure_queues()
3001 for (i = 0; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
3012 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
3019 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
3062 devm_kfree(lif->ionic->dev, tx_qcqs[i]); in ionic_reconfigure_queues()
3068 devm_kfree(lif->ionic->dev, rx_qcqs[i]); in ionic_reconfigure_queues()
3075 devm_kfree(lif->ionic->dev, rx_qcqs); in ionic_reconfigure_queues()
3079 devm_kfree(lif->ionic->dev, tx_qcqs); in ionic_reconfigure_queues()
3086 for (i = lif->nxqs; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
3104 int ionic_lif_alloc(struct ionic *ionic) in ionic_lif_alloc() argument
3106 struct device *dev = ionic->dev; in ionic_lif_alloc()
3118 ionic->ntxqs_per_lif, ionic->ntxqs_per_lif); in ionic_lif_alloc()
3129 ionic->lif = lif; in ionic_lif_alloc()
3138 err = ionic_lif_identify(ionic, lif->lif_type, lif->identity); in ionic_lif_alloc()
3140 dev_err(ionic->dev, "Cannot identify type %d: %d\n", in ionic_lif_alloc()
3149 lif->neqs = ionic->neqs_per_lif; in ionic_lif_alloc()
3150 lif->nxqs = ionic->ntxqs_per_lif; in ionic_lif_alloc()
3152 lif->ionic = ionic; in ionic_lif_alloc()
3165 lif->rx_coalesce_hw = ionic_coal_usec_to_hw(lif->ionic, in ionic_lif_alloc()
3202 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_alloc()
3239 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_reset()
3241 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
3243 ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_reset()
3244 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
3249 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_down() local
3254 dev_info(ionic->dev, "FW Down: Stopping LIFs\n"); in ionic_lif_handle_fw_down()
3260 dev_info(ionic->dev, "Surprise FW stop, stopping queues\n"); in ionic_lif_handle_fw_down()
3269 ionic_reset(ionic); in ionic_lif_handle_fw_down()
3275 dev_info(ionic->dev, "FW Down: LIFs stopped\n"); in ionic_lif_handle_fw_down()
3280 struct ionic *ionic = lif->ionic; in ionic_restart_lif() local
3286 dev_info(ionic->dev, "FW Up: clearing broken state\n"); in ionic_restart_lif()
3335 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_up() local
3341 dev_info(ionic->dev, "FW Up: restarting LIFs\n"); in ionic_lif_handle_fw_up()
3347 ionic_init_devinfo(ionic); in ionic_lif_handle_fw_up()
3348 err = ionic_identify(ionic); in ionic_lif_handle_fw_up()
3351 err = ionic_port_identify(ionic); in ionic_lif_handle_fw_up()
3354 err = ionic_port_init(ionic); in ionic_lif_handle_fw_up()
3362 dev_info(ionic->dev, "FW Up: LIFs restarted\n"); in ionic_lif_handle_fw_up()
3370 dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err); in ionic_lif_handle_fw_up()
3375 struct device *dev = lif->ionic->dev; in ionic_lif_free()
3397 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_free()
3430 struct device *dev = lif->ionic->dev; in ionic_lif_adminq_init()
3437 idev = &lif->ionic->idev; in ionic_lif_adminq_init()
3441 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3443 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_adminq_init()
3445 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3480 struct device *dev = lif->ionic->dev; in ionic_lif_notifyq_init()
3595 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_init()
3596 struct device *dev = lif->ionic->dev; in ionic_lif_init()
3601 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3603 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_init()
3605 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3612 lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_lif_init()
3620 lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num); in ionic_lif_init()
3630 if (lif->ionic->nnqs_per_lif) { in ionic_lif_init()
3664 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_init()
3703 struct ionic *ionic = container_of(nb, struct ionic, nb); in ionic_lif_notify() local
3706 if (!lif || lif->ionic != ionic) in ionic_lif_notify()
3724 INIT_WORK(&lif->ionic->nb_work, ionic_lif_notify_work); in ionic_lif_register()
3726 lif->ionic->nb.notifier_call = ionic_lif_notify; in ionic_lif_register()
3728 err = register_netdevice_notifier(&lif->ionic->nb); in ionic_lif_register()
3730 lif->ionic->nb.notifier_call = NULL; in ionic_lif_register()
3735 dev_err(lif->ionic->dev, "Cannot register net device, aborting\n"); in ionic_lif_register()
3749 if (lif->ionic->nb.notifier_call) { in ionic_lif_unregister()
3750 unregister_netdevice_notifier(&lif->ionic->nb); in ionic_lif_unregister()
3751 cancel_work_sync(&lif->ionic->nb_work); in ionic_lif_unregister()
3752 lif->ionic->nb.notifier_call = NULL; in ionic_lif_unregister()
3766 struct ionic *ionic = lif->ionic; in ionic_lif_queue_identify() local
3771 idev = &lif->ionic->idev; in ionic_lif_queue_identify()
3790 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3793 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_queue_identify()
3804 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3807 dev_err(ionic->dev, "qtype %d not supported\n", qtype); in ionic_lif_queue_identify()
3810 dev_err(ionic->dev, "q_ident failed, not supported on older FW\n"); in ionic_lif_queue_identify()
3813 dev_err(ionic->dev, "q_ident failed, qtype %d: %d\n", in ionic_lif_queue_identify()
3818 dev_dbg(ionic->dev, " qtype[%d].version = %d\n", in ionic_lif_queue_identify()
3820 dev_dbg(ionic->dev, " qtype[%d].supported = 0x%02x\n", in ionic_lif_queue_identify()
3822 dev_dbg(ionic->dev, " qtype[%d].features = 0x%04llx\n", in ionic_lif_queue_identify()
3824 dev_dbg(ionic->dev, " qtype[%d].desc_sz = %d\n", in ionic_lif_queue_identify()
3826 dev_dbg(ionic->dev, " qtype[%d].comp_sz = %d\n", in ionic_lif_queue_identify()
3828 dev_dbg(ionic->dev, " qtype[%d].sg_desc_sz = %d\n", in ionic_lif_queue_identify()
3830 dev_dbg(ionic->dev, " qtype[%d].max_sg_elems = %d\n", in ionic_lif_queue_identify()
3832 dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n", in ionic_lif_queue_identify()
3837 int ionic_lif_identify(struct ionic *ionic, u8 lif_type, in ionic_lif_identify() argument
3840 struct ionic_dev *idev = &ionic->idev; in ionic_lif_identify()
3846 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3848 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_identify()
3850 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3854 dev_dbg(ionic->dev, "capabilities 0x%llx\n", in ionic_lif_identify()
3857 dev_dbg(ionic->dev, "eth.max_ucast_filters %d\n", in ionic_lif_identify()
3859 dev_dbg(ionic->dev, "eth.max_mcast_filters %d\n", in ionic_lif_identify()
3861 dev_dbg(ionic->dev, "eth.features 0x%llx\n", in ionic_lif_identify()
3863 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_ADMINQ] %d\n", in ionic_lif_identify()
3865 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_NOTIFYQ] %d\n", in ionic_lif_identify()
3867 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_RXQ] %d\n", in ionic_lif_identify()
3869 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_TXQ] %d\n", in ionic_lif_identify()
3871 dev_dbg(ionic->dev, "eth.config.name %s\n", lid->eth.config.name); in ionic_lif_identify()
3872 dev_dbg(ionic->dev, "eth.config.mac %pM\n", lid->eth.config.mac); in ionic_lif_identify()
3873 dev_dbg(ionic->dev, "eth.config.mtu %d\n", in ionic_lif_identify()
3879 int ionic_lif_size(struct ionic *ionic) in ionic_lif_size() argument
3881 struct ionic_identity *ident = &ionic->ident; in ionic_lif_size()
3935 err = ionic_bus_alloc_irq_vectors(ionic, nintrs); in ionic_lif_size()
3937 dev_err(ionic->dev, "Can't get intrs from OS: %d\n", err); in ionic_lif_size()
3944 ionic_bus_free_irq_vectors(ionic); in ionic_lif_size()
3948 ionic->nnqs_per_lif = nnqs_per_lif; in ionic_lif_size()
3949 ionic->neqs_per_lif = neqs; in ionic_lif_size()
3950 ionic->ntxqs_per_lif = nxqs; in ionic_lif_size()
3951 ionic->nrxqs_per_lif = nxqs; in ionic_lif_size()
3952 ionic->nintrs = nintrs; in ionic_lif_size()
3954 ionic_debugfs_add_sizes(ionic); in ionic_lif_size()
3971 dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs); in ionic_lif_size()