Lines Matching refs:ionic

61 	new_coal = ionic_coal_usec_to_hw(lif->ionic, cur_moder.usec);  in ionic_dim_work()
68 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()
330 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_disable()
350 dev_dbg(lif->ionic->dev, "q_disable.index %d q_disable.qtype %d\n", in ionic_qcq_disable()
358 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_qcq_deinit()
381 devm_free_irq(lif->ionic->dev, qcq->intr.vector, &qcq->napi); in ionic_qcq_intr_free()
383 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_qcq_intr_free()
389 struct device *dev = lif->ionic->dev; in ionic_qcq_free()
437 struct device *dev = lif->ionic->dev; in ionic_qcqs_free()
497 err = ionic_bus_get_irq(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
504 ionic_intr_mask_assert(lif->ionic->idev.intr_ctrl, qcq->intr.index, in ionic_alloc_qcq_interrupt()
515 dev_to_node(lif->ionic->dev)); in ionic_alloc_qcq_interrupt()
523 ionic_intr_free(lif->ionic, qcq->intr.index); in ionic_alloc_qcq_interrupt()
536 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_alloc()
537 struct device *dev = lif->ionic->dev; in ionic_qcq_alloc()
705 ionic_intr_free(lif->ionic, new->intr.index); in ionic_qcq_alloc()
718 struct device *dev = lif->ionic->dev; in ionic_qcqs_alloc()
732 if (lif->ionic->nnqs_per_lif) { in ionic_qcqs_alloc()
748 lif->txqcqs = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif, in ionic_qcqs_alloc()
752 lif->rxqcqs = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif, in ionic_qcqs_alloc()
757 lif->txqstats = devm_kcalloc(dev, lif->ionic->ntxqs_per_lif + 1, in ionic_qcqs_alloc()
761 lif->rxqstats = devm_kcalloc(dev, lif->ionic->nrxqs_per_lif + 1, in ionic_qcqs_alloc()
788 struct device *dev = lif->ionic->dev; in ionic_lif_txq_init()
856 struct device *dev = lif->ionic->dev; in ionic_lif_rxq_init()
945 txq_i = lif->ionic->ntxqs_per_lif; in ionic_lif_create_hwstamp_txq()
981 devm_kfree(lif->ionic->dev, txq); in ionic_lif_create_hwstamp_txq()
1004 rxq_i = lif->ionic->nrxqs_per_lif; in ionic_lif_create_hwstamp_rxq()
1041 devm_kfree(lif->ionic->dev, rxq); in ionic_lif_create_hwstamp_rxq()
1183 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
1192 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
1231 struct ionic_dev *idev = &lif->ionic->idev; in ionic_adminq_napi()
1498 struct device *dev = lif->ionic->dev; in ionic_set_nic_features()
1531 dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n"); in ionic_set_nic_features()
1835 dev_err(lif->ionic->dev, "%s: Restarting queues failed\n", __func__); in ionic_tx_timeout_work()
1898 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_config()
1922 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_init()
1933 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_deinit()
2019 for (i = 0; i < lif->ionic->ntxqs_per_lif && lif->txqcqs[i]; i++) { in ionic_txrx_free()
2021 devm_kfree(lif->ionic->dev, lif->txqcqs[i]); in ionic_txrx_free()
2027 for (i = 0; i < lif->ionic->nrxqs_per_lif && lif->rxqcqs[i]; i++) { in ionic_txrx_free()
2029 devm_kfree(lif->ionic->dev, lif->rxqcqs[i]); in ionic_txrx_free()
2036 devm_kfree(lif->ionic->dev, lif->hwstamp_txq); in ionic_txrx_free()
2042 devm_kfree(lif->ionic->dev, lif->hwstamp_rxq); in ionic_txrx_free()
2080 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2112 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
2173 dev_err(lif->ionic->dev, "%s: bad qcq %d\n", __func__, i); in ionic_txrx_enable()
2333 static int ionic_get_fw_vf_config(struct ionic *ionic, int vf, struct ionic_vf *vfdata) in ionic_get_fw_vf_config() argument
2340 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2347 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2354 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2369 dev_warn(ionic->dev, "Unexpected link state %u\n", comp.linkstate); in ionic_get_fw_vf_config()
2375 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2382 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2389 err = ionic_dev_cmd_vf_getattr(ionic, vf, attr, &comp); in ionic_get_fw_vf_config()
2397 dev_err(ionic->dev, "Failed to get %s for VF %d\n", in ionic_get_fw_vf_config()
2407 struct ionic *ionic = lif->ionic; in ionic_get_vf_config() local
2414 down_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2416 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_config()
2422 ret = ionic_get_fw_vf_config(ionic, vf, &vfdata); in ionic_get_vf_config()
2433 up_read(&ionic->vf_op_lock); in ionic_get_vf_config()
2441 struct ionic *ionic = lif->ionic; in ionic_get_vf_stats() local
2448 down_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2450 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_get_vf_stats()
2454 vs = &ionic->vfs[vf].stats; in ionic_get_vf_stats()
2470 up_read(&ionic->vf_op_lock); in ionic_get_vf_stats()
2478 struct ionic *ionic = lif->ionic; in ionic_set_vf_mac() local
2487 down_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2489 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_mac()
2493 dev_dbg(ionic->dev, "%s: vf %d macaddr %pM\n", in ionic_set_vf_mac()
2496 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_mac()
2498 ether_addr_copy(ionic->vfs[vf].macaddr, mac); in ionic_set_vf_mac()
2501 up_write(&ionic->vf_op_lock); in ionic_set_vf_mac()
2510 struct ionic *ionic = lif->ionic; in ionic_set_vf_vlan() local
2526 down_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2528 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_vlan()
2532 dev_dbg(ionic->dev, "%s: vf %d vlan %d\n", in ionic_set_vf_vlan()
2535 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_vlan()
2537 ionic->vfs[vf].vlanid = cpu_to_le16(vlan); in ionic_set_vf_vlan()
2540 up_write(&ionic->vf_op_lock); in ionic_set_vf_vlan()
2549 struct ionic *ionic = lif->ionic; in ionic_set_vf_rate() local
2559 down_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2561 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_rate()
2565 dev_dbg(ionic->dev, "%s: vf %d maxrate %d\n", in ionic_set_vf_rate()
2568 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_rate()
2570 ionic->vfs[vf].maxrate = cpu_to_le32(tx_max); in ionic_set_vf_rate()
2573 up_write(&ionic->vf_op_lock); in ionic_set_vf_rate()
2581 struct ionic *ionic = lif->ionic; in ionic_set_vf_spoofchk() local
2587 down_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2589 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_spoofchk()
2593 dev_dbg(ionic->dev, "%s: vf %d spoof %d\n", in ionic_set_vf_spoofchk()
2596 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_spoofchk()
2598 ionic->vfs[vf].spoofchk = set; in ionic_set_vf_spoofchk()
2601 up_write(&ionic->vf_op_lock); in ionic_set_vf_spoofchk()
2609 struct ionic *ionic = lif->ionic; in ionic_set_vf_trust() local
2615 down_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2617 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_trust()
2621 dev_dbg(ionic->dev, "%s: vf %d trust %d\n", in ionic_set_vf_trust()
2624 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_trust()
2626 ionic->vfs[vf].trusted = set; in ionic_set_vf_trust()
2629 up_write(&ionic->vf_op_lock); in ionic_set_vf_trust()
2637 struct ionic *ionic = lif->ionic; in ionic_set_vf_link_state() local
2658 down_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2660 if (vf >= pci_num_vf(ionic->pdev) || !ionic->vfs) { in ionic_set_vf_link_state()
2664 dev_dbg(ionic->dev, "%s: vf %d linkstate %d\n", in ionic_set_vf_link_state()
2667 ret = ionic_set_vf_config(ionic, vf, &vfc); in ionic_set_vf_link_state()
2669 ionic->vfs[vf].linkstate = set; in ionic_set_vf_link_state()
2672 up_write(&ionic->vf_op_lock); in ionic_set_vf_link_state()
2679 struct ionic *ionic = lif->ionic; in ionic_vf_attr_replay() local
2683 if (!ionic->vfs) in ionic_vf_attr_replay()
2686 down_read(&ionic->vf_op_lock); in ionic_vf_attr_replay()
2688 for (i = 0; i < ionic->num_vfs; i++) { in ionic_vf_attr_replay()
2689 v = &ionic->vfs[i]; in ionic_vf_attr_replay()
2694 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2701 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2708 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2715 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2722 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2729 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2736 ionic_set_vf_config(ionic, i, &vfc); in ionic_vf_attr_replay()
2741 up_read(&ionic->vf_op_lock); in ionic_vf_attr_replay()
2743 ionic_vf_start(ionic); in ionic_vf_attr_replay()
2796 dev_warn(lif->ionic->dev, in ionic_cmb_reconfig()
2803 dev_err(lif->ionic->dev, in ionic_cmb_reconfig()
2811 dev_err(lif->ionic->dev, in ionic_cmb_reconfig()
2873 tx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->ntxqs_per_lif, in ionic_reconfigure_queues()
2883 rx_qcqs = devm_kcalloc(lif->ionic->dev, lif->ionic->nrxqs_per_lif, in ionic_reconfigure_queues()
2999 for (i = 0; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
3010 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
3017 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_reconfigure_queues()
3060 devm_kfree(lif->ionic->dev, tx_qcqs[i]); in ionic_reconfigure_queues()
3066 devm_kfree(lif->ionic->dev, rx_qcqs[i]); in ionic_reconfigure_queues()
3073 devm_kfree(lif->ionic->dev, rx_qcqs); in ionic_reconfigure_queues()
3077 devm_kfree(lif->ionic->dev, tx_qcqs); in ionic_reconfigure_queues()
3084 for (i = lif->nxqs; i < lif->ionic->ntxqs_per_lif; i++) { in ionic_reconfigure_queues()
3102 int ionic_lif_alloc(struct ionic *ionic) in ionic_lif_alloc() argument
3104 struct device *dev = ionic->dev; in ionic_lif_alloc()
3116 ionic->ntxqs_per_lif, ionic->ntxqs_per_lif); in ionic_lif_alloc()
3127 ionic->lif = lif; in ionic_lif_alloc()
3136 err = ionic_lif_identify(ionic, lif->lif_type, lif->identity); in ionic_lif_alloc()
3138 dev_err(ionic->dev, "Cannot identify type %d: %d\n", in ionic_lif_alloc()
3147 lif->neqs = ionic->neqs_per_lif; in ionic_lif_alloc()
3148 lif->nxqs = ionic->ntxqs_per_lif; in ionic_lif_alloc()
3150 lif->ionic = ionic; in ionic_lif_alloc()
3163 lif->rx_coalesce_hw = ionic_coal_usec_to_hw(lif->ionic, in ionic_lif_alloc()
3200 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_alloc()
3237 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_reset()
3242 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
3244 ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_reset()
3245 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
3250 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_down() local
3255 dev_info(ionic->dev, "FW Down: Stopping LIFs\n"); in ionic_lif_handle_fw_down()
3261 dev_info(ionic->dev, "Surprise FW stop, stopping queues\n"); in ionic_lif_handle_fw_down()
3270 ionic_reset(ionic); in ionic_lif_handle_fw_down()
3276 dev_info(ionic->dev, "FW Down: LIFs stopped\n"); in ionic_lif_handle_fw_down()
3281 struct ionic *ionic = lif->ionic; in ionic_restart_lif() local
3287 dev_info(ionic->dev, "FW Up: clearing broken state\n"); in ionic_restart_lif()
3336 struct ionic *ionic = lif->ionic; in ionic_lif_handle_fw_up() local
3342 dev_info(ionic->dev, "FW Up: restarting LIFs\n"); in ionic_lif_handle_fw_up()
3348 ionic_init_devinfo(ionic); in ionic_lif_handle_fw_up()
3349 err = ionic_identify(ionic); in ionic_lif_handle_fw_up()
3352 err = ionic_port_identify(ionic); in ionic_lif_handle_fw_up()
3355 err = ionic_port_init(ionic); in ionic_lif_handle_fw_up()
3363 dev_info(ionic->dev, "FW Up: LIFs restarted\n"); in ionic_lif_handle_fw_up()
3371 dev_err(ionic->dev, "FW Up: LIFs restart failed - err %d\n", err); in ionic_lif_handle_fw_up()
3376 struct device *dev = lif->ionic->dev; in ionic_lif_free()
3398 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_free()
3431 struct device *dev = lif->ionic->dev; in ionic_lif_adminq_init()
3438 idev = &lif->ionic->idev; in ionic_lif_adminq_init()
3442 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3444 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_adminq_init()
3446 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
3484 struct device *dev = lif->ionic->dev; in ionic_lif_notifyq_init()
3599 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_init()
3600 struct device *dev = lif->ionic->dev; in ionic_lif_init()
3605 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3607 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_init()
3609 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
3616 lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_lif_init()
3624 lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num); in ionic_lif_init()
3634 if (lif->ionic->nnqs_per_lif) { in ionic_lif_init()
3668 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_init()
3707 struct ionic *ionic = container_of(nb, struct ionic, nb); in ionic_lif_notify() local
3710 if (!lif || lif->ionic != ionic) in ionic_lif_notify()
3728 INIT_WORK(&lif->ionic->nb_work, ionic_lif_notify_work); in ionic_lif_register()
3730 lif->ionic->nb.notifier_call = ionic_lif_notify; in ionic_lif_register()
3732 err = register_netdevice_notifier(&lif->ionic->nb); in ionic_lif_register()
3734 lif->ionic->nb.notifier_call = NULL; in ionic_lif_register()
3739 dev_err(lif->ionic->dev, "Cannot register net device: %d, aborting\n", err); in ionic_lif_register()
3753 if (lif->ionic->nb.notifier_call) { in ionic_lif_unregister()
3754 unregister_netdevice_notifier(&lif->ionic->nb); in ionic_lif_unregister()
3755 cancel_work_sync(&lif->ionic->nb_work); in ionic_lif_unregister()
3756 lif->ionic->nb.notifier_call = NULL; in ionic_lif_unregister()
3770 struct ionic *ionic = lif->ionic; in ionic_lif_queue_identify() local
3775 idev = &lif->ionic->idev; in ionic_lif_queue_identify()
3794 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3797 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_queue_identify()
3808 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_queue_identify()
3811 dev_err(ionic->dev, "qtype %d not supported\n", qtype); in ionic_lif_queue_identify()
3814 dev_err(ionic->dev, "q_ident failed, not supported on older FW\n"); in ionic_lif_queue_identify()
3817 dev_err(ionic->dev, "q_ident failed, qtype %d: %d\n", in ionic_lif_queue_identify()
3822 dev_dbg(ionic->dev, " qtype[%d].version = %d\n", in ionic_lif_queue_identify()
3824 dev_dbg(ionic->dev, " qtype[%d].supported = 0x%02x\n", in ionic_lif_queue_identify()
3826 dev_dbg(ionic->dev, " qtype[%d].features = 0x%04llx\n", in ionic_lif_queue_identify()
3828 dev_dbg(ionic->dev, " qtype[%d].desc_sz = %d\n", in ionic_lif_queue_identify()
3830 dev_dbg(ionic->dev, " qtype[%d].comp_sz = %d\n", in ionic_lif_queue_identify()
3832 dev_dbg(ionic->dev, " qtype[%d].sg_desc_sz = %d\n", in ionic_lif_queue_identify()
3834 dev_dbg(ionic->dev, " qtype[%d].max_sg_elems = %d\n", in ionic_lif_queue_identify()
3836 dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n", in ionic_lif_queue_identify()
3841 int ionic_lif_identify(struct ionic *ionic, u8 lif_type, in ionic_lif_identify() argument
3844 struct ionic_dev *idev = &ionic->idev; in ionic_lif_identify()
3850 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3852 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_identify()
3854 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_identify()
3858 dev_dbg(ionic->dev, "capabilities 0x%llx\n", in ionic_lif_identify()
3861 dev_dbg(ionic->dev, "eth.max_ucast_filters %d\n", in ionic_lif_identify()
3863 dev_dbg(ionic->dev, "eth.max_mcast_filters %d\n", in ionic_lif_identify()
3865 dev_dbg(ionic->dev, "eth.features 0x%llx\n", in ionic_lif_identify()
3867 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_ADMINQ] %d\n", in ionic_lif_identify()
3869 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_NOTIFYQ] %d\n", in ionic_lif_identify()
3871 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_RXQ] %d\n", in ionic_lif_identify()
3873 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_TXQ] %d\n", in ionic_lif_identify()
3875 dev_dbg(ionic->dev, "eth.config.name %s\n", lid->eth.config.name); in ionic_lif_identify()
3876 dev_dbg(ionic->dev, "eth.config.mac %pM\n", lid->eth.config.mac); in ionic_lif_identify()
3877 dev_dbg(ionic->dev, "eth.config.mtu %d\n", in ionic_lif_identify()
3883 int ionic_lif_size(struct ionic *ionic) in ionic_lif_size() argument
3885 struct ionic_identity *ident = &ionic->ident; in ionic_lif_size()
3939 err = ionic_bus_alloc_irq_vectors(ionic, nintrs); in ionic_lif_size()
3941 dev_err(ionic->dev, "Can't get intrs from OS: %d\n", err); in ionic_lif_size()
3948 ionic_bus_free_irq_vectors(ionic); in ionic_lif_size()
3952 ionic->nnqs_per_lif = nnqs_per_lif; in ionic_lif_size()
3953 ionic->neqs_per_lif = neqs; in ionic_lif_size()
3954 ionic->ntxqs_per_lif = nxqs; in ionic_lif_size()
3955 ionic->nrxqs_per_lif = nxqs; in ionic_lif_size()
3956 ionic->nintrs = nintrs; in ionic_lif_size()
3958 ionic_debugfs_add_sizes(ionic); in ionic_lif_size()
3975 dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs); in ionic_lif_size()