Message ID | 20230214060634.427162-9-yanjun.zhu@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Fix the problem that rxe can not work in net namespace | expand |
在 2023/2/14 14:06, Zhu Yanjun 写道: > From: Zhu Yanjun <yanjun.zhu@linux.dev> > > The net namespace variable sk6 can be used. As such, l_sk6 can be > replaced with it. > > Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> Add netdev@vger.kernel.org. Zhu Yanjun > --- > drivers/infiniband/sw/rxe/rxe.c | 1 - > drivers/infiniband/sw/rxe/rxe_net.c | 20 +------------------- > drivers/infiniband/sw/rxe/rxe_verbs.h | 1 - > 3 files changed, 1 insertion(+), 21 deletions(-) > > diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c > index c297677bf06a..3260f598a7fb 100644 > --- a/drivers/infiniband/sw/rxe/rxe.c > +++ b/drivers/infiniband/sw/rxe/rxe.c > @@ -75,7 +75,6 @@ static void rxe_init_device_param(struct rxe_dev *rxe) > rxe->ndev->dev_addr); > > rxe->max_ucontext = RXE_MAX_UCONTEXT; > - rxe->l_sk6 = NULL; > } > > /* initialize port attributes */ > diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c > index 8135876b11f6..ebcb86fa1e5e 100644 > --- a/drivers/infiniband/sw/rxe/rxe_net.c > +++ b/drivers/infiniband/sw/rxe/rxe_net.c > @@ -50,24 +50,6 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp *qp, > { > struct dst_entry *ndst; > struct flowi6 fl6 = { { 0 } }; > - struct rxe_dev *rdev; > - > - rdev = rxe_get_dev_from_net(ndev); > - if (!rdev->l_sk6) { > - struct sock *sk; > - > - rcu_read_lock(); > - 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__); > - return (struct dst_entry *)sk; > - } > - __sock_put(sk); > - rdev->l_sk6 = sk->sk_socket; > - } > - > > memset(&fl6, 0, sizeof(fl6)); > fl6.flowi6_oif = ndev->ifindex; > @@ -76,7 +58,7 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp *qp, > fl6.flowi6_proto = IPPROTO_UDP; > > ndst = ipv6_stub->ipv6_dst_lookup_flow(dev_net(ndev), > - rdev->l_sk6->sk, &fl6, > + rxe_ns_pernet_sk6(dev_net(ndev)), &fl6, > NULL); > if (IS_ERR(ndst)) { > rxe_dbg_qp(qp, "no route to %pI6\n", daddr); > diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h > index 52c4ef4d0305..19ddfa890480 100644 > --- a/drivers/infiniband/sw/rxe/rxe_verbs.h > +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h > @@ -408,7 +408,6 @@ struct rxe_dev { > > struct rxe_port port; > struct crypto_shash *tfm; > - struct socket *l_sk6; > }; > > static inline void rxe_counter_inc(struct rxe_dev *rxe, enum rxe_counters index)
diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c index c297677bf06a..3260f598a7fb 100644 --- a/drivers/infiniband/sw/rxe/rxe.c +++ b/drivers/infiniband/sw/rxe/rxe.c @@ -75,7 +75,6 @@ static void rxe_init_device_param(struct rxe_dev *rxe) rxe->ndev->dev_addr); rxe->max_ucontext = RXE_MAX_UCONTEXT; - rxe->l_sk6 = NULL; } /* initialize port attributes */ diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c index 8135876b11f6..ebcb86fa1e5e 100644 --- a/drivers/infiniband/sw/rxe/rxe_net.c +++ b/drivers/infiniband/sw/rxe/rxe_net.c @@ -50,24 +50,6 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp *qp, { struct dst_entry *ndst; struct flowi6 fl6 = { { 0 } }; - struct rxe_dev *rdev; - - rdev = rxe_get_dev_from_net(ndev); - if (!rdev->l_sk6) { - struct sock *sk; - - rcu_read_lock(); - 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__); - return (struct dst_entry *)sk; - } - __sock_put(sk); - rdev->l_sk6 = sk->sk_socket; - } - memset(&fl6, 0, sizeof(fl6)); fl6.flowi6_oif = ndev->ifindex; @@ -76,7 +58,7 @@ static struct dst_entry *rxe_find_route6(struct rxe_qp *qp, fl6.flowi6_proto = IPPROTO_UDP; ndst = ipv6_stub->ipv6_dst_lookup_flow(dev_net(ndev), - rdev->l_sk6->sk, &fl6, + rxe_ns_pernet_sk6(dev_net(ndev)), &fl6, NULL); if (IS_ERR(ndst)) { rxe_dbg_qp(qp, "no route to %pI6\n", daddr); diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h index 52c4ef4d0305..19ddfa890480 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.h +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h @@ -408,7 +408,6 @@ struct rxe_dev { struct rxe_port port; struct crypto_shash *tfm; - struct socket *l_sk6; }; static inline void rxe_counter_inc(struct rxe_dev *rxe, enum rxe_counters index)