| .. | .. |
|---|
| 257 | 257 | .oper = IONIC_Q_ENABLE, |
|---|
| 258 | 258 | }, |
|---|
| 259 | 259 | }; |
|---|
| 260 | + int ret; |
|---|
| 260 | 261 | |
|---|
| 261 | 262 | idev = &lif->ionic->idev; |
|---|
| 262 | 263 | dev = lif->ionic->dev; |
|---|
| .. | .. |
|---|
| 264 | 265 | dev_dbg(dev, "q_enable.index %d q_enable.qtype %d\n", |
|---|
| 265 | 266 | ctx.cmd.q_control.index, ctx.cmd.q_control.type); |
|---|
| 266 | 267 | |
|---|
| 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 | + |
|---|
| 267 | 278 | if (qcq->flags & IONIC_QCQ_F_INTR) { |
|---|
| 268 | 279 | irq_set_affinity_hint(qcq->intr.vector, |
|---|
| 269 | 280 | &qcq->intr.affinity_mask); |
|---|
| 270 | | - napi_enable(&qcq->napi); |
|---|
| 271 | | - ionic_intr_clean(idev->intr_ctrl, qcq->intr.index); |
|---|
| 272 | 281 | ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, |
|---|
| 273 | 282 | IONIC_INTR_MASK_CLEAR); |
|---|
| 274 | 283 | } |
|---|
| 275 | 284 | |
|---|
| 276 | | - return ionic_adminq_post_wait(lif, &ctx); |
|---|
| 285 | + return 0; |
|---|
| 277 | 286 | } |
|---|
| 278 | 287 | |
|---|
| 279 | 288 | static int ionic_qcq_disable(struct ionic_qcq *qcq, bool send_to_hw) |
|---|
| .. | .. |
|---|
| 424 | 433 | static void ionic_link_qcq_interrupts(struct ionic_qcq *src_qcq, |
|---|
| 425 | 434 | struct ionic_qcq *n_qcq) |
|---|
| 426 | 435 | { |
|---|
| 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 | | - |
|---|
| 432 | 436 | n_qcq->intr.vector = src_qcq->intr.vector; |
|---|
| 433 | 437 | n_qcq->intr.index = src_qcq->intr.index; |
|---|
| 434 | 438 | } |
|---|