Message ID | 20240908160702.56618-5-jdamato@fastly.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Add support for per-NAPI config via netlink | expand |
On Sun, Sep 08, 2024 at 04:06:38PM +0000, Joe Damato wrote: > Support dumping defer_hard_irqs for a NAPI ID. > > Signed-off-by: Joe Damato <jdamato@fastly.com> > --- > Documentation/netlink/specs/netdev.yaml | 8 ++++++++ > include/uapi/linux/netdev.h | 1 + > net/core/netdev-genl.c | 5 +++++ > tools/include/uapi/linux/netdev.h | 1 + > 4 files changed, 15 insertions(+) [...] > diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c > index 9561841b9d2d..f1e505ad069f 100644 > --- a/net/core/netdev-genl.c > +++ b/net/core/netdev-genl.c > @@ -160,6 +160,7 @@ static int > netdev_nl_napi_fill_one(struct sk_buff *rsp, struct napi_struct *napi, > const struct genl_info *info) > { > + int napi_defer_hard_irqs; I've already made this a u32 in my rfcv2 branch. > void *hdr; > pid_t pid; > > @@ -191,6 +192,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); > + if (nla_put_s32(rsp, NETDEV_A_NAPI_DEFER_HARD_IRQS, napi_defer_hard_irqs)) > + goto nla_put_failure; > + > genlmsg_end(rsp, hdr); > > return 0;
diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml index cf3e77c6fd5e..e4219bfff08d 100644 --- a/Documentation/netlink/specs/netdev.yaml +++ b/Documentation/netlink/specs/netdev.yaml @@ -252,6 +252,13 @@ attribute-sets: checks: min: 0 max: s32-max + - + name: defer-hard-irqs + doc: The number of consecutive empty polls before IRQ deferral ends + and hardware IRQs are re-enabled. + type: u32 + checks: + max: s32-max - name: queue attributes: @@ -602,6 +609,7 @@ operations: - irq - pid - index + - defer-hard-irqs dump: request: attributes: diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h index e06e33acb6fd..bcc95b7ebd92 100644 --- a/include/uapi/linux/netdev.h +++ b/include/uapi/linux/netdev.h @@ -122,6 +122,7 @@ enum { NETDEV_A_NAPI_IRQ, NETDEV_A_NAPI_PID, NETDEV_A_NAPI_INDEX, + NETDEV_A_NAPI_DEFER_HARD_IRQS, __NETDEV_A_NAPI_MAX, NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index 9561841b9d2d..f1e505ad069f 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -160,6 +160,7 @@ static int netdev_nl_napi_fill_one(struct sk_buff *rsp, struct napi_struct *napi, const struct genl_info *info) { + int napi_defer_hard_irqs; void *hdr; pid_t pid; @@ -191,6 +192,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); + if (nla_put_s32(rsp, NETDEV_A_NAPI_DEFER_HARD_IRQS, napi_defer_hard_irqs)) + goto nla_put_failure; + genlmsg_end(rsp, hdr); return 0; diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/netdev.h index 43742ac5b00d..43bb1aad9611 100644 --- a/tools/include/uapi/linux/netdev.h +++ b/tools/include/uapi/linux/netdev.h @@ -121,6 +121,7 @@ enum { NETDEV_A_NAPI_ID, NETDEV_A_NAPI_IRQ, NETDEV_A_NAPI_PID, + NETDEV_A_NAPI_DEFER_HARD_IRQS, __NETDEV_A_NAPI_MAX, NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
Support dumping defer_hard_irqs for a NAPI ID. Signed-off-by: Joe Damato <jdamato@fastly.com> --- Documentation/netlink/specs/netdev.yaml | 8 ++++++++ include/uapi/linux/netdev.h | 1 + net/core/netdev-genl.c | 5 +++++ tools/include/uapi/linux/netdev.h | 1 + 4 files changed, 15 insertions(+)