From: Shannon Nelson Date: Wed, 19 Jun 2024 00:32:55 +0000 (-0700) Subject: ionic: check for queue deadline in doorbell_napi_work X-Git-Tag: v6.11-rc1~163^2~170^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=55a3982ec721dabd5a4c2f16bfb03deb032e45c2;p=thirdparty%2Fkernel%2Flinux.git ionic: check for queue deadline in doorbell_napi_work 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 Link: https://lore.kernel.org/r/20240619003257.6138-7-shannon.nelson@amd.com Signed-off-by: Jakub Kicinski --- diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.c b/drivers/net/ethernet/pensando/ionic/ionic_dev.c index 56e7c120d4929..ec36ace6d0103 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.c @@ -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,