ionic: check for queue deadline in doorbell_napi_work
authorShannon Nelson <shannon.nelson@amd.com>
Wed, 19 Jun 2024 00:32:55 +0000 (17:32 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 20 Jun 2024 01:31:48 +0000 (18:31 -0700)
Check the deadline against the last time run and only
schedule a new napi if we haven't been run recently.

Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Link: https://lore.kernel.org/r/20240619003257.6138-7-shannon.nelson@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/pensando/ionic/ionic_dev.c

index 56e7c12..ec36ace 100644 (file)
@@ -58,7 +58,14 @@ void ionic_doorbell_napi_work(struct work_struct *work)
 {
        struct ionic_qcq *qcq = container_of(work, struct ionic_qcq,
                                             doorbell_napi_work);
-       ionic_napi_schedule_do_softirq(&qcq->napi);
+       unsigned long now, then, dif;
+
+       now = READ_ONCE(jiffies);
+       then = qcq->q.dbell_jiffies;
+       dif = now - then;
+
+       if (dif > qcq->q.dbell_deadline)
+               ionic_napi_schedule_do_softirq(&qcq->napi);
 }
 
 static int ionic_get_preferred_cpu(struct ionic *ionic,