Lines Matching defs:lif
192 static void ionic_adminq_flush(struct ionic_lif *lif)
199 spin_lock_irqsave(&lif->adminq_lock, irqflags);
200 if (!lif->adminqcq) {
201 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
205 q = &lif->adminqcq->q;
214 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
217 void ionic_adminq_netdev_err_print(struct ionic_lif *lif, u8 opcode,
225 netdev_err(lif->netdev, "%s (%d) failed: %s (%d)\n",
229 static int ionic_adminq_check_err(struct ionic_lif *lif,
241 ionic_adminq_netdev_err_print(lif, ctx->cmd.cmd.opcode,
245 ionic_adminq_flush(lif);
257 struct ionic_lif *lif;
263 lif = q->admin_info[0].ctx;
264 netdev = lif->netdev;
268 if ((s64)(eid - lif->last_eid) <= 0)
271 lif->last_eid = eid;
273 dev_dbg(lif->ionic->dev, "notifyq event:\n");
279 ionic_link_status_check_request(lif, CAN_NOT_SLEEP);
282 if (lif->ionic->idev.fw_status_ready &&
283 !test_bit(IONIC_LIF_F_FW_RESET, lif->state) &&
284 !test_and_set_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) {
287 netdev_err(lif->netdev, "Reset event dropped\n");
288 clear_bit(IONIC_LIF_F_FW_STOPPING, lif->state);
291 ionic_lif_deferred_enqueue(lif, work);
342 struct ionic_lif *lif = q->lif;
346 spin_lock_irqsave(&lif->adminq_lock, irqflags);
349 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
358 ionic_dbell_ring(q->lif->kern_dbpage, q->hw_type,
364 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
369 int ionic_adminq_post(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
377 spin_lock_irqsave(&lif->adminq_lock, irqflags);
378 if (!lif->adminqcq) {
379 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
383 q = &lif->adminqcq->q;
390 err = ionic_heartbeat_check(lif->ionic);
400 dev_dbg(&lif->netdev->dev, "post admin queue command:\n");
407 spin_unlock_irqrestore(&lif->adminq_lock, irqflags);
412 int ionic_adminq_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx,
415 struct net_device *netdev = lif->netdev;
425 if (do_msg && !test_bit(IONIC_LIF_F_FW_RESET, lif->state))
443 ionic_heartbeat_check(lif->ionic);
444 if ((test_bit(IONIC_LIF_F_FW_RESET, lif->state) &&
445 !lif->ionic->idev.fw_status_ready) ||
446 test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) {
457 dev_dbg(lif->ionic->dev, "%s: elapsed %d msecs\n",
460 return ionic_adminq_check_err(lif, ctx,
465 static int __ionic_adminq_post_wait(struct ionic_lif *lif,
471 if (!ionic_is_fw_running(&lif->ionic->idev))
474 err = ionic_adminq_post(lif, ctx);
476 return ionic_adminq_wait(lif, ctx, err, do_msg);
479 int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
481 return __ionic_adminq_post_wait(lif, ctx, true);
484 int ionic_adminq_post_wait_nomsg(struct ionic_lif *lif, struct ionic_admin_ctx *ctx)
486 return __ionic_adminq_post_wait(lif, ctx, false);
653 &ionic->ident.lif);