| From ca9cc8937b7ff02d5cabf48df05f9a8f687d0b76 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 23 Jul 2021 11:02:47 -0700 |
| Subject: ionic: remove intr coalesce update from napi |
| |
| From: Shannon Nelson <snelson@pensando.io> |
| |
| [ Upstream commit a6ff85e0a2d9d074a4b4c291ba9ec1e5b0aba22b ] |
| |
| Move the interrupt coalesce value update out of the napi |
| thread and into the dim_work thread and set it only when it |
| has actually changed. |
| |
| Fixes: 04a834592bf5 ("ionic: dynamic interrupt moderation") |
| Signed-off-by: Shannon Nelson <snelson@pensando.io> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/pensando/ionic/ionic_lif.c | 14 +++++++++++++- |
| drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 4 ---- |
| 2 files changed, 13 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| index d0ae1cf43592..6dc7ce649448 100644 |
| --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c |
| @@ -52,7 +52,19 @@ static void ionic_dim_work(struct work_struct *work) |
| cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix); |
| qcq = container_of(dim, struct ionic_qcq, dim); |
| new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec); |
| - qcq->intr.dim_coal_hw = new_coal ? new_coal : 1; |
| + new_coal = new_coal ? new_coal : 1; |
| + |
| + if (qcq->intr.dim_coal_hw != new_coal) { |
| + unsigned int qi = qcq->cq.bound_q->index; |
| + struct ionic_lif *lif = qcq->q.lif; |
| + |
| + qcq->intr.dim_coal_hw = new_coal; |
| + |
| + ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, |
| + lif->rxqcqs[qi]->intr.index, |
| + qcq->intr.dim_coal_hw); |
| + } |
| + |
| dim->state = DIM_START_MEASURE; |
| } |
| |
| diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| index 909eca14f647..ec064327c998 100644 |
| --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c |
| @@ -429,10 +429,6 @@ static void ionic_dim_update(struct ionic_qcq *qcq) |
| lif = qcq->q.lif; |
| qi = qcq->cq.bound_q->index; |
| |
| - ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, |
| - lif->rxqcqs[qi]->intr.index, |
| - qcq->intr.dim_coal_hw); |
| - |
| dim_update_sample(qcq->cq.bound_intr->rearm_count, |
| lif->txqstats[qi].pkts, |
| lif->txqstats[qi].bytes, |
| -- |
| 2.30.2 |
| |