Thread (48 messages) 48 messages, 7 authors, 2024-09-09

Re: [PATCH net-next 2/5] netdev-genl: Dump napi_defer_hard_irqs

From: Joe Damato <hidden>
Date: 2024-08-30 09:10:52
Also in: lkml

On Thu, Aug 29, 2024 at 03:08:28PM -0700, Jakub Kicinski wrote:
On Thu, 29 Aug 2024 13:11:58 +0000 Joe Damato wrote:
quoted
diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml
index 959755be4d7f..ee4f99fd4574 100644
--- a/Documentation/netlink/specs/netdev.yaml
+++ b/Documentation/netlink/specs/netdev.yaml
@@ -244,6 +244,11 @@ attribute-sets:
              threaded mode. If NAPI is not in threaded mode (i.e. uses normal
              softirq context), the attribute will be absent.
         type: u32
+      -
+        name: defer-hard-irqs
+        doc: The number of consecutive empty polls before IRQ deferral ends
+             and hardware IRQs are re-enabled.
+        type: s32
Why is this a signed value? 🤔️
In commit 6f8b12d661d0 ("net: napi: add hard irqs deferral
feature"), napi_defer_hard_irqs was added to struct net_device as an
int. I was trying to match that and thus made the field a signed int
in the napi struct, as well.

It looks like there was a possibility of overflow introduced in that
commit in change_napi_defer_hard_irqs maybe ?

If you'd prefer I could:
  - submit a Fixes to change the net_device field to a u32 and then
    change the netlink code to also be u32
  - add an overflow check (val > U32_MAX) in
    change_napi_defer_hard_irqs

Which would mean for the v2 of this series:
  - drop the overflow check I added in Patch 1
  - Change netlink to use u32 in this patch 

What do you think?
You can use:

	check:
		max: s32-max

to have netlink validate the overflow if you switch to u32.
quoted
   -
     name: queue
     attributes:
quoted
@@ -188,6 +189,10 @@ netdev_nl_napi_fill_one(struct sk_buff *rsp, struct napi_struct *napi,
 			goto nla_put_failure;
 	}
 
+	napi_defer_hard_irqs = napi_get_defer_hard_irqs(napi);
Here, for example the READ_ONCE() wouldn't have been necessary, right?
Cause we are holding rtnl_lock(), just a random thought, not really
actionable.
That's right, yes.

I think it depends on where we land with the wrapper functions? I'll
reply with my thoughts about that in that thread.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help