lif                90 drivers/media/platform/vsp1/vsp1.h 	struct vsp1_lif *lif[VSP1_MAX_LIF];
lif               260 drivers/media/platform/vsp1/vsp1_drm.c 				__func__, pipe->lif->index,
lif               293 drivers/media/platform/vsp1/vsp1_drm.c 				__func__, pipe->lif->index, BRX_NAME(brx));
lif               307 drivers/media/platform/vsp1/vsp1_drm.c 					 owner_pipe->pipe.lif->index);
lif               322 drivers/media/platform/vsp1/vsp1_drm.c 			__func__, pipe->lif->index, BRX_NAME(brx));
lif               510 drivers/media/platform/vsp1/vsp1_drm.c 	ret = v4l2_subdev_call(&pipe->lif->subdev, pad, set_fmt, NULL,
lif               517 drivers/media/platform/vsp1/vsp1_drm.c 		format.format.code, pipe->lif->index);
lif               527 drivers/media/platform/vsp1/vsp1_drm.c 			pipe->lif->index);
lif               692 drivers/media/platform/vsp1/vsp1_drm.c 			__func__, pipe->lif->index,
lif               959 drivers/media/platform/vsp1/vsp1_drm.c 		pipe->lif = &vsp1->lif[i]->entity;
lif               962 drivers/media/platform/vsp1/vsp1_drm.c 		pipe->output->entity.sink = pipe->lif;
lif               966 drivers/media/platform/vsp1/vsp1_drm.c 		pipe->lif->pipe = pipe;
lif               967 drivers/media/platform/vsp1/vsp1_drm.c 		list_add_tail(&pipe->lif->list_pipe, &pipe->entities);
lif               169 drivers/media/platform/vsp1/vsp1_drv.c 		if (!vsp1->lif[i])
lif               174 drivers/media/platform/vsp1/vsp1_drv.c 					    &vsp1->lif[i]->entity.subdev.entity,
lif               343 drivers/media/platform/vsp1/vsp1_drv.c 			struct vsp1_lif *lif;
lif               345 drivers/media/platform/vsp1/vsp1_drv.c 			lif = vsp1_lif_create(vsp1, i);
lif               346 drivers/media/platform/vsp1/vsp1_drv.c 			if (IS_ERR(lif)) {
lif               347 drivers/media/platform/vsp1/vsp1_drv.c 				ret = PTR_ERR(lif);
lif               351 drivers/media/platform/vsp1/vsp1_drv.c 			vsp1->lif[i] = lif;
lif               352 drivers/media/platform/vsp1/vsp1_drv.c 			list_add_tail(&lif->entity.list_dev, &vsp1->entities);
lif                26 drivers/media/platform/vsp1/vsp1_lif.c static inline void vsp1_lif_write(struct vsp1_lif *lif,
lif                29 drivers/media/platform/vsp1/vsp1_lif.c 	vsp1_dl_body_write(dlb, reg + lif->entity.index * VI6_LIF_OFFSET,
lif                91 drivers/media/platform/vsp1/vsp1_lif.c 	struct vsp1_lif *lif = to_lif(&entity->subdev);
lif                96 drivers/media/platform/vsp1/vsp1_lif.c 	format = vsp1_entity_get_pad_format(&lif->entity, lif->entity.config,
lif               122 drivers/media/platform/vsp1/vsp1_lif.c 	vsp1_lif_write(lif, dlb, VI6_LIF_CSBTH,
lif               126 drivers/media/platform/vsp1/vsp1_lif.c 	vsp1_lif_write(lif, dlb, VI6_LIF_CTRL,
lif               139 drivers/media/platform/vsp1/vsp1_lif.c 		vsp1_lif_write(lif, dlb, VI6_LIF_LBA,
lif               154 drivers/media/platform/vsp1/vsp1_lif.c 	struct vsp1_lif *lif;
lif               157 drivers/media/platform/vsp1/vsp1_lif.c 	lif = devm_kzalloc(vsp1->dev, sizeof(*lif), GFP_KERNEL);
lif               158 drivers/media/platform/vsp1/vsp1_lif.c 	if (lif == NULL)
lif               161 drivers/media/platform/vsp1/vsp1_lif.c 	lif->entity.ops = &lif_entity_ops;
lif               162 drivers/media/platform/vsp1/vsp1_lif.c 	lif->entity.type = VSP1_ENTITY_LIF;
lif               163 drivers/media/platform/vsp1/vsp1_lif.c 	lif->entity.index = index;
lif               170 drivers/media/platform/vsp1/vsp1_lif.c 	ret = vsp1_entity_init(vsp1, &lif->entity, "lif", 2, &lif_ops,
lif               175 drivers/media/platform/vsp1/vsp1_lif.c 	return lif;
lif               271 drivers/media/platform/vsp1/vsp1_pipe.c 	pipe->lif = NULL;
lif               319 drivers/media/platform/vsp1/vsp1_pipe.c 	if (pipe->lif) {
lif               368 drivers/media/platform/vsp1/vsp1_pipe.c 	if (!pipe->lif)
lif               133 drivers/media/platform/vsp1/vsp1_pipe.h 	struct vsp1_entity *lif;
lif               601 drivers/media/platform/vsp1/vsp1_video.c 			pipe->lif = e;
lif               279 drivers/media/platform/vsp1/vsp1_wpf.c 	if (!pipe->lif || wpf->writeback) {
lif               436 drivers/media/platform/vsp1/vsp1_wpf.c 	if (pipe->lif && !wpf->writeback)
lif                70 drivers/net/ethernet/cisco/enic/vnic_resource.h 	u16 lif;			/* loopback lif for mgmt frames */
lif                60 drivers/net/ethernet/pensando/ionic/ionic.h int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx);
lif               185 drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c 				 &ionic->ident.lif);
lif                50 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	seq_printf(seq, "max_ucast_filters:  %d\n", ident->lif.eth.max_ucast_filters);
lif                51 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	seq_printf(seq, "max_mcast_filters:  %d\n", ident->lif.eth.max_mcast_filters);
lif                70 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 			   (u32 *)&ionic->ident.lif.eth.config.queue_count[IONIC_QTYPE_TXQ]);
lif                72 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 			   (u32 *)&ionic->ident.lif.eth.config.queue_count[IONIC_QTYPE_RXQ]);
lif               113 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               116 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               120 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	struct device *dev = lif->ionic->dev;
lif               124 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	qcq->dentry = debugfs_create_dir(q->name, lif->dentry);
lif               209 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 				   (u64 *)&lif->info->status.eid);
lif               211 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 				   (u16 *)&lif->info->status.link_status);
lif               213 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 				   (u32 *)&lif->info->status.link_speed);
lif               215 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 				   (u16 *)&lif->info->status.link_down_count);
lif               229 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c void ionic_debugfs_add_lif(struct ionic_lif *lif)
lif               231 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	lif->dentry = debugfs_create_dir(lif->name, lif->ionic->dentry);
lif               232 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	debugfs_create_file("netdev", 0400, lif->dentry,
lif               233 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 			    lif->netdev, &netdev_fops);
lif               236 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c void ionic_debugfs_del_lif(struct ionic_lif *lif)
lif               238 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	debugfs_remove_recursive(lif->dentry);
lif               239 drivers/net/ethernet/pensando/ionic/ionic_debugfs.c 	lif->dentry = NULL;
lif                17 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h void ionic_debugfs_add_lif(struct ionic_lif *lif);
lif                18 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq);
lif                19 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h void ionic_debugfs_del_lif(struct ionic_lif *lif);
lif                28 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h static inline void ionic_debugfs_add_lif(struct ionic_lif *lif) { }
lif                29 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h static inline void ionic_debugfs_add_qcq(struct ionic_lif *lif, struct ionic_qcq *qcq) { }
lif                30 drivers/net/ethernet/pensando/ionic/ionic_debugfs.h static inline void ionic_debugfs_del_lif(struct ionic_lif *lif) { }
lif               288 drivers/net/ethernet/pensando/ionic/ionic_dev.c int ionic_db_page_num(struct ionic_lif *lif, int pid)
lif               290 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	return (lif->hw_index * lif->dbid_count) + pid;
lif               293 drivers/net/ethernet/pensando/ionic/ionic_dev.c int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq,
lif               308 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	cq->lif = lif;
lif               373 drivers/net/ethernet/pensando/ionic/ionic_dev.c int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev,
lif               389 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	q->lif = lif;
lif               399 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	snprintf(q->name, sizeof(q->name), "L%d-%s%u", lif->index, name, index);
lif               443 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	struct device *dev = q->lif->ionic->dev;
lif               444 drivers/net/ethernet/pensando/ionic/ionic_dev.c 	struct ionic_lif *lif = q->lif;
lif               451 drivers/net/ethernet/pensando/ionic/ionic_dev.c 		q->lif->index, q->name, q->hw_type, q->hw_index,
lif               455 drivers/net/ethernet/pensando/ionic/ionic_dev.c 		ionic_dbell_ring(lif->kern_dbpage, q->hw_type,
lif               483 drivers/net/ethernet/pensando/ionic/ionic_dev.c 		dev_err(q->lif->ionic->dev,
lif               171 drivers/net/ethernet/pensando/ionic/ionic_dev.h 	struct ionic_lif *lif;
lif               207 drivers/net/ethernet/pensando/ionic/ionic_dev.h 	struct ionic_lif *lif;
lif               274 drivers/net/ethernet/pensando/ionic/ionic_dev.h int ionic_db_page_num(struct ionic_lif *lif, int pid);
lif               276 drivers/net/ethernet/pensando/ionic/ionic_dev.h int ionic_cq_init(struct ionic_lif *lif, struct ionic_cq *cq,
lif               287 drivers/net/ethernet/pensando/ionic/ionic_dev.h int ionic_q_init(struct ionic_lif *lif, struct ionic_dev *idev,
lif                19 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c static void ionic_get_stats_strings(struct ionic_lif *lif, u8 *buf)
lif                24 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		ionic_stats_groups[i].get_strings(lif, &buf);
lif                30 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif;
lif                33 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	lif = netdev_priv(netdev);
lif                37 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		ionic_stats_groups[i].get_values(lif, &buf);
lif                40 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c static int ionic_get_stats_count(struct ionic_lif *lif)
lif                45 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		num_stats += ionic_stats_groups[i].get_count(lif);
lif                52 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif                57 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		count = ionic_get_stats_count(lif);
lif                69 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif                73 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		ionic_get_stats_strings(lif, buf);
lif                85 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif                86 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic *ionic = lif->ionic;
lif               104 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               110 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	memcpy_fromio(p, lif->ionic->idev.dev_info_regs->words, size);
lif               113 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	memcpy_fromio(p, lif->ionic->idev.dev_cmd_regs->words, size);
lif               119 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               120 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               204 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		dev_info(lif->ionic->dev, "unknown xcvr type pid=%d / 0x%x\n",
lif               232 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		ks->base.speed = le32_to_cpu(lif->info->status.link_speed);
lif               234 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		if (le16_to_cpu(lif->info->status.link_status))
lif               254 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               255 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic *ionic = lif->ionic;
lif               261 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	idev = &lif->ionic->idev;
lif               313 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               318 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	pause_type = lif->ionic->idev.port_info->config.pause_type;
lif               328 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               329 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic *ionic = lif->ionic;
lif               343 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (requested_pause == lif->ionic->idev.port_info->config.pause_type)
lif               347 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause);
lif               359 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               362 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	coalesce->tx_coalesce_usecs = lif->rx_coalesce_usecs;
lif               363 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	coalesce->rx_coalesce_usecs = lif->rx_coalesce_usecs;
lif               371 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               400 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ident = &lif->ionic->ident;
lif               408 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (coalesce->tx_coalesce_usecs != lif->rx_coalesce_usecs) {
lif               413 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->rx_coalesce_usecs);
lif               423 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	usecs = ionic_coal_hw_to_usec(lif->ionic, coal);
lif               425 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (usecs != lif->rx_coalesce_usecs) {
lif               426 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		lif->rx_coalesce_usecs = usecs;
lif               428 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		if (test_bit(IONIC_LIF_UP, lif->state)) {
lif               429 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 			for (i = 0; i < lif->nxqs; i++) {
lif               430 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 				qcq = lif->rxqcqs[i].qcq;
lif               431 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 				ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
lif               443 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               446 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ring->tx_pending = lif->ntxq_descs;
lif               448 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ring->rx_pending = lif->nrxq_descs;
lif               454 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               469 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (ring->tx_pending == lif->ntxq_descs &&
lif               470 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	    ring->rx_pending == lif->nrxq_descs)
lif               473 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (!ionic_wait_for_bit(lif, IONIC_LIF_QUEUE_RESET))
lif               476 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	running = test_bit(IONIC_LIF_UP, lif->state);
lif               480 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	lif->ntxq_descs = ring->tx_pending;
lif               481 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	lif->nrxq_descs = ring->rx_pending;
lif               485 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	clear_bit(IONIC_LIF_QUEUE_RESET, lif->state);
lif               493 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               496 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ch->max_combined = lif->ionic->ntxqs_per_lif;
lif               499 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	ch->combined_count = lif->nxqs;
lif               505 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               512 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (ch->combined_count == lif->nxqs)
lif               515 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (!ionic_wait_for_bit(lif, IONIC_LIF_QUEUE_RESET))
lif               518 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	running = test_bit(IONIC_LIF_UP, lif->state);
lif               522 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	lif->nxqs = ch->combined_count;
lif               526 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	clear_bit(IONIC_LIF_QUEUE_RESET, lif->state);
lif               533 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               536 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state))
lif               544 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               545 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	u32 flags = lif->flags;
lif               547 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	clear_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state);
lif               549 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		set_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state);
lif               551 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	if (flags != lif->flags)
lif               552 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		lif->flags = flags;
lif               560 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               565 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		info->data = lif->nxqs;
lif               578 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               580 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	return le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif               591 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               595 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif               597 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 			indir[i] = lif->rss_ind_tbl[i];
lif               601 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		memcpy(key, lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE);
lif               612 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               618 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	err = ionic_lif_rss_config(lif, lif->rss_types, key, indir);
lif               629 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(dev);
lif               633 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		lif->rx_copybreak = *(u32 *)data;
lif               645 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               649 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 		*(u32 *)data = lif->rx_copybreak;
lif               662 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               663 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               692 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               693 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               723 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               724 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c 	struct ionic *ionic = lif->ionic;
lif              2475 drivers/net/ethernet/pensando/ionic/ionic_if.h 	union ionic_lif_identity lif;
lif                20 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode);
lif                21 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_addr_add(struct ionic_lif *lif, const u8 *addr);
lif                22 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_addr_del(struct ionic_lif *lif, const u8 *addr);
lif                23 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_link_status_check(struct ionic_lif *lif);
lif                27 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = container_of(work, struct ionic_lif, deferred.work);
lif                28 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_deferred *def = &lif->deferred;
lif                42 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_lif_rx_mode(lif, w->rx_mode);
lif                45 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_lif_addr_add(lif, w->addr);
lif                48 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_lif_addr_del(lif, w->addr);
lif                51 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_link_status_check(lif);
lif                70 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_link_status_check(struct ionic_lif *lif)
lif                72 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct net_device *netdev = lif->netdev;
lif                76 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	link_status = le16_to_cpu(lif->info->status.link_status);
lif                85 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			    le32_to_cpu(lif->info->status.link_speed) / 1000);
lif                87 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (test_bit(IONIC_LIF_UP, lif->state)) {
lif                88 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			netif_tx_wake_all_queues(lif->netdev);
lif                96 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (test_bit(IONIC_LIF_UP, lif->state))
lif               101 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	clear_bit(IONIC_LIF_LINK_CHECK_REQUESTED, lif->state);
lif               104 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_link_status_check_request(struct ionic_lif *lif)
lif               109 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (test_and_set_bit(IONIC_LIF_LINK_CHECK_REQUESTED, lif->state))
lif               118 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_deferred_enqueue(&lif->deferred, work);
lif               120 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_link_status_check(lif);
lif               133 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_request_irq(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               136 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               140 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->registered)
lif               141 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		name = lif->netdev->name;
lif               152 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_intr_alloc(struct ionic_lif *lif, struct ionic_intr_info *intr)
lif               154 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic *ionic = lif->ionic;
lif               159 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_warn(lif->netdev, "%s: no intr, index=%d nintrs=%d\n",
lif               170 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_intr_free(struct ionic_lif *lif, int index)
lif               172 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (index != INTR_INDEX_NOT_ASSIGNED && index < lif->ionic->nintrs)
lif               173 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		clear_bit(index, lif->ionic->intrs);
lif               179 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = q->lif;
lif               187 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               194 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	idev = &lif->ionic->idev;
lif               195 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dev = lif->ionic->dev;
lif               209 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_adminq_post_wait(lif, &ctx);
lif               215 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = q->lif;
lif               223 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               230 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	idev = &lif->ionic->idev;
lif               231 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dev = lif->ionic->dev;
lif               244 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_adminq_post_wait(lif, &ctx);
lif               247 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_qcq_deinit(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               249 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               250 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               270 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_qcq_free(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               272 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               282 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_intr_free(lif, qcq->intr.index);
lif               291 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_qcqs_free(struct ionic_lif *lif)
lif               293 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               296 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->notifyqcq) {
lif               297 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_free(lif, lif->notifyqcq);
lif               298 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->notifyqcq = NULL;
lif               301 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->adminqcq) {
lif               302 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_free(lif, lif->adminqcq);
lif               303 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->adminqcq = NULL;
lif               306 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++)
lif               307 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (lif->rxqcqs[i].stats)
lif               308 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			devm_kfree(dev, lif->rxqcqs[i].stats);
lif               310 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	devm_kfree(dev, lif->rxqcqs);
lif               311 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rxqcqs = NULL;
lif               313 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++)
lif               314 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (lif->txqcqs[i].stats)
lif               315 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			devm_kfree(dev, lif->txqcqs[i].stats);
lif               317 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	devm_kfree(dev, lif->txqcqs);
lif               318 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->txqcqs = NULL;
lif               325 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_intr_free(n_qcq->cq.lif, n_qcq->intr.index);
lif               333 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type,
lif               341 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               343 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               370 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot allocate queue structure\n");
lif               380 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot allocate queue info\n");
lif               387 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_q_init(lif, idev, &new->q, index, name, num_descs,
lif               390 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot initialize queue\n");
lif               395 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_intr_alloc(lif, &new->intr);
lif               397 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			netdev_warn(lif->netdev, "no intr for %s: %d\n",
lif               402 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_bus_get_irq(lif->ionic, new->intr.index);
lif               404 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			netdev_warn(lif->netdev, "no vector for %s: %d\n",
lif               423 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot allocate completion queue info\n");
lif               428 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_cq_init(lif, &new->cq, &new->intr, num_descs, cq_desc_size);
lif               430 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot initialize completion queue\n");
lif               437 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "Cannot allocate queue DMA memory\n");
lif               466 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_intr_free(lif, new->intr.index);
lif               472 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_qcqs_alloc(struct ionic_lif *lif)
lif               474 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               481 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_qcq_alloc(lif, IONIC_QTYPE_ADMINQ, 0, "admin", flags,
lif               485 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			      0, lif->kern_pid, &lif->adminqcq);
lif               489 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->ionic->nnqs_per_lif) {
lif               491 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_qcq_alloc(lif, IONIC_QTYPE_NOTIFYQ, 0, "notifyq",
lif               495 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				      0, lif->kern_pid, &lif->notifyqcq);
lif               500 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_link_qcq_interrupts(lif->adminqcq, lif->notifyqcq);
lif               503 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	q_list_size = sizeof(*lif->txqcqs) * lif->nxqs;
lif               505 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->txqcqs = devm_kzalloc(dev, q_list_size, GFP_KERNEL);
lif               506 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->txqcqs)
lif               508 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif               509 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->txqcqs[i].stats = devm_kzalloc(dev,
lif               512 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (!lif->txqcqs[i].stats)
lif               516 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rxqcqs = devm_kzalloc(dev, q_list_size, GFP_KERNEL);
lif               517 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->rxqcqs)
lif               519 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif               520 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->rxqcqs[i].stats = devm_kzalloc(dev,
lif               523 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (!lif->rxqcqs[i].stats)
lif               530 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++)
lif               531 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (lif->rxqcqs[i].stats)
lif               532 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			devm_kfree(dev, lif->rxqcqs[i].stats);
lif               533 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	devm_kfree(dev, lif->rxqcqs);
lif               534 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rxqcqs = NULL;
lif               536 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++)
lif               537 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (lif->txqcqs[i].stats)
lif               538 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			devm_kfree(dev, lif->txqcqs[i].stats);
lif               539 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	devm_kfree(dev, lif->txqcqs);
lif               540 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->txqcqs = NULL;
lif               542 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->notifyqcq) {
lif               543 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_free(lif, lif->notifyqcq);
lif               544 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->notifyqcq = NULL;
lif               547 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_qcq_free(lif, lif->adminqcq);
lif               548 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->adminqcq = NULL;
lif               553 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_txq_init(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               555 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               562 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               567 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.intr_index = cpu_to_le16(lif->rxqcqs[q->index].qcq->intr.index),
lif               582 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif               595 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_add_qcq(lif, qcq);
lif               600 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_rxq_init(struct ionic_lif *lif, struct ionic_qcq *qcq)
lif               602 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif               609 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               627 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif               638 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netif_napi_add(lif->netdev, &qcq->napi, ionic_rx_napi,
lif               641 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_request_irq(lif, qcq);
lif               649 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_add_qcq(lif, qcq);
lif               660 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif               664 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif = q->info[0].cb_arg;
lif               665 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev = lif->netdev;
lif               669 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (eid <= lif->last_eid)
lif               672 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->last_eid = eid;
lif               674 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dev_dbg(lif->ionic->dev, "notifyq event:\n");
lif               680 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_link_status_check_request(lif);
lif               698 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_notifyq_clean(struct ionic_lif *lif, int budget)
lif               700 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif               701 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_cq *cq = &lif->notifyqcq->cq;
lif               728 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = napi_to_cq(napi)->lif;
lif               732 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (likely(lif->notifyqcq && lif->notifyqcq->flags & IONIC_QCQ_F_INITED))
lif               733 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		n_work = ionic_notifyq_clean(lif, budget);
lif               742 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               746 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ls = &lif->info->stats;
lif               792 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_addr_add(struct ionic_lif *lif, const u8 *addr)
lif               798 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               806 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_lock_bh(&lif->rx_filters.lock);
lif               807 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	f = ionic_rx_filter_by_addr(lif, addr);
lif               808 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_unlock_bh(&lif->rx_filters.lock);
lif               812 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_dbg(lif->netdev, "rx_filter add ADDR %pM (id %d)\n", addr,
lif               816 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif               820 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_rx_filter_save(lif, 0, IONIC_RXQ_INDEX_ANY, 0, &ctx);
lif               823 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_addr_del(struct ionic_lif *lif, const u8 *addr)
lif               829 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               835 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_lock_bh(&lif->rx_filters.lock);
lif               836 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	f = ionic_rx_filter_by_addr(lif, addr);
lif               838 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		spin_unlock_bh(&lif->rx_filters.lock);
lif               843 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_rx_filter_free(lif, f);
lif               844 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_unlock_bh(&lif->rx_filters.lock);
lif               846 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif               850 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_dbg(lif->netdev, "rx_filter del ADDR %pM (id %d)\n", addr,
lif               856 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_addr(struct ionic_lif *lif, const u8 *addr, bool add)
lif               858 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic *ionic = lif->ionic;
lif               868 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		nmfilters = le32_to_cpu(ionic->ident.lif.eth.max_mcast_filters);
lif               869 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		nufilters = le32_to_cpu(ionic->ident.lif.eth.max_ucast_filters);
lif               871 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if ((is_multicast_ether_addr(addr) && lif->nmcast < nmfilters))
lif               872 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			lif->nmcast++;
lif               874 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			 lif->nucast < nufilters)
lif               875 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			lif->nucast++;
lif               879 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		if (is_multicast_ether_addr(addr) && lif->nmcast)
lif               880 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			lif->nmcast--;
lif               881 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		else if (!is_multicast_ether_addr(addr) && lif->nucast)
lif               882 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			lif->nucast--;
lif               888 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			netdev_err(lif->netdev, "%s OOM\n", __func__);
lif               894 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_dbg(lif->netdev, "deferred: rx_filter %s %pM\n",
lif               896 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_deferred_enqueue(&lif->deferred, work);
lif               898 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_dbg(lif->netdev, "rx_filter %s %pM\n",
lif               901 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			return ionic_lif_addr_add(lif, addr);
lif               903 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			return ionic_lif_addr_del(lif, addr);
lif               919 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode)
lif               925 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif               935 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		     lif->rx_mode, rx_mode);
lif               946 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_dbg(lif->netdev, "lif%d %s\n", lif->index, buf);
lif               948 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif               950 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_warn(lif->netdev, "set rx_mode 0x%04x failed: %d\n",
lif               953 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->rx_mode = rx_mode;
lif               956 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void _ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode)
lif               963 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			netdev_err(lif->netdev, "%s OOM\n", __func__);
lif               968 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_dbg(lif->netdev, "deferred: rx_mode\n");
lif               969 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_deferred_enqueue(&lif->deferred, work);
lif               971 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_rx_mode(lif, rx_mode);
lif               977 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               982 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ident = &lif->ionic->ident;
lif               998 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	nfilters = le32_to_cpu(ident->lif.eth.max_ucast_filters);
lif              1001 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->uc_overflow = true;
lif              1002 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	} else if (lif->uc_overflow) {
lif              1003 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->uc_overflow = false;
lif              1010 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	nfilters = le32_to_cpu(ident->lif.eth.max_mcast_filters);
lif              1013 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->mc_overflow = true;
lif              1014 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	} else if (lif->mc_overflow) {
lif              1015 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->mc_overflow = false;
lif              1020 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->rx_mode != rx_mode)
lif              1021 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		_ionic_lif_rx_mode(lif, rx_mode);
lif              1064 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_set_nic_features(struct ionic_lif *lif,
lif              1067 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif              1072 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.index = cpu_to_le16(lif->index),
lif              1082 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif              1086 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->hw_features = le64_to_cpu(ctx.cmd.lif_setattr.features &
lif              1091 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		dev_info_once(lif->ionic->dev, "NIC is not supporting vlan offload, likely in SmartNIC mode\n");
lif              1093 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_TX_TAG)
lif              1095 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_RX_STRIP)
lif              1097 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_RX_FILTER)
lif              1099 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_RX_HASH)
lif              1101 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TX_SG)
lif              1103 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TX_CSUM)
lif              1105 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_RX_CSUM)
lif              1107 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO)
lif              1109 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPV6)
lif              1111 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_ECN)
lif              1113 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_GRE)
lif              1115 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_GRE_CSUM)
lif              1117 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPXIP4)
lif              1119 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPXIP6)
lif              1121 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_UDP)
lif              1123 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_UDP_CSUM)
lif              1129 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_init_nic_features(struct ionic_lif *lif)
lif              1131 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct net_device *netdev = lif->netdev;
lif              1147 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_set_nic_features(lif, features);
lif              1154 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_TX_TAG)
lif              1156 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_RX_STRIP)
lif              1158 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_VLAN_RX_FILTER)
lif              1160 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_RX_HASH)
lif              1162 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TX_SG)
lif              1165 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TX_CSUM)
lif              1167 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_RX_CSUM)
lif              1169 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO)
lif              1171 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPV6)
lif              1173 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_ECN)
lif              1175 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_GRE)
lif              1177 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_GRE_CSUM)
lif              1179 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPXIP4)
lif              1181 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_IPXIP6)
lif              1183 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_UDP)
lif              1185 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->hw_features & IONIC_ETH_HW_TSO_UDP_CSUM)
lif              1199 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1203 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		   __func__, (u64)lif->netdev->features, (u64)features);
lif              1205 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_set_nic_features(lif, features);
lif              1238 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1243 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.index = cpu_to_le16(lif->index),
lif              1250 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif              1255 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_reset_queues(lif);
lif              1262 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = container_of(ws, struct ionic_lif, tx_timeout_work);
lif              1264 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_info(lif->netdev, "Tx Timeout recovery\n");
lif              1267 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_reset_queues(lif);
lif              1273 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1275 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	schedule_work(&lif->tx_timeout_work);
lif              1281 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1286 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif              1293 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif              1300 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_rx_filter_save(lif, 0, IONIC_RXQ_INDEX_ANY, 0, &ctx);
lif              1306 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1311 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif              1316 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_lock_bh(&lif->rx_filters.lock);
lif              1318 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	f = ionic_rx_filter_by_vlan(lif, vid);
lif              1320 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		spin_unlock_bh(&lif->rx_filters.lock);
lif              1328 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_rx_filter_free(lif, f);
lif              1329 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_unlock_bh(&lif->rx_filters.lock);
lif              1331 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_adminq_post_wait(lif, &ctx);
lif              1334 drivers/net/ethernet/pensando/ionic/ionic_lif.c int ionic_lif_rss_config(struct ionic_lif *lif, const u16 types,
lif              1343 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.rss.addr = cpu_to_le64(lif->rss_ind_tbl_pa),
lif              1348 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_types = types;
lif              1351 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		memcpy(lif->rss_hash_key, key, IONIC_RSS_HASH_KEY_SIZE);
lif              1354 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif              1356 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			lif->rss_ind_tbl[i] = indir[i];
lif              1359 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	memcpy(ctx.cmd.lif_setattr.rss.key, lif->rss_hash_key,
lif              1362 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_adminq_post_wait(lif, &ctx);
lif              1365 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_rss_init(struct ionic_lif *lif)
lif              1370 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_types = IONIC_RSS_TYPE_IPV4     |
lif              1378 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif              1380 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->rss_ind_tbl[i] = ethtool_rxfh_indir_default(i, lif->nxqs);
lif              1382 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return ionic_lif_rss_config(lif, lif->rss_types, NULL, NULL);
lif              1385 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_rss_deinit(struct ionic_lif *lif)
lif              1389 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif              1390 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	memset(lif->rss_ind_tbl, 0, tbl_sz);
lif              1391 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	memset(lif->rss_hash_key, 0, IONIC_RSS_HASH_KEY_SIZE);
lif              1393 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_rss_config(lif, 0x0, NULL, NULL);
lif              1396 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_txrx_disable(struct ionic_lif *lif)
lif              1400 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1401 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_disable(lif->txqcqs[i].qcq);
lif              1402 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_disable(lif->rxqcqs[i].qcq);
lif              1406 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_txrx_deinit(struct ionic_lif *lif)
lif              1410 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1411 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq);
lif              1412 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_tx_flush(&lif->txqcqs[i].qcq->cq);
lif              1414 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq);
lif              1415 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_rx_flush(&lif->rxqcqs[i].qcq->cq);
lif              1416 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_rx_empty(&lif->rxqcqs[i].qcq->q);
lif              1420 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_txrx_free(struct ionic_lif *lif)
lif              1424 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1425 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_free(lif, lif->txqcqs[i].qcq);
lif              1426 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->txqcqs[i].qcq = NULL;
lif              1428 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_free(lif, lif->rxqcqs[i].qcq);
lif              1429 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->rxqcqs[i].qcq = NULL;
lif              1433 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_txrx_alloc(struct ionic_lif *lif)
lif              1441 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1442 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_qcq_alloc(lif, IONIC_QTYPE_TXQ, i, "tx", flags,
lif              1443 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				      lif->ntxq_descs,
lif              1447 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				      lif->kern_pid, &lif->txqcqs[i].qcq);
lif              1451 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->txqcqs[i].qcq->stats = lif->txqcqs[i].stats;
lif              1455 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	coal = ionic_coal_usec_to_hw(lif->ionic, lif->rx_coalesce_usecs);
lif              1456 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1457 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_qcq_alloc(lif, IONIC_QTYPE_RXQ, i, "rx", flags,
lif              1458 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				      lif->nrxq_descs,
lif              1461 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				      0, lif->kern_pid, &lif->rxqcqs[i].qcq);
lif              1465 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif->rxqcqs[i].qcq->stats = lif->rxqcqs[i].stats;
lif              1467 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_intr_coal_init(lif->ionic->idev.intr_ctrl,
lif              1468 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				     lif->rxqcqs[i].qcq->intr.index, coal);
lif              1469 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_link_qcq_interrupts(lif->rxqcqs[i].qcq,
lif              1470 drivers/net/ethernet/pensando/ionic/ionic_lif.c 					  lif->txqcqs[i].qcq);
lif              1476 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_free(lif);
lif              1481 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_txrx_init(struct ionic_lif *lif)
lif              1486 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1487 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_lif_txq_init(lif, lif->txqcqs[i].qcq);
lif              1491 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_lif_rxq_init(lif, lif->rxqcqs[i].qcq);
lif              1493 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq);
lif              1498 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->netdev->features & NETIF_F_RXHASH)
lif              1499 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_rss_init(lif);
lif              1501 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_set_rx_mode(lif->netdev);
lif              1507 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_qcq_deinit(lif, lif->txqcqs[i].qcq);
lif              1508 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq);
lif              1514 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_txrx_enable(struct ionic_lif *lif)
lif              1518 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	for (i = 0; i < lif->nxqs; i++) {
lif              1519 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_qcq_enable(lif->txqcqs[i].qcq);
lif              1523 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_rx_fill(&lif->rxqcqs[i].qcq->q);
lif              1524 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_qcq_enable(lif->rxqcqs[i].qcq);
lif              1526 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			ionic_qcq_disable(lif->txqcqs[i].qcq);
lif              1535 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_disable(lif->rxqcqs[i].qcq);
lif              1536 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_qcq_disable(lif->txqcqs[i].qcq);
lif              1544 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1549 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_txrx_alloc(lif);
lif              1553 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_txrx_init(lif);
lif              1557 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_txrx_enable(lif);
lif              1561 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netif_set_real_num_tx_queues(netdev, lif->nxqs);
lif              1562 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netif_set_real_num_rx_queues(netdev, lif->nxqs);
lif              1564 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	set_bit(IONIC_LIF_UP, lif->state);
lif              1566 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_link_status_check_request(lif);
lif              1573 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_deinit(lif);
lif              1575 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_free(lif);
lif              1581 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif              1584 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!test_bit(IONIC_LIF_UP, lif->state)) {
lif              1585 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		dev_dbg(lif->ionic->dev, "%s: %s state=DOWN\n",
lif              1586 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			__func__, lif->name);
lif              1589 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dev_dbg(lif->ionic->dev, "%s: %s state=UP\n", __func__, lif->name);
lif              1590 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	clear_bit(IONIC_LIF_UP, lif->state);
lif              1597 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_disable(lif);
lif              1598 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_deinit(lif);
lif              1599 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_txrx_free(lif);
lif              1619 drivers/net/ethernet/pensando/ionic/ionic_lif.c int ionic_reset_queues(struct ionic_lif *lif)
lif              1625 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netif_trans_update(lif->netdev);
lif              1627 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!ionic_wait_for_bit(lif, IONIC_LIF_QUEUE_RESET))
lif              1630 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	running = netif_running(lif->netdev);
lif              1632 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_stop(lif->netdev);
lif              1634 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_open(lif->netdev);
lif              1636 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	clear_bit(IONIC_LIF_QUEUE_RESET, lif->state);
lif              1645 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif              1650 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev = alloc_etherdev_mqs(sizeof(*lif),
lif              1659 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif = netdev_priv(netdev);
lif              1660 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->netdev = netdev;
lif              1661 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic->master_lif = lif;
lif              1669 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->neqs = ionic->neqs_per_lif;
lif              1670 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->nxqs = ionic->ntxqs_per_lif;
lif              1672 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->ionic = ionic;
lif              1673 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->index = index;
lif              1674 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->ntxq_descs = IONIC_DEF_TXRX_DESC;
lif              1675 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->nrxq_descs = IONIC_DEF_TXRX_DESC;
lif              1678 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	coal = ionic_coal_usec_to_hw(lif->ionic, IONIC_ITR_COAL_USEC_DEFAULT);
lif              1679 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rx_coalesce_usecs = ionic_coal_hw_to_usec(lif->ionic, coal);
lif              1681 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	snprintf(lif->name, sizeof(lif->name), "lif%u", index);
lif              1683 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_lock_init(&lif->adminq_lock);
lif              1685 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	spin_lock_init(&lif->deferred.lock);
lif              1686 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	INIT_LIST_HEAD(&lif->deferred.list);
lif              1687 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	INIT_WORK(&lif->deferred.work, ionic_lif_deferred_work);
lif              1690 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info_sz = ALIGN(sizeof(*lif->info), PAGE_SIZE);
lif              1691 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info = dma_alloc_coherent(dev, lif->info_sz,
lif              1692 drivers/net/ethernet/pensando/ionic/ionic_lif.c 				       &lif->info_pa, GFP_KERNEL);
lif              1693 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->info) {
lif              1700 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_qcqs_alloc(lif);
lif              1705 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz);
lif              1706 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_ind_tbl_sz = sizeof(*lif->rss_ind_tbl) * tbl_sz;
lif              1707 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_ind_tbl = dma_alloc_coherent(dev, lif->rss_ind_tbl_sz,
lif              1708 drivers/net/ethernet/pensando/ionic/ionic_lif.c 					      &lif->rss_ind_tbl_pa,
lif              1711 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->rss_ind_tbl) {
lif              1716 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_rss_key_fill(lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE);
lif              1718 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	list_add_tail(&lif->list, &ionic->lifs);
lif              1720 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return lif;
lif              1723 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_qcqs_free(lif);
lif              1725 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dma_free_coherent(dev, lif->info_sz, lif->info, lif->info_pa);
lif              1726 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info = NULL;
lif              1727 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info_pa = 0;
lif              1729 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	free_netdev(lif->netdev);
lif              1730 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif = NULL;
lif              1737 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif              1743 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif = ionic_lif_alloc(ionic, 0);
lif              1745 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	return PTR_ERR_OR_ZERO(lif);
lif              1748 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_reset(struct ionic_lif *lif)
lif              1750 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif              1752 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_lock(&lif->ionic->dev_cmd_lock);
lif              1753 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_dev_cmd_lif_reset(idev, lif->index);
lif              1754 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
lif              1755 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_unlock(&lif->ionic->dev_cmd_lock);
lif              1758 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_free(struct ionic_lif *lif)
lif              1760 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif              1763 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dma_free_coherent(dev, lif->rss_ind_tbl_sz, lif->rss_ind_tbl,
lif              1764 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			  lif->rss_ind_tbl_pa);
lif              1765 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_ind_tbl = NULL;
lif              1766 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rss_ind_tbl_pa = 0;
lif              1769 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_qcqs_free(lif);
lif              1770 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_reset(lif);
lif              1773 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dma_free_coherent(dev, lif->info_sz, lif->info, lif->info_pa);
lif              1774 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info = NULL;
lif              1775 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->info_pa = 0;
lif              1778 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
lif              1779 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->kern_dbpage = NULL;
lif              1780 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	kfree(lif->dbid_inuse);
lif              1781 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->dbid_inuse = NULL;
lif              1784 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_del_lif(lif);
lif              1785 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	list_del(&lif->list);
lif              1786 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	free_netdev(lif->netdev);
lif              1792 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif              1795 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif = list_entry(cur, struct ionic_lif, list);
lif              1797 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_free(lif);
lif              1801 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_deinit(struct ionic_lif *lif)
lif              1803 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!test_bit(IONIC_LIF_INITED, lif->state))
lif              1806 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	clear_bit(IONIC_LIF_INITED, lif->state);
lif              1808 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_rx_filters_deinit(lif);
lif              1809 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_rss_deinit(lif);
lif              1811 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	napi_disable(&lif->adminqcq->napi);
lif              1812 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_qcq_deinit(lif, lif->notifyqcq);
lif              1813 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_qcq_deinit(lif, lif->adminqcq);
lif              1815 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_reset(lif);
lif              1821 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif              1824 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif = list_entry(cur, struct ionic_lif, list);
lif              1825 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_deinit(lif);
lif              1829 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_adminq_init(struct ionic_lif *lif)
lif              1831 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif              1838 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	idev = &lif->ionic->idev;
lif              1839 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	qcq = lif->adminqcq;
lif              1842 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_lock(&lif->ionic->dev_cmd_lock);
lif              1843 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_dev_cmd_adminq_init(idev, qcq, lif->index, qcq->intr.index);
lif              1844 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
lif              1846 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_unlock(&lif->ionic->dev_cmd_lock);
lif              1848 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_err(lif->netdev, "adminq init failed %d\n", err);
lif              1859 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netif_napi_add(lif->netdev, &qcq->napi, ionic_adminq_napi,
lif              1862 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_request_irq(lif, qcq);
lif              1864 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_warn(lif->netdev, "adminq irq request failed %d\n", err);
lif              1877 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_add_qcq(lif, qcq);
lif              1882 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_notifyq_init(struct ionic_lif *lif)
lif              1884 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_qcq *qcq = lif->notifyqcq;
lif              1885 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif              1893 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.lif_index = cpu_to_le16(lif->index),
lif              1898 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.intr_index = cpu_to_le16(lif->adminqcq->intr.index),
lif              1910 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif              1922 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	q->info[0].cb_arg = lif;
lif              1926 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_add_qcq(lif, qcq);
lif              1931 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_station_set(struct ionic_lif *lif)
lif              1933 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct net_device *netdev = lif->netdev;
lif              1938 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.index = cpu_to_le16(lif->index),
lif              1945 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_adminq_post_wait(lif, &ctx);
lif              1956 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		netdev_dbg(lif->netdev, "deleting station MAC addr %pM\n",
lif              1958 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_addr(lif, netdev->dev_addr, false);
lif              1962 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	netdev_dbg(lif->netdev, "adding station MAC addr %pM\n",
lif              1964 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_addr(lif, netdev->dev_addr, true);
lif              1969 drivers/net/ethernet/pensando/ionic/ionic_lif.c static int ionic_lif_init(struct ionic_lif *lif)
lif              1971 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_dev *idev = &lif->ionic->idev;
lif              1972 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct device *dev = lif->ionic->dev;
lif              1977 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_debugfs_add_lif(lif);
lif              1979 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_lock(&lif->ionic->dev_cmd_lock);
lif              1980 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_dev_cmd_lif_init(idev, lif->index, lif->info_pa);
lif              1981 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT);
lif              1983 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	mutex_unlock(&lif->ionic->dev_cmd_lock);
lif              1987 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->hw_index = le16_to_cpu(comp.hw_index);
lif              1990 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif);
lif              1991 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->dbid_count) {
lif              1996 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->dbid_inuse = bitmap_alloc(lif->dbid_count, GFP_KERNEL);
lif              1997 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->dbid_inuse) {
lif              2003 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	set_bit(0, lif->dbid_inuse);
lif              2004 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->kern_pid = 0;
lif              2006 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	dbpage_num = ionic_db_page_num(lif, lif->kern_pid);
lif              2007 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->kern_dbpage = ionic_bus_map_dbpage(lif->ionic, dbpage_num);
lif              2008 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif->kern_dbpage) {
lif              2014 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_lif_adminq_init(lif);
lif              2018 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (lif->ionic->nnqs_per_lif) {
lif              2019 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_lif_notifyq_init(lif);
lif              2024 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_init_nic_features(lif);
lif              2028 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_rx_filters_init(lif);
lif              2032 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	err = ionic_station_set(lif);
lif              2036 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->rx_copybreak = IONIC_RX_COPYBREAK_DEFAULT;
lif              2038 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	set_bit(IONIC_LIF_INITED, lif->state);
lif              2040 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	INIT_WORK(&lif->tx_timeout_work, ionic_tx_timeout_work);
lif              2045 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_qcq_deinit(lif, lif->notifyqcq);
lif              2047 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_qcq_deinit(lif, lif->adminqcq);
lif              2048 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_lif_reset(lif);
lif              2049 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
lif              2050 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->kern_dbpage = NULL;
lif              2052 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	kfree(lif->dbid_inuse);
lif              2053 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lif->dbid_inuse = NULL;
lif              2061 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif;
lif              2065 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		lif = list_entry(cur, struct ionic_lif, list);
lif              2066 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		err = ionic_lif_init(lif);
lif              2078 drivers/net/ethernet/pensando/ionic/ionic_lif.c static void ionic_lif_set_netdev_info(struct ionic_lif *lif)
lif              2084 drivers/net/ethernet/pensando/ionic/ionic_lif.c 			.index = cpu_to_le16(lif->index),
lif              2089 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	strlcpy(ctx.cmd.lif_setattr.name, lif->netdev->name,
lif              2092 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	ionic_adminq_post_wait(lif, &ctx);
lif              2108 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	struct ionic_lif *lif = ionic_netdev_lif(ndev);
lif              2110 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	if (!lif || lif->ionic != ionic)
lif              2115 drivers/net/ethernet/pensando/ionic/ionic_lif.c 		ionic_lif_set_netdev_info(lif);
lif              2220 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	lc = &ident->lif.eth.config;
lif              2222 drivers/net/ethernet/pensando/ionic/ionic_lif.c 	neqs_per_lif = le32_to_cpu(ident->lif.rdma.eq_qtype.qid_count);
lif               183 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_txqcq(lif, i)	((lif)->txqcqs[i].qcq)
lif               184 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_rxqcq(lif, i)	((lif)->rxqcqs[i].qcq)
lif               185 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_txstats(lif, i)	((lif)->txqcqs[i].stats->tx)
lif               186 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_rxstats(lif, i)	((lif)->rxqcqs[i].stats->rx)
lif               187 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_txq(lif, i)	(&lif_to_txqcq((lif), i)->q)
lif               188 drivers/net/ethernet/pensando/ionic/ionic_lif.h #define lif_to_rxq(lif, i)	(&lif_to_txqcq((lif), i)->q)
lif               190 drivers/net/ethernet/pensando/ionic/ionic_lif.h static inline int ionic_wait_for_bit(struct ionic_lif *lif, int bitname)
lif               194 drivers/net/ethernet/pensando/ionic/ionic_lif.h 	while (test_and_set_bit(bitname, lif->state) &&
lif               198 drivers/net/ethernet/pensando/ionic/ionic_lif.h 	return test_bit(bitname, lif->state);
lif               239 drivers/net/ethernet/pensando/ionic/ionic_lif.h int ionic_lif_rss_config(struct ionic_lif *lif, u16 types,
lif               244 drivers/net/ethernet/pensando/ionic/ionic_lif.h int ionic_reset_queues(struct ionic_lif *lif);
lif               173 drivers/net/ethernet/pensando/ionic/ionic_main.c static void ionic_adminq_flush(struct ionic_lif *lif)
lif               175 drivers/net/ethernet/pensando/ionic/ionic_main.c 	struct ionic_queue *adminq = &lif->adminqcq->q;
lif               177 drivers/net/ethernet/pensando/ionic/ionic_main.c 	spin_lock(&lif->adminq_lock);
lif               185 drivers/net/ethernet/pensando/ionic/ionic_main.c 	spin_unlock(&lif->adminq_lock);
lif               188 drivers/net/ethernet/pensando/ionic/ionic_main.c static int ionic_adminq_check_err(struct ionic_lif *lif,
lif               192 drivers/net/ethernet/pensando/ionic/ionic_main.c 	struct net_device *netdev = lif->netdev;
lif               208 drivers/net/ethernet/pensando/ionic/ionic_main.c 			ionic_adminq_flush(lif);
lif               226 drivers/net/ethernet/pensando/ionic/ionic_main.c 	dev = &q->lif->netdev->dev;
lif               237 drivers/net/ethernet/pensando/ionic/ionic_main.c static int ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
lif               239 drivers/net/ethernet/pensando/ionic/ionic_main.c 	struct ionic_queue *adminq = &lif->adminqcq->q;
lif               244 drivers/net/ethernet/pensando/ionic/ionic_main.c 	spin_lock(&lif->adminq_lock);
lif               252 drivers/net/ethernet/pensando/ionic/ionic_main.c 	dev_dbg(&lif->netdev->dev, "post admin queue command:\n");
lif               259 drivers/net/ethernet/pensando/ionic/ionic_main.c 	spin_unlock(&lif->adminq_lock);
lif               264 drivers/net/ethernet/pensando/ionic/ionic_main.c int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
lif               266 drivers/net/ethernet/pensando/ionic/ionic_main.c 	struct net_device *netdev = lif->netdev;
lif               271 drivers/net/ethernet/pensando/ionic/ionic_main.c 	err = ionic_adminq_post(lif, ctx);
lif               281 drivers/net/ethernet/pensando/ionic/ionic_main.c 	return ionic_adminq_check_err(lif, ctx, (remaining == 0));
lif               300 drivers/net/ethernet/pensando/ionic/ionic_main.c 		ionic_intr_credits(cq->lif->ionic->idev.intr_ctrl,
lif                11 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f)
lif                13 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	struct device *dev = lif->ionic->dev;
lif                20 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c int ionic_rx_filter_del(struct ionic_lif *lif, struct ionic_rx_filter *f)
lif                30 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	return ionic_adminq_post_wait(lif, &ctx);
lif                33 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c int ionic_rx_filters_init(struct ionic_lif *lif)
lif                37 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	spin_lock_init(&lif->rx_filters.lock);
lif                40 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 		INIT_HLIST_HEAD(&lif->rx_filters.by_hash[i]);
lif                41 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 		INIT_HLIST_HEAD(&lif->rx_filters.by_id[i]);
lif                47 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c void ionic_rx_filters_deinit(struct ionic_lif *lif)
lif                55 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 		head = &lif->rx_filters.by_id[i];
lif                57 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 			ionic_rx_filter_free(lif, f);
lif                61 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
lif                64 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	struct device *dev = lif->ionic->dev;
lif                98 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	spin_lock_bh(&lif->rx_filters.lock);
lif               101 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	head = &lif->rx_filters.by_hash[key];
lif               105 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	head = &lif->rx_filters.by_id[key];
lif               108 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	spin_unlock_bh(&lif->rx_filters.lock);
lif               113 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c struct ionic_rx_filter *ionic_rx_filter_by_vlan(struct ionic_lif *lif, u16 vid)
lif               120 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	head = &lif->rx_filters.by_hash[key];
lif               132 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c struct ionic_rx_filter *ionic_rx_filter_by_addr(struct ionic_lif *lif,
lif               140 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c 	head = &lif->rx_filters.by_hash[key];
lif                26 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f);
lif                27 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h int ionic_rx_filter_del(struct ionic_lif *lif, struct ionic_rx_filter *f);
lif                28 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h int ionic_rx_filters_init(struct ionic_lif *lif);
lif                29 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h void ionic_rx_filters_deinit(struct ionic_lif *lif);
lif                30 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
lif                32 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h struct ionic_rx_filter *ionic_rx_filter_by_vlan(struct ionic_lif *lif, u16 vid);
lif                33 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h struct ionic_rx_filter *ionic_rx_filter_by_addr(struct ionic_lif *lif, const u8 *addr);
lif                71 drivers/net/ethernet/pensando/ionic/ionic_stats.c #define MAX_Q(lif)   ((lif)->netdev->real_num_tx_queues)
lif                73 drivers/net/ethernet/pensando/ionic/ionic_stats.c static void ionic_get_lif_stats(struct ionic_lif *lif,
lif                84 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	for (q_num = 0; q_num < MAX_Q(lif); q_num++) {
lif                85 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		txqcq = lif_to_txqcq(lif, q_num);
lif                95 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		rxqcq = lif_to_rxqcq(lif, q_num);
lif               107 drivers/net/ethernet/pensando/ionic/ionic_stats.c static u64 ionic_sw_stats_get_count(struct ionic_lif *lif)
lif               115 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	total += MAX_Q(lif) * IONIC_NUM_TX_STATS;
lif               118 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	total += MAX_Q(lif) * IONIC_NUM_RX_STATS;
lif               120 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	if (test_bit(IONIC_LIF_UP, lif->state) &&
lif               121 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	    test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state)) {
lif               123 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		total += MAX_Q(lif) * (IONIC_NUM_DBG_CQ_STATS +
lif               129 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		total += MAX_Q(lif) * (IONIC_NUM_DBG_CQ_STATS +
lif               138 drivers/net/ethernet/pensando/ionic/ionic_stats.c static void ionic_sw_stats_get_strings(struct ionic_lif *lif, u8 **buf)
lif               146 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	for (q_num = 0; q_num < MAX_Q(lif); q_num++) {
lif               153 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		if (test_bit(IONIC_LIF_UP, lif->state) &&
lif               154 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		    test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state)) {
lif               184 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	for (q_num = 0; q_num < MAX_Q(lif); q_num++) {
lif               192 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		if (test_bit(IONIC_LIF_UP, lif->state) &&
lif               193 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		    test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state)) {
lif               225 drivers/net/ethernet/pensando/ionic/ionic_stats.c static void ionic_sw_stats_get_values(struct ionic_lif *lif, u64 **buf)
lif               233 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	ionic_get_lif_stats(lif, &lif_stats);
lif               240 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	for (q_num = 0; q_num < MAX_Q(lif); q_num++) {
lif               241 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		txstats = &lif_to_txstats(lif, q_num);
lif               249 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		if (test_bit(IONIC_LIF_UP, lif->state) &&
lif               250 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		    test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state)) {
lif               251 drivers/net/ethernet/pensando/ionic/ionic_stats.c 			txqcq = lif_to_txqcq(lif, q_num);
lif               274 drivers/net/ethernet/pensando/ionic/ionic_stats.c 	for (q_num = 0; q_num < MAX_Q(lif); q_num++) {
lif               275 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		rxstats = &lif_to_rxstats(lif, q_num);
lif               283 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		if (test_bit(IONIC_LIF_UP, lif->state) &&
lif               284 drivers/net/ethernet/pensando/ionic/ionic_stats.c 		    test_bit(IONIC_LIF_SW_DEBUG_STATS, lif->state)) {
lif               285 drivers/net/ethernet/pensando/ionic/ionic_stats.c 			rxqcq = lif_to_rxqcq(lif, q_num);
lif                37 drivers/net/ethernet/pensando/ionic/ionic_stats.h 	void (*get_strings)(struct ionic_lif *lif, u8 **buf);
lif                38 drivers/net/ethernet/pensando/ionic/ionic_stats.h 	void (*get_values)(struct ionic_lif *lif, u64 **buf);
lif                39 drivers/net/ethernet/pensando/ionic/ionic_stats.h 	u64 (*get_count)(struct ionic_lif *lif);
lif                34 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	return netdev_get_tx_queue(q->lif->netdev, q->index);
lif                54 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct net_device *netdev = q->lif->netdev;
lif                55 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif                61 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	if (clen > q->lif->rx_copybreak) {
lif                95 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	netdev = q->lif->netdev;
lif               102 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	if (unlikely(test_bit(IONIC_LIF_QUEUE_RESET, q->lif->state))) {
lif               206 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct ionic_dev *idev = &cq->lif->ionic->idev;
lif               219 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct ionic_lif *lif = q->lif;
lif               225 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	netdev = lif->netdev;
lif               226 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	dev = lif->ionic->dev;
lif               252 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct net_device *netdev = q->lif->netdev;
lif               286 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               305 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct ionic_lif *lif;
lif               310 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	lif = rxcq->bound_q->lif;
lif               311 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	idev = &lif->ionic->idev;
lif               312 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	txcq = &lif->txqcqs[qi].qcq->cq;
lif               340 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               346 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 				     q->lif->netdev->name, q->name);
lif               357 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               363 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 				     q->lif->netdev->name, q->name);
lif               376 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               405 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 		if (unlikely(__netif_subqueue_stopped(q->lif->netdev,
lif               407 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 			netif_wake_subqueue(q->lif->netdev, queue_index);
lif               419 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct ionic_dev *idev = &cq->lif->ionic->idev;
lif               549 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               718 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               755 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               789 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct device *dev = q->lif->ionic->dev;
lif               865 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 		netif_stop_subqueue(q->lif->netdev, q->index);
lif               872 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 			netif_wake_subqueue(q->lif->netdev, q->index);
lif               883 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	struct ionic_lif *lif = netdev_priv(netdev);
lif               888 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	if (unlikely(!test_bit(IONIC_LIF_UP, lif->state))) {
lif               893 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	if (unlikely(!lif_to_txqcq(lif, queue_index)))
lif               895 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 	q = lif_to_txq(lif, queue_index);