Lines Matching full:lif
193 static void ionic_adminq_flush(struct ionic_lif *lif) in ionic_adminq_flush() argument
200 spin_lock_irqsave(&lif->adminq_lock, irqflags); in ionic_adminq_flush()
201 if (!lif->adminqcq) { in ionic_adminq_flush()
202 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_flush()
206 q = &lif->adminqcq->q; in ionic_adminq_flush()
215 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_flush()
218 void ionic_adminq_netdev_err_print(struct ionic_lif *lif, u8 opcode, in ionic_adminq_netdev_err_print() argument
226 netdev_err(lif->netdev, "%s (%d) failed: %s (%d)\n", in ionic_adminq_netdev_err_print()
230 static int ionic_adminq_check_err(struct ionic_lif *lif, in ionic_adminq_check_err() argument
242 ionic_adminq_netdev_err_print(lif, ctx->cmd.cmd.opcode, in ionic_adminq_check_err()
246 ionic_adminq_flush(lif); in ionic_adminq_check_err()
258 struct ionic_lif *lif; in ionic_notifyq_service() local
264 lif = q->admin_info[0].ctx; in ionic_notifyq_service()
265 netdev = lif->netdev; in ionic_notifyq_service()
269 if ((s64)(eid - lif->last_eid) <= 0) in ionic_notifyq_service()
272 lif->last_eid = eid; in ionic_notifyq_service()
274 dev_dbg(lif->ionic->dev, "notifyq event:\n"); in ionic_notifyq_service()
280 ionic_link_status_check_request(lif, CAN_NOT_SLEEP); in ionic_notifyq_service()
283 if (lif->ionic->idev.fw_status_ready && in ionic_notifyq_service()
284 !test_bit(IONIC_LIF_F_FW_RESET, lif->state) && in ionic_notifyq_service()
285 !test_and_set_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { in ionic_notifyq_service()
288 netdev_err(lif->netdev, "Reset event dropped\n"); in ionic_notifyq_service()
289 clear_bit(IONIC_LIF_F_FW_STOPPING, lif->state); in ionic_notifyq_service()
292 ionic_lif_deferred_enqueue(lif, work); in ionic_notifyq_service()
343 struct ionic_lif *lif = q->lif; in ionic_adminq_poke_doorbell() local
347 spin_lock_irqsave(&lif->adminq_lock, irqflags); in ionic_adminq_poke_doorbell()
350 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_poke_doorbell()
359 ionic_dbell_ring(q->lif->kern_dbpage, q->hw_type, in ionic_adminq_poke_doorbell()
365 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_poke_doorbell()
370 int ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) in ionic_adminq_post() argument
378 spin_lock_irqsave(&lif->adminq_lock, irqflags); in ionic_adminq_post()
379 if (!lif->adminqcq) { in ionic_adminq_post()
380 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_post()
384 q = &lif->adminqcq->q; in ionic_adminq_post()
391 err = ionic_heartbeat_check(lif->ionic); in ionic_adminq_post()
401 dev_dbg(&lif->netdev->dev, "post admin queue command:\n"); in ionic_adminq_post()
408 spin_unlock_irqrestore(&lif->adminq_lock, irqflags); in ionic_adminq_post()
413 int ionic_adminq_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx, in ionic_adminq_wait() argument
416 struct net_device *netdev = lif->netdev; in ionic_adminq_wait()
426 if (do_msg && !test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_adminq_wait()
444 ionic_heartbeat_check(lif->ionic); in ionic_adminq_wait()
445 if ((test_bit(IONIC_LIF_F_FW_RESET, lif->state) && in ionic_adminq_wait()
446 !lif->ionic->idev.fw_status_ready) || in ionic_adminq_wait()
447 test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { in ionic_adminq_wait()
458 dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n", in ionic_adminq_wait()
461 return ionic_adminq_check_err(lif, ctx, in ionic_adminq_wait()
466 static int __ionic_adminq_post_wait(struct ionic_lif *lif, in __ionic_adminq_post_wait() argument
472 if (!ionic_is_fw_running(&lif->ionic->idev)) in __ionic_adminq_post_wait()
475 err = ionic_adminq_post(lif, ctx); in __ionic_adminq_post_wait()
477 return ionic_adminq_wait(lif, ctx, err, do_msg); in __ionic_adminq_post_wait()
480 int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) in ionic_adminq_post_wait() argument
482 return __ionic_adminq_post_wait(lif, ctx, true); in ionic_adminq_post_wait()
486 int ionic_adminq_post_wait_nomsg(struct ionic_lif *lif, struct ionic_admin_ctx *ctx) in ionic_adminq_post_wait_nomsg() argument
488 return __ionic_adminq_post_wait(lif, ctx, false); in ionic_adminq_post_wait_nomsg()
655 &ionic->ident.lif); in ionic_identify()