Message ID | 20241211023055.89610-3-guangguan.wang@linux.alibaba.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | net/smc: Two features for smc-r | expand |
On Wed, 11 Dec 2024 10:30:55 +0800 Guangguan Wang <guangguan.wang@linux.alibaba.com> wrote: > AF_INET6 is not supported for smc-r v2 client before, even if the > ipv6 addr is ipv4 mapped. Thus, when using AF_INET6, smc-r connection > will fallback to tcp, especially for java applications running smc-r. > This patch support ipv4 mapped ipv6 addr client for smc-r v2. Clients > using real global ipv6 addr is still not supported yet. > > Signed-off-by: Guangguan Wang <guangguan.wang@linux.alibaba.com> > Reviewed-by: Wen Gu <guwen@linux.alibaba.com> > Reviewed-by: Dust Li <dust.li@linux.alibaba.com> > Reviewed-by: D. Wythe <alibuda@linux.alibaba.com> > Reviewed-by: Wenjia Zhang <wenjia@linux.ibm.com> > Reviewed-by: Halil Pasic <pasic@linux.ibm.com> Sorry for the late remark, but does this need a Fixes tag? I mean my gut feeling is that this is a bugfix -- i.e. should have been working from the get go -- and not a mere enhancement. No strong opinions here. Halil
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index 9d76e902fd77..c3f9c0457418 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -1116,7 +1116,10 @@ static int smc_find_proposal_devices(struct smc_sock *smc, ini->check_smcrv2 = true; ini->smcrv2.saddr = smc->clcsock->sk->sk_rcv_saddr; if (!(ini->smcr_version & SMC_V2) || - smc->clcsock->sk->sk_family != AF_INET || +#if IS_ENABLED(CONFIG_IPV6) + (smc->clcsock->sk->sk_family == AF_INET6 && + !ipv6_addr_v4mapped(&smc->clcsock->sk->sk_v6_rcv_saddr)) || +#endif !smc_clc_ueid_count() || smc_find_rdma_device(smc, ini)) ini->smcr_version &= ~SMC_V2;