hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/ethernet/pensando/ionic/ionic_lif.c
....@@ -257,6 +257,7 @@
257257 .oper = IONIC_Q_ENABLE,
258258 },
259259 };
260
+ int ret;
260261
261262 idev = &lif->ionic->idev;
262263 dev = lif->ionic->dev;
....@@ -264,16 +265,24 @@
264265 dev_dbg(dev, "q_enable.index %d q_enable.qtype %d\n",
265266 ctx.cmd.q_control.index, ctx.cmd.q_control.type);
266267
268
+ if (qcq->flags & IONIC_QCQ_F_INTR)
269
+ ionic_intr_clean(idev->intr_ctrl, qcq->intr.index);
270
+
271
+ ret = ionic_adminq_post_wait(lif, &ctx);
272
+ if (ret)
273
+ return ret;
274
+
275
+ if (qcq->napi.poll)
276
+ napi_enable(&qcq->napi);
277
+
267278 if (qcq->flags & IONIC_QCQ_F_INTR) {
268279 irq_set_affinity_hint(qcq->intr.vector,
269280 &qcq->intr.affinity_mask);
270
- napi_enable(&qcq->napi);
271
- ionic_intr_clean(idev->intr_ctrl, qcq->intr.index);
272281 ionic_intr_mask(idev->intr_ctrl, qcq->intr.index,
273282 IONIC_INTR_MASK_CLEAR);
274283 }
275284
276
- return ionic_adminq_post_wait(lif, &ctx);
285
+ return 0;
277286 }
278287
279288 static int ionic_qcq_disable(struct ionic_qcq *qcq, bool send_to_hw)
....@@ -424,11 +433,6 @@
424433 static void ionic_link_qcq_interrupts(struct ionic_qcq *src_qcq,
425434 struct ionic_qcq *n_qcq)
426435 {
427
- if (WARN_ON(n_qcq->flags & IONIC_QCQ_F_INTR)) {
428
- ionic_intr_free(n_qcq->cq.lif->ionic, n_qcq->intr.index);
429
- n_qcq->flags &= ~IONIC_QCQ_F_INTR;
430
- }
431
-
432436 n_qcq->intr.vector = src_qcq->intr.vector;
433437 n_qcq->intr.index = src_qcq->intr.index;
434438 }