Message ID | 20240307095536.29648-2-guwen@linux.alibaba.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/smc: SMC intra-OS shortcut with loopback-ism | expand |
On 07/03/2024 10:55, Wen Gu wrote: > The introduction of Emulated-ISM requires adaptation of SMC-D device > dump. Software implemented non-PCI device (loopback-ism) should be > handled correctly and the CHID reserved for Emulated-ISM should be got > from smcd_ops interface instead of PCI information. > > Signed-off-by: Wen Gu <guwen@linux.alibaba.com> > --- > net/smc/smc_ism.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/net/smc/smc_ism.c b/net/smc/smc_ism.c > index ac88de2a06a0..b6eca4231913 100644 > --- a/net/smc/smc_ism.c > +++ b/net/smc/smc_ism.c > @@ -252,12 +252,11 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, > char smc_pnet[SMC_MAX_PNETID_LEN + 1]; > struct smc_pci_dev smc_pci_dev; > struct nlattr *port_attrs; > + struct device *device; > struct nlattr *attrs; > - struct ism_dev *ism; > int use_cnt = 0; > void *nlh; > > - ism = smcd->priv; > nlh = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, > &smc_gen_nl_family, NLM_F_MULTI, > SMC_NETLINK_GET_DEV_SMCD); > @@ -272,7 +271,15 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, > if (nla_put_u8(skb, SMC_NLA_DEV_IS_CRIT, use_cnt > 0)) > goto errattr; > memset(&smc_pci_dev, 0, sizeof(smc_pci_dev)); > - smc_set_pci_values(to_pci_dev(ism->dev.parent), &smc_pci_dev); > + device = smcd->ops->get_dev(smcd); > + if (device->parent) > + smc_set_pci_values(to_pci_dev(device->parent), &smc_pci_dev); > + if (smc_ism_is_emulated(smcd)) { net/smc/smc_ism.c: In function ‘smc_nl_handle_smcd_dev’: net/smc/smc_ism.c:318:13: error: implicit declaration of function ‘smc_ism_is_emulated’ [-Werror=implicit-function-declaration] 318 | if (smc_ism_is_emulated(smcd)) { | ^~~~~~~~~~~~~~~~~~~ > + smc_pci_dev.pci_pchid = smc_ism_get_chid(smcd); > + if (!device->parent) > + snprintf(smc_pci_dev.pci_id, sizeof(smc_pci_dev.pci_id), > + "%s", dev_name(device)); > + } > if (nla_put_u32(skb, SMC_NLA_DEV_PCI_FID, smc_pci_dev.pci_fid)) > goto errattr; > if (nla_put_u16(skb, SMC_NLA_DEV_PCI_CHID, smc_pci_dev.pci_pchid))
On 2024/3/8 20:27, Jan Karcher wrote: > > > On 07/03/2024 10:55, Wen Gu wrote: >> The introduction of Emulated-ISM requires adaptation of SMC-D device >> dump. Software implemented non-PCI device (loopback-ism) should be >> handled correctly and the CHID reserved for Emulated-ISM should be got >> from smcd_ops interface instead of PCI information. >> >> Signed-off-by: Wen Gu <guwen@linux.alibaba.com> >> --- >> net/smc/smc_ism.c | 13 ++++++++++--- >> 1 file changed, 10 insertions(+), 3 deletions(-) >> >> diff --git a/net/smc/smc_ism.c b/net/smc/smc_ism.c >> index ac88de2a06a0..b6eca4231913 100644 >> --- a/net/smc/smc_ism.c >> +++ b/net/smc/smc_ism.c >> @@ -252,12 +252,11 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, >> char smc_pnet[SMC_MAX_PNETID_LEN + 1]; >> struct smc_pci_dev smc_pci_dev; >> struct nlattr *port_attrs; >> + struct device *device; >> struct nlattr *attrs; >> - struct ism_dev *ism; >> int use_cnt = 0; >> void *nlh; >> - ism = smcd->priv; >> nlh = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, >> &smc_gen_nl_family, NLM_F_MULTI, >> SMC_NETLINK_GET_DEV_SMCD); >> @@ -272,7 +271,15 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, >> if (nla_put_u8(skb, SMC_NLA_DEV_IS_CRIT, use_cnt > 0)) >> goto errattr; >> memset(&smc_pci_dev, 0, sizeof(smc_pci_dev)); >> - smc_set_pci_values(to_pci_dev(ism->dev.parent), &smc_pci_dev); >> + device = smcd->ops->get_dev(smcd); >> + if (device->parent) >> + smc_set_pci_values(to_pci_dev(device->parent), &smc_pci_dev); >> + if (smc_ism_is_emulated(smcd)) { > > net/smc/smc_ism.c: In function ‘smc_nl_handle_smcd_dev’: > net/smc/smc_ism.c:318:13: error: implicit declaration of function ‘smc_ism_is_emulated’ > [-Werror=implicit-function-declaration] > 318 | if (smc_ism_is_emulated(smcd)) { > | ^~~~~~~~~~~~~~~~~~~ > Hi Jan, the function smc_ism_is_emulated() is introduced by this merged patch: b27696cd8fcc ("net/smc: change the term virtual ISM to Emulated-ISM") Could you please check if your code base has this one? Thanks! >> + smc_pci_dev.pci_pchid = smc_ism_get_chid(smcd); >> + if (!device->parent) >> + snprintf(smc_pci_dev.pci_id, sizeof(smc_pci_dev.pci_id), >> + "%s", dev_name(device)); >> + } >> if (nla_put_u32(skb, SMC_NLA_DEV_PCI_FID, smc_pci_dev.pci_fid)) >> goto errattr; >> if (nla_put_u16(skb, SMC_NLA_DEV_PCI_CHID, smc_pci_dev.pci_pchid))
diff --git a/net/smc/smc_ism.c b/net/smc/smc_ism.c index ac88de2a06a0..b6eca4231913 100644 --- a/net/smc/smc_ism.c +++ b/net/smc/smc_ism.c @@ -252,12 +252,11 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, char smc_pnet[SMC_MAX_PNETID_LEN + 1]; struct smc_pci_dev smc_pci_dev; struct nlattr *port_attrs; + struct device *device; struct nlattr *attrs; - struct ism_dev *ism; int use_cnt = 0; void *nlh; - ism = smcd->priv; nlh = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, &smc_gen_nl_family, NLM_F_MULTI, SMC_NETLINK_GET_DEV_SMCD); @@ -272,7 +271,15 @@ static int smc_nl_handle_smcd_dev(struct smcd_dev *smcd, if (nla_put_u8(skb, SMC_NLA_DEV_IS_CRIT, use_cnt > 0)) goto errattr; memset(&smc_pci_dev, 0, sizeof(smc_pci_dev)); - smc_set_pci_values(to_pci_dev(ism->dev.parent), &smc_pci_dev); + device = smcd->ops->get_dev(smcd); + if (device->parent) + smc_set_pci_values(to_pci_dev(device->parent), &smc_pci_dev); + if (smc_ism_is_emulated(smcd)) { + smc_pci_dev.pci_pchid = smc_ism_get_chid(smcd); + if (!device->parent) + snprintf(smc_pci_dev.pci_id, sizeof(smc_pci_dev.pci_id), + "%s", dev_name(device)); + } if (nla_put_u32(skb, SMC_NLA_DEV_PCI_FID, smc_pci_dev.pci_fid)) goto errattr; if (nla_put_u16(skb, SMC_NLA_DEV_PCI_CHID, smc_pci_dev.pci_pchid))
The introduction of Emulated-ISM requires adaptation of SMC-D device dump. Software implemented non-PCI device (loopback-ism) should be handled correctly and the CHID reserved for Emulated-ISM should be got from smcd_ops interface instead of PCI information. Signed-off-by: Wen Gu <guwen@linux.alibaba.com> --- net/smc/smc_ism.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)