]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ionic: Use CQE profile for dim
authorBrett Creeley <brett.creeley@amd.com>
Thu, 29 Feb 2024 19:39:33 +0000 (11:39 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Mar 2024 09:38:13 +0000 (09:38 +0000)
Use the kernel's CQE dim table to align better with the
driver's use of completion queues, and use the tx moderation
when using Tx interrupts.

Signed-off-by: Brett Creeley <brett.creeley@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/pensando/ionic/ionic_lif.c

index 4271ebb0ddc04eac7720ee59ca780607a2a5b250..33b1691a4ee5eaa71b7006a8d8c7bb71ec7929d0 100644 (file)
@@ -52,15 +52,20 @@ static void ionic_xdp_unregister_rxq_info(struct ionic_queue *q);
 static void ionic_dim_work(struct work_struct *work)
 {
        struct dim *dim = container_of(work, struct dim, work);
-       struct ionic_intr_info *intr;
        struct dim_cq_moder cur_moder;
+       struct ionic_intr_info *intr;
        struct ionic_qcq *qcq;
        struct ionic_lif *lif;
+       struct ionic_queue *q;
        u32 new_coal;
 
-       cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
        qcq = container_of(dim, struct ionic_qcq, dim);
-       lif = qcq->q.lif;
+       q = &qcq->q;
+       if (q->type == IONIC_QTYPE_RXQ)
+               cur_moder = net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
+       else
+               cur_moder = net_dim_get_tx_moderation(dim->mode, dim->profile_ix);
+       lif = q->lif;
        new_coal = ionic_coal_usec_to_hw(lif->ionic, cur_moder.usec);
        new_coal = new_coal ? new_coal : 1;
 
@@ -685,7 +690,7 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type,
        }
 
        INIT_WORK(&new->dim.work, ionic_dim_work);
-       new->dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE;
+       new->dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_CQE;
 
        *qcq = new;