On Thu, 29 Aug 2019 11:27:08 -0700, Shannon Nelson wrote:
> +static void ionic_lif_qcq_deinit(struct ionic_lif *lif, struct ionic_qcq
> *qcq)
> +{
> + struct ionic_dev *idev = &lif->ionic->idev;
> + struct device *dev = lif->ionic->dev;
> +
> + if (!qcq)
> + return;
> +
> + ionic_debugfs_del_qcq(qcq);
> +
> + if (!(qcq->flags & IONIC_QCQ_F_INITED))
> + return;
> +
> + if (qcq->flags & IONIC_QCQ_F_INTR) {
> + ionic_intr_mask(idev->intr_ctrl, qcq->intr.index,
> + IONIC_INTR_MASK_SET);
> + synchronize_irq(qcq->intr.vector);
> + devm_free_irq(dev, qcq->intr.vector, &qcq->napi);
Doesn't free_irq() basically imply synchronize_irq()?
> + netif_napi_del(&qcq->napi);
> + }
> +
> + qcq->flags &= ~IONIC_QCQ_F_INITED;