diff --git a/home/nipa/nipa_out/946098/ynl/old-code/netdev-user.c b/home/nipa/nipa_out/946098/ynl/new-code/netdev-user.c index d1b9508ea8a0..236605df3e7e 100644 --- a/home/nipa/nipa_out/946098/ynl/old-code/netdev-user.c +++ b/home/nipa/nipa_out/946098/ynl/new-code/netdev-user.c @@ -106,6 +106,19 @@ const char *netdev_qstats_scope_str(enum netdev_qstats_scope value) return netdev_qstats_scope_strmap[value]; } +static const char * const netdev_napi_threaded_strmap[] = { + [0] = "disable", + [1] = "enable", + [2] = "busy-poll-enable", +}; + +const char *netdev_napi_threaded_str(enum netdev_napi_threaded value) +{ + if (value < 0 || value >= (int)YNL_ARRAY_SIZE(netdev_napi_threaded_strmap)) + return NULL; + return netdev_napi_threaded_strmap[value]; +} + /* Policies */ const struct ynl_policy_attr netdev_io_uring_provider_info_policy[NETDEV_A_IO_URING_PROVIDER_INFO_MAX + 1] = { }; @@ -216,6 +229,7 @@ const struct ynl_policy_attr netdev_napi_policy[NETDEV_A_NAPI_MAX + 1] = { [NETDEV_A_NAPI_DEFER_HARD_IRQS] = { .name = "defer-hard-irqs", .type = YNL_PT_U32, }, [NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT] = { .name = "gro-flush-timeout", .type = YNL_PT_UINT, }, [NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT] = { .name = "irq-suspend-timeout", .type = YNL_PT_UINT, }, + [NETDEV_A_NAPI_THREADED] = { .name = "threaded", .type = YNL_PT_U32, }, }; const struct ynl_policy_nest netdev_napi_nest = { @@ -1038,6 +1052,11 @@ int netdev_napi_get_rsp_parse(const struct nlmsghdr *nlh, return YNL_PARSE_CB_ERROR; dst->_present.irq_suspend_timeout = 1; dst->irq_suspend_timeout = ynl_attr_get_uint(attr); + } else if (type == NETDEV_A_NAPI_THREADED) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.threaded = 1; + dst->threaded = ynl_attr_get_u32(attr); } } @@ -1327,6 +1346,8 @@ int netdev_napi_set(struct ynl_sock *ys, struct netdev_napi_set_req *req) ynl_attr_put_uint(nlh, NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT, req->gro_flush_timeout); if (req->_present.irq_suspend_timeout) ynl_attr_put_uint(nlh, NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT, req->irq_suspend_timeout); + if (req->_present.threaded) + ynl_attr_put_u32(nlh, NETDEV_A_NAPI_THREADED, req->threaded); err = ynl_exec(ys, nlh, &yrs); if (err < 0) diff --git a/home/nipa/nipa_out/946098/ynl/old-code/netdev-user.h b/home/nipa/nipa_out/946098/ynl/new-code/netdev-user.h index bb14a9c81982..f3fa5308880b 100644 --- a/home/nipa/nipa_out/946098/ynl/old-code/netdev-user.h +++ b/home/nipa/nipa_out/946098/ynl/new-code/netdev-user.h @@ -22,6 +22,7 @@ const char *netdev_xdp_rx_metadata_str(enum netdev_xdp_rx_metadata value); const char *netdev_xsk_flags_str(enum netdev_xsk_flags value); const char *netdev_queue_type_str(enum netdev_queue_type value); const char *netdev_qstats_scope_str(enum netdev_qstats_scope value); +const char *netdev_napi_threaded_str(enum netdev_napi_threaded value); /* Common nested types */ struct netdev_io_uring_provider_info { @@ -419,6 +420,7 @@ struct netdev_napi_get_rsp { __u32 defer_hard_irqs:1; __u32 gro_flush_timeout:1; __u32 irq_suspend_timeout:1; + __u32 threaded:1; } _present; __u32 id; @@ -428,6 +430,7 @@ struct netdev_napi_get_rsp { __u32 defer_hard_irqs; __u64 gro_flush_timeout; __u64 irq_suspend_timeout; + enum netdev_napi_threaded threaded; }; void netdev_napi_get_rsp_free(struct netdev_napi_get_rsp *rsp); @@ -603,12 +606,14 @@ struct netdev_napi_set_req { __u32 defer_hard_irqs:1; __u32 gro_flush_timeout:1; __u32 irq_suspend_timeout:1; + __u32 threaded:1; } _present; __u32 id; __u32 defer_hard_irqs; __u64 gro_flush_timeout; __u64 irq_suspend_timeout; + enum netdev_napi_threaded threaded; }; static inline struct netdev_napi_set_req *netdev_napi_set_req_alloc(void) @@ -644,6 +649,13 @@ netdev_napi_set_req_set_irq_suspend_timeout(struct netdev_napi_set_req *req, req->_present.irq_suspend_timeout = 1; req->irq_suspend_timeout = irq_suspend_timeout; } +static inline void +netdev_napi_set_req_set_threaded(struct netdev_napi_set_req *req, + enum netdev_napi_threaded threaded) +{ + req->_present.threaded = 1; + req->threaded = threaded; +} /* * Set configurable NAPI instance settings.