From: Zhu Yanjun <yanjun.zhu@linux.dev>
To: Zhu Yanjun <yanjun.zhu@intel.com>,
jgg@ziepe.ca, leon@kernel.org, zyjzyj2000@gmail.com,
linux-rdma@vger.kernel.org, parav@nvidia.com,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: Zhu Yanjun <yanjun.zhu@linux.dev>
Subject: Re: [PATCHv3 6/8] RDMA/rxe: add the support of net namespace
Date: Thu, 23 Feb 2023 21:14:02 +0800 [thread overview]
Message-ID: <632ac6bb-6cf7-d1c6-880b-c341bd55943c@linux.dev> (raw)
In-Reply-To: <20230214060634.427162-7-yanjun.zhu@intel.com>
在 2023/2/14 14:06, Zhu Yanjun 写道:
> From: Zhu Yanjun <yanjun.zhu@linux.dev>
>
> Originally init_net is used to indicate the current net namespace.
> Currently more net namespaces are supported.
>
> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Add netdev@vger.kernel.org.
Zhu Yanjun
> ---
> drivers/infiniband/sw/rxe/rxe.c | 2 +-
> drivers/infiniband/sw/rxe/rxe_net.c | 33 +++++++++++++++++------------
> drivers/infiniband/sw/rxe/rxe_net.h | 2 +-
> 3 files changed, 22 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
> index e81c2164d77f..4a17e4a003f5 100644
> --- a/drivers/infiniband/sw/rxe/rxe.c
> +++ b/drivers/infiniband/sw/rxe/rxe.c
> @@ -196,7 +196,7 @@ static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
> goto err;
> }
>
> - err = rxe_net_init();
> + err = rxe_net_init(ndev);
> if (err)
> return err;
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
> index b56e2c32fbf7..9af90587642a 100644
> --- a/drivers/infiniband/sw/rxe/rxe_net.c
> +++ b/drivers/infiniband/sw/rxe/rxe_net.c
> @@ -32,7 +32,7 @@ static struct dst_entry *rxe_find_route4(struct rxe_qp *qp,
> memcpy(&fl.daddr, daddr, sizeof(*daddr));
> fl.flowi4_proto = IPPROTO_UDP;
>
> - rt = ip_route_output_key(&init_net, &fl);
> + rt = ip_route_output_key(dev_net(ndev), &fl);
> if (IS_ERR(rt)) {
> rxe_dbg_qp(qp, "no route to %pI4\n", &daddr->s_addr);
> return NULL;
> @@ -56,7 +56,8 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp *qp,
> struct sock *sk;
>
> rcu_read_lock();
> - sk = udp6_lib_lookup(&init_net, NULL, 0, &in6addr_any, htons(ROCE_V2_UDP_DPORT), 0);
> + sk = udp6_lib_lookup(dev_net(ndev), NULL, 0, &in6addr_any,
> + htons(ROCE_V2_UDP_DPORT), 0);
> rcu_read_unlock();
> if (!sk) {
> pr_info("file: %s +%d, error\n", __FILE__, __LINE__);
> @@ -549,9 +550,13 @@ int rxe_net_add(const char *ibdev_name, struct net_device *ndev)
> void rxe_net_del(struct ib_device *dev)
> {
> struct sock *sk;
> + struct rxe_dev *rdev;
> +
> + rdev = container_of(dev, struct rxe_dev, ib_dev);
>
> rcu_read_lock();
> - sk = udp4_lib_lookup(&init_net, 0, 0, htonl(INADDR_ANY), htons(ROCE_V2_UDP_DPORT), 0);
> + sk = udp4_lib_lookup(dev_net(rdev->ndev), 0, 0, htonl(INADDR_ANY),
> + htons(ROCE_V2_UDP_DPORT), 0);
> rcu_read_unlock();
> if (!sk)
> return;
> @@ -564,7 +569,8 @@ void rxe_net_del(struct ib_device *dev)
> rxe_release_udp_tunnel(sk->sk_socket);
>
> rcu_read_lock();
> - sk = udp6_lib_lookup(&init_net, NULL, 0, &in6addr_any, htons(ROCE_V2_UDP_DPORT), 0);
> + sk = udp6_lib_lookup(dev_net(rdev->ndev), NULL, 0, &in6addr_any,
> + htons(ROCE_V2_UDP_DPORT), 0);
> rcu_read_unlock();
> if (!sk)
> return;
> @@ -636,6 +642,7 @@ static int rxe_notify(struct notifier_block *not_blk,
> switch (event) {
> case NETDEV_UNREGISTER:
> ib_unregister_device_queued(&rxe->ib_dev);
> + rxe_net_del(&rxe->ib_dev);
> break;
> case NETDEV_UP:
> rxe_port_up(rxe);
> @@ -669,19 +676,19 @@ static struct notifier_block rxe_net_notifier = {
> .notifier_call = rxe_notify,
> };
>
> -static int rxe_net_ipv4_init(void)
> +static int rxe_net_ipv4_init(struct net_device *ndev)
> {
> struct sock *sk;
> struct socket *sock;
>
> rcu_read_lock();
> - sk = udp4_lib_lookup(&init_net, 0, 0, htonl(INADDR_ANY),
> + sk = udp4_lib_lookup(dev_net(ndev), 0, 0, htonl(INADDR_ANY),
> htons(ROCE_V2_UDP_DPORT), 0);
> rcu_read_unlock();
> if (sk)
> return 0;
>
> - sock = rxe_setup_udp_tunnel(&init_net, htons(ROCE_V2_UDP_DPORT), false);
> + sock = rxe_setup_udp_tunnel(dev_net(ndev), htons(ROCE_V2_UDP_DPORT), false);
> if (IS_ERR(sock)) {
> pr_err("Failed to create IPv4 UDP tunnel\n");
> return -1;
> @@ -690,20 +697,20 @@ static int rxe_net_ipv4_init(void)
> return 0;
> }
>
> -static int rxe_net_ipv6_init(void)
> +static int rxe_net_ipv6_init(struct net_device *ndev)
> {
> #if IS_ENABLED(CONFIG_IPV6)
> struct sock *sk;
> struct socket *sock;
>
> rcu_read_lock();
> - sk = udp6_lib_lookup(&init_net, NULL, 0, &in6addr_any,
> + sk = udp6_lib_lookup(dev_net(ndev), NULL, 0, &in6addr_any,
> htons(ROCE_V2_UDP_DPORT), 0);
> rcu_read_unlock();
> if (sk)
> return 0;
>
> - sock = rxe_setup_udp_tunnel(&init_net, htons(ROCE_V2_UDP_DPORT), true);
> + sock = rxe_setup_udp_tunnel(dev_net(ndev), htons(ROCE_V2_UDP_DPORT), true);
> if (PTR_ERR(sock) == -EAFNOSUPPORT) {
> pr_warn("IPv6 is not supported, can not create a UDPv6 socket\n");
> return 0;
> @@ -735,14 +742,14 @@ void rxe_net_exit(void)
> unregister_netdevice_notifier(&rxe_net_notifier);
> }
>
> -int rxe_net_init(void)
> +int rxe_net_init(struct net_device *ndev)
> {
> int err;
>
> - err = rxe_net_ipv4_init();
> + err = rxe_net_ipv4_init(ndev);
> if (err)
> return err;
> - err = rxe_net_ipv6_init();
> + err = rxe_net_ipv6_init(ndev);
> if (err)
> goto err_out;
> return 0;
> diff --git a/drivers/infiniband/sw/rxe/rxe_net.h b/drivers/infiniband/sw/rxe/rxe_net.h
> index 027b20e1bab6..56249677d692 100644
> --- a/drivers/infiniband/sw/rxe/rxe_net.h
> +++ b/drivers/infiniband/sw/rxe/rxe_net.h
> @@ -15,7 +15,7 @@ int rxe_net_add(const char *ibdev_name, struct net_device *ndev);
> void rxe_net_del(struct ib_device *dev);
>
> int rxe_register_notifier(void);
> -int rxe_net_init(void);
> +int rxe_net_init(struct net_device *ndev);
> void rxe_net_exit(void);
>
> #endif /* RXE_NET_H */
next prev parent reply other threads:[~2023-02-23 13:15 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-14 6:06 [PATCHv3 0/8] Fix the problem that rxe can not work in net namespace Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 1/8] RDMA/rxe: Creating listening sock in newlink function Zhu Yanjun
2023-02-23 13:10 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 2/8] RDMA/rxe: Support more rdma links in init_net Zhu Yanjun
2023-02-23 13:10 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 3/8] RDMA/nldev: Add dellink function pointer Zhu Yanjun
2023-02-23 13:11 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 4/8] RDMA/rxe: Implement dellink in rxe Zhu Yanjun
2023-02-23 13:12 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 5/8] RDMA/rxe: Replace global variable with sock lookup functions Zhu Yanjun
2023-02-23 13:13 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 6/8] RDMA/rxe: add the support of net namespace Zhu Yanjun
2023-02-23 13:14 ` Zhu Yanjun [this message]
2023-02-14 6:06 ` [PATCHv3 7/8] RDMA/rxe: Add the support of net namespace notifier Zhu Yanjun
2023-02-23 13:14 ` Zhu Yanjun
2023-02-14 6:06 ` [PATCHv3 8/8] RDMA/rxe: Replace l_sk6 with sk6 in net namespace Zhu Yanjun
2023-02-23 13:15 ` Zhu Yanjun
2023-02-23 0:31 ` [PATCHv3 0/8] Fix the problem that rxe can not work " Zhu Yanjun
2023-02-23 4:56 ` Jakub Kicinski
2023-02-23 11:42 ` Zhu Yanjun
2023-02-25 8:43 ` Rain River
2023-04-12 17:22 ` Mark Lehrer
2023-04-12 21:01 ` Mark Lehrer
2023-04-13 7:22 ` Zhu Yanjun
2023-04-13 13:00 ` Mark Lehrer
2023-04-13 13:05 ` Parav Pandit
2023-04-13 15:38 ` Mark Lehrer
2023-04-13 16:20 ` Parav Pandit
2023-04-13 16:23 ` Parav Pandit
2023-04-13 16:37 ` Mark Lehrer
2023-04-13 16:42 ` Parav Pandit
2023-04-14 15:49 ` Zhu Yanjun
[not found] ` <CADvaNzWfS5TFQ3b5JyaKFft06ihazadSJ15V3aXvWZh1jp1cCA@mail.gmail.com>
2023-04-14 16:24 ` Mark Lehrer
2023-04-15 13:35 ` Zhu Yanjun
2023-04-19 0:43 ` Parav Pandit
2023-04-19 4:19 ` Zhu Yanjun
2023-04-19 18:01 ` Mark Lehrer
2023-04-20 14:28 ` Zhu Yanjun
2023-04-13 7:17 ` Zhu Yanjun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=632ac6bb-6cf7-d1c6-880b-c341bd55943c@linux.dev \
--to=yanjun.zhu@linux.dev \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=parav@nvidia.com \
--cc=yanjun.zhu@intel.com \
--cc=zyjzyj2000@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.