aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/netpoll.c
diff options
context:
space:
mode:
authorBreno Leitao <[email protected]>2025-07-02 10:06:37 +0000
committerJakub Kicinski <[email protected]>2025-07-08 01:52:56 +0000
commitcacfb1f4e9f6e9b1f15517841b0ef19ae83b38be (patch)
treec159ec299014e3161d2c364dd03270408d9a29db /net/core/netpoll.c
parentnetpoll: factor out IPv4 header setup into push_ipv4() helper (diff)
downloadkernel-cacfb1f4e9f6e9b1f15517841b0ef19ae83b38be.tar.gz
kernel-cacfb1f4e9f6e9b1f15517841b0ef19ae83b38be.zip
netpoll: factor out UDP header setup into push_udp() helper
Move UDP header construction from netpoll_send_udp() into a new static helper function push_udp(). This completes the protocol layer refactoring by: 1. Creating a dedicated helper for UDP header assembly 2. Removing UDP-specific logic from the main send function 3. Establishing a consistent pattern with existing IPv4/IPv6 helpers: - push_udp() - push_ipv4() - push_ipv6() The change improves code organization and maintains the encapsulation pattern established in previous refactorings. Signed-off-by: Breno Leitao <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r--net/core/netpoll.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index ff64e94df535..70035e27d91c 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -473,11 +473,28 @@ static void push_ipv4(struct netpoll *np, struct sk_buff *skb, int len)
eth->h_proto = htons(ETH_P_IP);
}
+static void push_udp(struct netpoll *np, struct sk_buff *skb, int len)
+{
+ struct udphdr *udph;
+ int udp_len;
+
+ udp_len = len + sizeof(struct udphdr);
+
+ skb_push(skb, sizeof(struct udphdr));
+ skb_reset_transport_header(skb);
+
+ udph = udp_hdr(skb);
+ udph->source = htons(np->local_port);
+ udph->dest = htons(np->remote_port);
+ udph->len = htons(udp_len);
+
+ netpoll_udp_checksum(np, skb, len);
+}
+
int netpoll_send_udp(struct netpoll *np, const char *msg, int len)
{
int total_len, ip_len, udp_len;
struct sk_buff *skb;
- struct udphdr *udph;
struct ethhdr *eth;
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
@@ -499,14 +516,7 @@ int netpoll_send_udp(struct netpoll *np, const char *msg, int len)
skb_copy_to_linear_data(skb, msg, len);
skb_put(skb, len);
- skb_push(skb, sizeof(struct udphdr));
- skb_reset_transport_header(skb);
- udph = udp_hdr(skb);
- udph->source = htons(np->local_port);
- udph->dest = htons(np->remote_port);
- udph->len = htons(udp_len);
-
- netpoll_udp_checksum(np, skb, len);
+ push_udp(np, skb, len);
if (np->ipv6)
push_ipv6(np, skb, len);
else