Message ID | 20240912173608.1821083-1-max@kutsevol.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v3,1/2] netpoll: Make netpoll_send_udp return status instead of void | expand |
On Thu, Sep 12, 2024 at 10:28:51AM -0700, Maksym Kutsevol wrote: > netpoll_send_udp can return if send was successful. > It will allow client code to be aware of the send status. > > Possible return values are the result of __netpoll_send_skb (cast to int) > and -ENOMEM. This doesn't cover the case when TX was not successful > instantaneously and was scheduled for later, __netpoll__send_skb returns > success in that case. > > Signed-off-by: Maksym Kutsevol <max@kutsevol.com> Reviewed-by: Breno Leitao <leitao@debian.org> Thanks for addressing it. Two things you might want to consider: 1) There are some warnings related to this patch. a) Not CCed maintainers b) WARNING: line length of 95 exceeds 80 columns You can see them here: https://patchwork.kernel.org/project/netdevbpf/patch/20240912173608.1821083-2-max@kutsevol.com/ Also, this might conflict with the refactor I did a while ago, so, you might need to rebase: https://lore.kernel.org/all/20240910100410.2690012-1-leitao@debian.org/ Other than that, I am happy with it. Thanks for doing it -breno
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index cd4e28db0cbd..b1ba8d6331a5 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h @@ -56,7 +56,7 @@ static inline void netpoll_poll_disable(struct net_device *dev) { return; } static inline void netpoll_poll_enable(struct net_device *dev) { return; } #endif -void netpoll_send_udp(struct netpoll *np, const char *msg, int len); +int netpoll_send_udp(struct netpoll *np, const char *msg, int len); void netpoll_print_options(struct netpoll *np); int netpoll_parse_options(struct netpoll *np, char *opt); int __netpoll_setup(struct netpoll *np, struct net_device *ndev); diff --git a/net/core/netpoll.c b/net/core/netpoll.c index ca52cbe0f63c..4719db36ff25 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -390,7 +390,7 @@ netdev_tx_t netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) } EXPORT_SYMBOL(netpoll_send_skb); -void netpoll_send_udp(struct netpoll *np, const char *msg, int len) +int netpoll_send_udp(struct netpoll *np, const char *msg, int len) { int total_len, ip_len, udp_len; struct sk_buff *skb; @@ -414,7 +414,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len) skb = find_skb(np, total_len + np->dev->needed_tailroom, total_len - len); if (!skb) - return; + return -ENOMEM; skb_copy_to_linear_data(skb, msg, len); skb_put(skb, len); @@ -490,7 +490,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len) skb->dev = np->dev; - netpoll_send_skb(np, skb); + return (int)netpoll_send_skb(np, skb); } EXPORT_SYMBOL(netpoll_send_udp);
netpoll_send_udp can return if send was successful. It will allow client code to be aware of the send status. Possible return values are the result of __netpoll_send_skb (cast to int) and -ENOMEM. This doesn't cover the case when TX was not successful instantaneously and was scheduled for later, __netpoll__send_skb returns success in that case. Signed-off-by: Maksym Kutsevol <max@kutsevol.com> --- Changelog: v3: No changes, resend. v2: No changes, resend. * https://lore.kernel.org/netdev/20240828214524.1867954-1-max@kutsevol.com/ v1: * https://lore.kernel.org/netdev/20240824215130.2134153-1-max@kutsevol.com/ include/linux/netpoll.h | 2 +- net/core/netpoll.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) base-commit: bf73478b539b4a13e0b4e104c82fe3c2833db562