[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a84414e8-bb69-4f63-84f6-80df89e3917a@linux.alibaba.com>
Date: Tue, 7 Jan 2025 10:17:57 +0800
From: Wen Gu <guwen@...ux.alibaba.com>
To: Guangguan Wang <guangguan.wang@...ux.alibaba.com>, wenjia@...ux.ibm.com,
jaka@...ux.ibm.com, PASIC@...ibm.com, alibuda@...ux.alibaba.com,
tonylu@...ux.alibaba.com, davem@...emloft.net, edumazet@...gle.com,
kuba@...nel.org, pabeni@...hat.com, horms@...nel.org
Cc: linux-rdma@...r.kernel.org, linux-s390@...r.kernel.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] net/smc: use the correct ndev to find pnetid by
pnetid table
On 2024/12/27 12:04, Guangguan Wang wrote:
> The command 'smc_pnet -a -I <ethx> <pnetid>' will add <pnetid>
> to the pnetid table and will attach the <pnetid> to net device
> whose name is <ethx>. But When do SMCR by <ethx>, in function
> smc_pnet_find_roce_by_pnetid, it will use <ethx>'s base ndev's
> pnetid to match rdma device, not <ethx>'s pnetid. The asymmetric
> use of the pnetid seems weird. Sometimes it is difficult to know
> the hierarchy of net device what may make it difficult to configure
> the pnetid and to use the pnetid. Looking into the history of
> commit, it was the commit 890a2cb4a966 ("net/smc: rework pnet table")
> that changes the ndev from the <ethx> to the <ethx>'s base ndev
> when finding pnetid by pnetid table. It seems a mistake.
>
> This patch changes the ndev back to the <ethx> when finding pnetid
> by pnetid table.
>
> Fixes: 890a2cb4a966 ("net/smc: rework pnet table")
> Signed-off-by: Guangguan Wang <guangguan.wang@...ux.alibaba.com>
It makes sense to me, thanks!
Reviewed-by: Wen Gu <guwen@...ux.alibaba.com>
> ---
> net/smc/smc_pnet.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/net/smc/smc_pnet.c b/net/smc/smc_pnet.c
> index 716808f374a8..cc098780970b 100644
> --- a/net/smc/smc_pnet.c
> +++ b/net/smc/smc_pnet.c
> @@ -1079,14 +1079,15 @@ static void smc_pnet_find_roce_by_pnetid(struct net_device *ndev,
> struct smc_init_info *ini)
> {
> u8 ndev_pnetid[SMC_MAX_PNETID_LEN];
> + struct net_device *base_ndev;
> struct net *net;
>
> - ndev = pnet_find_base_ndev(ndev);
> + base_ndev = pnet_find_base_ndev(ndev);
> net = dev_net(ndev);
> - if (smc_pnetid_by_dev_port(ndev->dev.parent, ndev->dev_port,
> + if (smc_pnetid_by_dev_port(base_ndev->dev.parent, base_ndev->dev_port,
> ndev_pnetid) &&
> smc_pnet_find_ndev_pnetid_by_table(ndev, ndev_pnetid)) {
> - smc_pnet_find_rdma_dev(ndev, ini);
> + smc_pnet_find_rdma_dev(base_ndev, ini);
> return; /* pnetid could not be determined */
> }
> _smc_pnet_find_roce_by_pnetid(ndev_pnetid, ini, NULL, net);
Powered by blists - more mailing lists