Lines Matching refs:ionic
136 struct device *dev = lif->ionic->dev; in ionic_request_irq()
154 struct ionic *ionic = lif->ionic; in ionic_intr_alloc() local
157 index = find_first_zero_bit(ionic->intrs, ionic->nintrs); in ionic_intr_alloc()
158 if (index == ionic->nintrs) { in ionic_intr_alloc()
160 __func__, index, ionic->nintrs); in ionic_intr_alloc()
164 set_bit(index, ionic->intrs); in ionic_intr_alloc()
165 ionic_intr_init(&ionic->idev, intr, index); in ionic_intr_alloc()
172 if (index != INTR_INDEX_NOT_ASSIGNED && index < lif->ionic->nintrs) in ionic_intr_free()
173 clear_bit(index, lif->ionic->intrs); in ionic_intr_free()
194 idev = &lif->ionic->idev; in ionic_qcq_enable()
195 dev = lif->ionic->dev; in ionic_qcq_enable()
230 idev = &lif->ionic->idev; in ionic_qcq_disable()
231 dev = lif->ionic->dev; in ionic_qcq_disable()
249 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_qcq_deinit()
250 struct device *dev = lif->ionic->dev; in ionic_lif_qcq_deinit()
272 struct device *dev = lif->ionic->dev; in ionic_qcq_free()
293 struct device *dev = lif->ionic->dev; in ionic_qcqs_free()
341 struct ionic_dev *idev = &lif->ionic->idev; in ionic_qcq_alloc()
343 struct device *dev = lif->ionic->dev; in ionic_qcq_alloc()
402 err = ionic_bus_get_irq(lif->ionic, new->intr.index); in ionic_qcq_alloc()
474 struct device *dev = lif->ionic->dev; in ionic_qcqs_alloc()
489 if (lif->ionic->nnqs_per_lif) { in ionic_qcqs_alloc()
555 struct device *dev = lif->ionic->dev; in ionic_lif_txq_init()
602 struct device *dev = lif->ionic->dev; in ionic_lif_rxq_init()
674 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
700 struct ionic_dev *idev = &lif->ionic->idev; in ionic_notifyq_clean()
858 struct ionic *ionic = lif->ionic; in ionic_lif_addr() local
868 nmfilters = le32_to_cpu(ionic->ident.lif.eth.max_mcast_filters); in ionic_lif_addr()
869 nufilters = le32_to_cpu(ionic->ident.lif.eth.max_ucast_filters); in ionic_lif_addr()
982 ident = &lif->ionic->ident; in ionic_set_rx_mode()
1067 struct device *dev = lif->ionic->dev; in ionic_set_nic_features()
1091 dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n"); in ionic_set_nic_features()
1354 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_config()
1381 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_rss_init()
1452 coal = ionic_coal_usec_to_hw(lif->ionic, lif->rx_coalesce_usecs); in ionic_txrx_alloc()
1464 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_txrx_alloc()
1582 dev_dbg(lif->ionic->dev, "%s: %s state=DOWN\n", in ionic_stop()
1586 dev_dbg(lif->ionic->dev, "%s: %s state=UP\n", __func__, lif->name); in ionic_stop()
1638 static struct ionic_lif *ionic_lif_alloc(struct ionic *ionic, unsigned int index) in ionic_lif_alloc() argument
1640 struct device *dev = ionic->dev; in ionic_lif_alloc()
1648 ionic->ntxqs_per_lif, ionic->ntxqs_per_lif); in ionic_lif_alloc()
1658 ionic->master_lif = lif; in ionic_lif_alloc()
1666 lif->neqs = ionic->neqs_per_lif; in ionic_lif_alloc()
1667 lif->nxqs = ionic->ntxqs_per_lif; in ionic_lif_alloc()
1669 lif->ionic = ionic; in ionic_lif_alloc()
1675 coal = ionic_coal_usec_to_hw(lif->ionic, IONIC_ITR_COAL_USEC_DEFAULT); in ionic_lif_alloc()
1676 lif->rx_coalesce_usecs = ionic_coal_hw_to_usec(lif->ionic, coal); in ionic_lif_alloc()
1702 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_lif_alloc()
1714 list_add_tail(&lif->list, &ionic->lifs); in ionic_lif_alloc()
1731 int ionic_lifs_alloc(struct ionic *ionic) in ionic_lifs_alloc() argument
1735 INIT_LIST_HEAD(&ionic->lifs); in ionic_lifs_alloc()
1738 set_bit(0, ionic->lifbits); in ionic_lifs_alloc()
1739 lif = ionic_lif_alloc(ionic, 0); in ionic_lifs_alloc()
1746 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_reset()
1748 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
1750 ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_reset()
1751 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_reset()
1756 struct device *dev = lif->ionic->dev; in ionic_lif_free()
1774 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_free()
1785 void ionic_lifs_free(struct ionic *ionic) in ionic_lifs_free() argument
1790 list_for_each_safe(cur, tmp, &ionic->lifs) { in ionic_lifs_free()
1814 void ionic_lifs_deinit(struct ionic *ionic) in ionic_lifs_deinit() argument
1819 list_for_each_safe(cur, tmp, &ionic->lifs) { in ionic_lifs_deinit()
1827 struct device *dev = lif->ionic->dev; in ionic_lif_adminq_init()
1834 idev = &lif->ionic->idev; in ionic_lif_adminq_init()
1838 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
1840 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_adminq_init()
1842 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_adminq_init()
1881 struct device *dev = lif->ionic->dev; in ionic_lif_notifyq_init()
1967 struct ionic_dev *idev = &lif->ionic->idev; in ionic_lif_init()
1968 struct device *dev = lif->ionic->dev; in ionic_lif_init()
1975 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
1977 err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_lif_init()
1979 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_lif_init()
1986 lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); in ionic_lif_init()
2003 lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num); in ionic_lif_init()
2014 if (lif->ionic->nnqs_per_lif) { in ionic_lif_init()
2045 ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage); in ionic_lif_init()
2054 int ionic_lifs_init(struct ionic *ionic) in ionic_lifs_init() argument
2060 list_for_each_safe(cur, tmp, &ionic->lifs) { in ionic_lifs_init()
2103 struct ionic *ionic = container_of(nb, struct ionic, nb); in ionic_lif_notify() local
2106 if (!lif || lif->ionic != ionic) in ionic_lif_notify()
2118 int ionic_lifs_register(struct ionic *ionic) in ionic_lifs_register() argument
2122 INIT_WORK(&ionic->nb_work, ionic_lif_notify_work); in ionic_lifs_register()
2124 ionic->nb.notifier_call = ionic_lif_notify; in ionic_lifs_register()
2126 err = register_netdevice_notifier(&ionic->nb); in ionic_lifs_register()
2128 ionic->nb.notifier_call = NULL; in ionic_lifs_register()
2131 err = register_netdev(ionic->master_lif->netdev); in ionic_lifs_register()
2133 dev_err(ionic->dev, "Cannot register net device, aborting\n"); in ionic_lifs_register()
2137 ionic_link_status_check_request(ionic->master_lif); in ionic_lifs_register()
2138 ionic->master_lif->registered = true; in ionic_lifs_register()
2143 void ionic_lifs_unregister(struct ionic *ionic) in ionic_lifs_unregister() argument
2145 if (ionic->nb.notifier_call) { in ionic_lifs_unregister()
2146 unregister_netdevice_notifier(&ionic->nb); in ionic_lifs_unregister()
2147 cancel_work_sync(&ionic->nb_work); in ionic_lifs_unregister()
2148 ionic->nb.notifier_call = NULL; in ionic_lifs_unregister()
2155 cancel_work_sync(&ionic->master_lif->deferred.work); in ionic_lifs_unregister()
2156 cancel_work_sync(&ionic->master_lif->tx_timeout_work); in ionic_lifs_unregister()
2157 if (ionic->master_lif->netdev->reg_state == NETREG_REGISTERED) in ionic_lifs_unregister()
2158 unregister_netdev(ionic->master_lif->netdev); in ionic_lifs_unregister()
2161 int ionic_lif_identify(struct ionic *ionic, u8 lif_type, in ionic_lif_identify() argument
2164 struct ionic_dev *idev = &ionic->idev; in ionic_lif_identify()
2170 mutex_lock(&ionic->dev_cmd_lock); in ionic_lif_identify()
2172 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_lif_identify()
2174 mutex_unlock(&ionic->dev_cmd_lock); in ionic_lif_identify()
2178 dev_dbg(ionic->dev, "capabilities 0x%llx\n", in ionic_lif_identify()
2181 dev_dbg(ionic->dev, "eth.max_ucast_filters %d\n", in ionic_lif_identify()
2183 dev_dbg(ionic->dev, "eth.max_mcast_filters %d\n", in ionic_lif_identify()
2185 dev_dbg(ionic->dev, "eth.features 0x%llx\n", in ionic_lif_identify()
2187 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_ADMINQ] %d\n", in ionic_lif_identify()
2189 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_NOTIFYQ] %d\n", in ionic_lif_identify()
2191 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_RXQ] %d\n", in ionic_lif_identify()
2193 dev_dbg(ionic->dev, "eth.queue_count[IONIC_QTYPE_TXQ] %d\n", in ionic_lif_identify()
2195 dev_dbg(ionic->dev, "eth.config.name %s\n", lid->eth.config.name); in ionic_lif_identify()
2196 dev_dbg(ionic->dev, "eth.config.mac %pM\n", lid->eth.config.mac); in ionic_lif_identify()
2197 dev_dbg(ionic->dev, "eth.config.mtu %d\n", in ionic_lif_identify()
2203 int ionic_lifs_size(struct ionic *ionic) in ionic_lifs_size() argument
2205 struct ionic_identity *ident = &ionic->ident; in ionic_lifs_size()
2239 err = ionic_bus_alloc_irq_vectors(ionic, nintrs); in ionic_lifs_size()
2241 dev_err(ionic->dev, "Can't get intrs from OS: %d\n", err); in ionic_lifs_size()
2248 ionic_bus_free_irq_vectors(ionic); in ionic_lifs_size()
2252 ionic->nnqs_per_lif = nnqs_per_lif; in ionic_lifs_size()
2253 ionic->neqs_per_lif = neqs; in ionic_lifs_size()
2254 ionic->ntxqs_per_lif = nxqs; in ionic_lifs_size()
2255 ionic->nrxqs_per_lif = nxqs; in ionic_lifs_size()
2256 ionic->nintrs = nintrs; in ionic_lifs_size()
2258 ionic_debugfs_add_sizes(ionic); in ionic_lifs_size()
2275 dev_err(ionic->dev, "Can't get minimum %d intrs from OS\n", min_intrs); in ionic_lifs_size()