]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
geneve: Pass struct geneve_dev to geneve_create_sock().
authorKuniyuki Iwashima <kuniyu@google.com>
Tue, 2 Jun 2026 19:03:42 +0000 (19:03 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Jun 2026 01:07:41 +0000 (18:07 -0700)
This is a prep patch to make a subsequent patch clean.

We will need to access geneve_dev->cfg.info.key.u.{ipv4,ipv6}.src
in geneve_create_sock() later.

Let's pass down struct geneve_dev from geneve_sock_add() to
geneve_create_sock() instead of individual config fields.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260602190436.139591-3-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/geneve.c

index 8413c21fee6fcca964e5121559e009acbca25173..7e8c3023842ef2bc373a89bb3215aabc2764d0df 100644 (file)
@@ -760,9 +760,10 @@ static int geneve_udp_encap_err_lookup(struct sock *sk, struct sk_buff *skb)
        return -EPFNOSUPPORT;
 }
 
-static struct sock *geneve_create_sock(struct net *net, bool ipv6,
-                                      __be16 port, bool ipv6_rx_csum)
+static struct sock *geneve_create_sock(struct net *net,
+                                      struct geneve_dev *geneve, bool ipv6)
 {
+       struct ip_tunnel_info *info = &geneve->cfg.info;
        struct udp_port_cfg udp_conf;
        struct socket *sock;
        int err;
@@ -772,13 +773,13 @@ static struct sock *geneve_create_sock(struct net *net, bool ipv6,
        if (ipv6) {
                udp_conf.family = AF_INET6;
                udp_conf.ipv6_v6only = 1;
-               udp_conf.use_udp6_rx_checksums = ipv6_rx_csum;
+               udp_conf.use_udp6_rx_checksums = geneve->cfg.use_udp6_rx_checksums;
        } else {
                udp_conf.family = AF_INET;
                udp_conf.local_ip.s_addr = htonl(INADDR_ANY);
        }
 
-       udp_conf.local_udp_port = port;
+       udp_conf.local_udp_port = info->key.tp_dst;
 
        /* Open UDP socket */
        err = udp_sock_create(net, &udp_conf, &sock);
@@ -970,8 +971,8 @@ static int geneve_gro_complete(struct sock *sk, struct sk_buff *skb,
 }
 
 /* Create new listen socket if needed */
-static struct geneve_sock *geneve_socket_create(struct net *net, __be16 port,
-                                               bool ipv6, bool ipv6_rx_csum)
+static struct geneve_sock *geneve_socket_create(struct net *net,
+                                               struct geneve_dev *geneve, bool ipv6)
 {
        struct geneve_net *gn = net_generic(net, geneve_net_id);
        struct udp_tunnel_sock_cfg tunnel_cfg;
@@ -983,7 +984,7 @@ static struct geneve_sock *geneve_socket_create(struct net *net, __be16 port,
        if (!gs)
                return ERR_PTR(-ENOMEM);
 
-       sk = geneve_create_sock(net, ipv6, port, ipv6_rx_csum);
+       sk = geneve_create_sock(net, geneve, ipv6);
        if (IS_ERR(sk)) {
                kfree(gs);
                return ERR_CAST(sk);
@@ -1073,8 +1074,7 @@ static int geneve_sock_add(struct geneve_dev *geneve, bool ipv6)
                goto out;
        }
 
-       gs = geneve_socket_create(net, geneve->cfg.info.key.tp_dst, ipv6,
-                                 geneve->cfg.use_udp6_rx_checksums);
+       gs = geneve_socket_create(net, geneve, ipv6);
        if (IS_ERR(gs))
                return PTR_ERR(gs);