diff mbox series

[PATH,for-next] RDMA/siw: Fix setting active_{speed, width} attributes

Message ID 20200213130701.11589-1-kamalheib1@gmail.com (mailing list archive)
State Superseded
Headers show
Series [PATH,for-next] RDMA/siw: Fix setting active_{speed, width} attributes | expand

Commit Message

Kamal Heib Feb. 13, 2020, 1:07 p.m. UTC
Make sure to set the active_{speed, width} attributes to avoid reporting
the same values regardless of the underlying device.

Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Bernard Metzler Feb. 13, 2020, 1:59 p.m. UTC | #1
-----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----

>To: linux-rdma@vger.kernel.org
>From: "Kamal Heib" <kamalheib1@gmail.com>
>Date: 02/13/2020 02:07PM
>Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>, "Kamal
>Heib" <kamalheib1@gmail.com>
>Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
>active_{speed, width} attributes
>
>Make sure to set the active_{speed, width} attributes to avoid
>reporting
>the same values regardless of the underlying device.
>
>Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
>Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>---
> drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
>b/drivers/infiniband/sw/siw/siw_verbs.c
>index 73485d0da907..b1aaec912edb 100644
>--- a/drivers/infiniband/sw/siw/siw_verbs.c
>+++ b/drivers/infiniband/sw/siw/siw_verbs.c
>@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device *base_dev,
>u8 port,
> 		   struct ib_port_attr *attr)
> {
> 	struct siw_device *sdev = to_siw_dev(base_dev);
>+	int rc;
> 
> 	memset(attr, 0, sizeof(*attr));
> 
>-	attr->active_speed = 2;
>-	attr->active_width = 2;
>+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
>+			 &attr->active_width);
> 	attr->gid_tbl_len = 1;
> 	attr->max_msg_sz = -1;
> 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
>@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device *base_dev, u8
>port,
> 	 * attr->subnet_timeout = 0;
> 	 * attr->init_type_repy = 0;
> 	 */
>-	return 0;
>+	return rc;
> }
> 
> int siw_get_port_immutable(struct ib_device *base_dev, u8 port,
>-- 
>2.21.1
>
>
Hi Kamal, 
Many thanks for looking after this! So there definitely seem to 
be applications which are taking care of those values. So, good
to get my obvious laziness fixed.

I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4 driver).
Works in principle, but reported numbers are off. I am not saying
I would get right numbers when using Chelsio HW iWarp (iw_cxgb4),
but it's closer to reality (using ibv_devinfo <ibname> -vv)

iw_cxgb4 driver:
...
   active_width:           4X (2)
   active_speed:           25.0 Gbps (32)

siw driver with your patch:
...
   active_width:           4X (2)
   active_speed:           10.0 Gbps (8)

Any idea how we can improve that, maybe coming even
close to reality (40Gbs)?

Another remark: It has been siw folklore to name
integer return values 'rv', and not 'rc'. I never
liked 'return code'. It's a value in principle,
sometimes it's interpreted as a code though, as in
your case.

Many thanks!
Bernard.
Kamal Heib Feb. 16, 2020, 1:42 p.m. UTC | #2
On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler wrote:
> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> 
> >To: linux-rdma@vger.kernel.org
> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >Date: 02/13/2020 02:07PM
> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
> ><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>, "Kamal
> >Heib" <kamalheib1@gmail.com>
> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
> >active_{speed, width} attributes
> >
> >Make sure to set the active_{speed, width} attributes to avoid
> >reporting
> >the same values regardless of the underlying device.
> >
> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> >---
> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
> > 1 file changed, 4 insertions(+), 3 deletions(-)
> >
> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
> >b/drivers/infiniband/sw/siw/siw_verbs.c
> >index 73485d0da907..b1aaec912edb 100644
> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device *base_dev,
> >u8 port,
> > 		   struct ib_port_attr *attr)
> > {
> > 	struct siw_device *sdev = to_siw_dev(base_dev);
> >+	int rc;
> > 
> > 	memset(attr, 0, sizeof(*attr));
> > 
> >-	attr->active_speed = 2;
> >-	attr->active_width = 2;
> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
> >+			 &attr->active_width);
> > 	attr->gid_tbl_len = 1;
> > 	attr->max_msg_sz = -1;
> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device *base_dev, u8
> >port,
> > 	 * attr->subnet_timeout = 0;
> > 	 * attr->init_type_repy = 0;
> > 	 */
> >-	return 0;
> >+	return rc;
> > }
> > 
> > int siw_get_port_immutable(struct ib_device *base_dev, u8 port,
> >-- 
> >2.21.1
> >
> >
> Hi Kamal, 

Hi Bernard,

> Many thanks for looking after this! So there definitely seem to 
> be applications which are taking care of those values. So, good
> to get my obvious laziness fixed.
> 

Sure :)

> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4 driver).
> Works in principle, but reported numbers are off. I am not saying
> I would get right numbers when using Chelsio HW iWarp (iw_cxgb4),
> but it's closer to reality (using ibv_devinfo <ibname> -vv)
> 
> iw_cxgb4 driver:
> ...
>    active_width:           4X (2)
>    active_speed:           25.0 Gbps (32)
> 
> siw driver with your patch:
> ...
>    active_width:           4X (2)
>    active_speed:           10.0 Gbps (8)
> 
> Any idea how we can improve that, maybe coming even
> close to reality (40Gbs)?

Could you please share the output of ethtool <if_name> for the underlying
net device that used for both iw_cxgb4 and siw?

> 
> Another remark: It has been siw folklore to name
> integer return values 'rv', and not 'rc'. I never
> liked 'return code'. It's a value in principle,
> sometimes it's interpreted as a code though, as in
> your case.

Sure, I'll fix it in v2.

> 
> Many thanks!
> Bernard.
>

Thanks,
Kamal
Bernard Metzler Feb. 17, 2020, 10:13 a.m. UTC | #3
-----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----

>To: "Bernard Metzler" <BMT@zurich.ibm.com>
>From: "Kamal Heib" <kamalheib1@gmail.com>
>Date: 02/16/2020 02:43PM
>Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
>"Doug Ledford" <dledford@redhat.com>
>Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>active_{speed, width} attributes
>
>On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler wrote:
>> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> 
>> >To: linux-rdma@vger.kernel.org
>> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >Date: 02/13/2020 02:07PM
>> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
>> ><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>,
>"Kamal
>> >Heib" <kamalheib1@gmail.com>
>> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
>> >active_{speed, width} attributes
>> >
>> >Make sure to set the active_{speed, width} attributes to avoid
>> >reporting
>> >the same values regardless of the underlying device.
>> >
>> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
>> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>> >---
>> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
>> > 1 file changed, 4 insertions(+), 3 deletions(-)
>> >
>> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
>> >b/drivers/infiniband/sw/siw/siw_verbs.c
>> >index 73485d0da907..b1aaec912edb 100644
>> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
>> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
>> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device
>*base_dev,
>> >u8 port,
>> > 		   struct ib_port_attr *attr)
>> > {
>> > 	struct siw_device *sdev = to_siw_dev(base_dev);
>> >+	int rc;
>> > 
>> > 	memset(attr, 0, sizeof(*attr));
>> > 
>> >-	attr->active_speed = 2;
>> >-	attr->active_width = 2;
>> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
>> >+			 &attr->active_width);
>> > 	attr->gid_tbl_len = 1;
>> > 	attr->max_msg_sz = -1;
>> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
>> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device *base_dev,
>u8
>> >port,
>> > 	 * attr->subnet_timeout = 0;
>> > 	 * attr->init_type_repy = 0;
>> > 	 */
>> >-	return 0;
>> >+	return rc;
>> > }
>> > 
>> > int siw_get_port_immutable(struct ib_device *base_dev, u8 port,
>> >-- 
>> >2.21.1
>> >
>> >
>> Hi Kamal, 
>
>Hi Bernard,
>
>> Many thanks for looking after this! So there definitely seem to 
>> be applications which are taking care of those values. So, good
>> to get my obvious laziness fixed.
>> 
>
>Sure :)
>
>> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4 driver).
>> Works in principle, but reported numbers are off. I am not saying
>> I would get right numbers when using Chelsio HW iWarp (iw_cxgb4),
>> but it's closer to reality (using ibv_devinfo <ibname> -vv)
>> 
>> iw_cxgb4 driver:
>> ...
>>    active_width:           4X (2)
>>    active_speed:           25.0 Gbps (32)
>> 
>> siw driver with your patch:
>> ...
>>    active_width:           4X (2)
>>    active_speed:           10.0 Gbps (8)
>> 
>> Any idea how we can improve that, maybe coming even
>> close to reality (40Gbs)?
>
>Could you please share the output of ethtool <if_name> for the
>underlying
>net device that used for both iw_cxgb4 and siw?
>
H Kamal,

Sure! Speed looks correct, and its also what I get
at maximum:

[bmt@spoke ~]$ ethtool enp1s0f4 
Settings for enp1s0f4:
        Supported ports: [ FIBRE ]
        Supported link modes:   40000baseSR4/Full 
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: None
        Advertised link modes:  40000baseSR4/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: None
        Link partner advertised link modes:  40000baseSR4/Full 
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: None
        Speed: 40000Mb/s
        Duplex: Full
        Port: Direct Attach Copper
        PHYAD: 255
        Transceiver: internal
        Auto-negotiation: on
Cannot get wake-on-lan settings: Operation not permitted
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes
Kamal Heib Feb. 17, 2020, 2:11 p.m. UTC | #4
On Mon, Feb 17, 2020 at 10:13:21AM +0000, Bernard Metzler wrote:
> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> 
> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >Date: 02/16/2020 02:43PM
> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
> >"Doug Ledford" <dledford@redhat.com>
> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
> >active_{speed, width} attributes
> >
> >On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler wrote:
> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> >> 
> >> >To: linux-rdma@vger.kernel.org
> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >> >Date: 02/13/2020 02:07PM
> >> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
> >> ><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>,
> >"Kamal
> >> >Heib" <kamalheib1@gmail.com>
> >> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
> >> >active_{speed, width} attributes
> >> >
> >> >Make sure to set the active_{speed, width} attributes to avoid
> >> >reporting
> >> >the same values regardless of the underlying device.
> >> >
> >> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
> >> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> >> >---
> >> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
> >> > 1 file changed, 4 insertions(+), 3 deletions(-)
> >> >
> >> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
> >> >b/drivers/infiniband/sw/siw/siw_verbs.c
> >> >index 73485d0da907..b1aaec912edb 100644
> >> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
> >> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
> >> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device
> >*base_dev,
> >> >u8 port,
> >> > 		   struct ib_port_attr *attr)
> >> > {
> >> > 	struct siw_device *sdev = to_siw_dev(base_dev);
> >> >+	int rc;
> >> > 
> >> > 	memset(attr, 0, sizeof(*attr));
> >> > 
> >> >-	attr->active_speed = 2;
> >> >-	attr->active_width = 2;
> >> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
> >> >+			 &attr->active_width);
> >> > 	attr->gid_tbl_len = 1;
> >> > 	attr->max_msg_sz = -1;
> >> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
> >> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device *base_dev,
> >u8
> >> >port,
> >> > 	 * attr->subnet_timeout = 0;
> >> > 	 * attr->init_type_repy = 0;
> >> > 	 */
> >> >-	return 0;
> >> >+	return rc;
> >> > }
> >> > 
> >> > int siw_get_port_immutable(struct ib_device *base_dev, u8 port,
> >> >-- 
> >> >2.21.1
> >> >
> >> >
> >> Hi Kamal, 
> >
> >Hi Bernard,
> >
> >> Many thanks for looking after this! So there definitely seem to 
> >> be applications which are taking care of those values. So, good
> >> to get my obvious laziness fixed.
> >> 
> >
> >Sure :)
> >
> >> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4 driver).
> >> Works in principle, but reported numbers are off. I am not saying
> >> I would get right numbers when using Chelsio HW iWarp (iw_cxgb4),
> >> but it's closer to reality (using ibv_devinfo <ibname> -vv)
> >> 
> >> iw_cxgb4 driver:
> >> ...
> >>    active_width:           4X (2)
> >>    active_speed:           25.0 Gbps (32)
> >> 
> >> siw driver with your patch:
> >> ...
> >>    active_width:           4X (2)
> >>    active_speed:           10.0 Gbps (8)
> >> 
> >> Any idea how we can improve that, maybe coming even
> >> close to reality (40Gbs)?
> >
> >Could you please share the output of ethtool <if_name> for the
> >underlying
> >net device that used for both iw_cxgb4 and siw?
> >
> H Kamal,
> 
> Sure! Speed looks correct, and its also what I get
> at maximum:
> 
> [bmt@spoke ~]$ ethtool enp1s0f4 
> Settings for enp1s0f4:
>         Supported ports: [ FIBRE ]
>         Supported link modes:   40000baseSR4/Full 
>         Supported pause frame use: Symmetric
>         Supports auto-negotiation: Yes
>         Supported FEC modes: None
>         Advertised link modes:  40000baseSR4/Full 
>         Advertised pause frame use: Symmetric
>         Advertised auto-negotiation: Yes
>         Advertised FEC modes: None
>         Link partner advertised link modes:  40000baseSR4/Full 
>         Link partner advertised pause frame use: Symmetric
>         Link partner advertised auto-negotiation: Yes
>         Link partner advertised FEC modes: None
>         Speed: 40000Mb/s
>         Duplex: Full
>         Port: Direct Attach Copper
>         PHYAD: 255
>         Transceiver: internal
>         Auto-negotiation: on
> Cannot get wake-on-lan settings: Operation not permitted
>         Current message level: 0x000000ff (255)
>                                drv probe link timer ifdown ifup rx_err tx_err
>         Link detected: yes
>

Hi Bernard,

Well, this is the expected value for 40GbE, Because the reported value
is 4X aggregation of FDR10. For more info please the table of speeds
under [1].

[1] - https://en.wikipedia.org/wiki/InfiniBand

Thanks,
Kamal
Bernard Metzler Feb. 17, 2020, 2:27 p.m. UTC | #5
-----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----

>To: "Bernard Metzler" <BMT@zurich.ibm.com>
>From: "Kamal Heib" <kamalheib1@gmail.com>
>Date: 02/17/2020 03:12PM
>Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
>"Doug Ledford" <dledford@redhat.com>
>Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>active_{speed, width} attributes
>
>On Mon, Feb 17, 2020 at 10:13:21AM +0000, Bernard Metzler wrote:
>> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> 
>> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
>> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >Date: 02/16/2020 02:43PM
>> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
>> >"Doug Ledford" <dledford@redhat.com>
>> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>> >active_{speed, width} attributes
>> >
>> >On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler wrote:
>> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> >> 
>> >> >To: linux-rdma@vger.kernel.org
>> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >> >Date: 02/13/2020 02:07PM
>> >> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
>> >> ><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>,
>> >"Kamal
>> >> >Heib" <kamalheib1@gmail.com>
>> >> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
>> >> >active_{speed, width} attributes
>> >> >
>> >> >Make sure to set the active_{speed, width} attributes to avoid
>> >> >reporting
>> >> >the same values regardless of the underlying device.
>> >> >
>> >> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
>> >> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>> >> >---
>> >> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
>> >> > 1 file changed, 4 insertions(+), 3 deletions(-)
>> >> >
>> >> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >b/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >index 73485d0da907..b1aaec912edb 100644
>> >> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device
>> >*base_dev,
>> >> >u8 port,
>> >> > 		   struct ib_port_attr *attr)
>> >> > {
>> >> > 	struct siw_device *sdev = to_siw_dev(base_dev);
>> >> >+	int rc;
>> >> > 
>> >> > 	memset(attr, 0, sizeof(*attr));
>> >> > 
>> >> >-	attr->active_speed = 2;
>> >> >-	attr->active_width = 2;
>> >> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
>> >> >+			 &attr->active_width);
>> >> > 	attr->gid_tbl_len = 1;
>> >> > 	attr->max_msg_sz = -1;
>> >> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
>> >> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device
>*base_dev,
>> >u8
>> >> >port,
>> >> > 	 * attr->subnet_timeout = 0;
>> >> > 	 * attr->init_type_repy = 0;
>> >> > 	 */
>> >> >-	return 0;
>> >> >+	return rc;
>> >> > }
>> >> > 
>> >> > int siw_get_port_immutable(struct ib_device *base_dev, u8
>port,
>> >> >-- 
>> >> >2.21.1
>> >> >
>> >> >
>> >> Hi Kamal, 
>> >
>> >Hi Bernard,
>> >
>> >> Many thanks for looking after this! So there definitely seem to 
>> >> be applications which are taking care of those values. So, good
>> >> to get my obvious laziness fixed.
>> >> 
>> >
>> >Sure :)
>> >
>> >> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4
>driver).
>> >> Works in principle, but reported numbers are off. I am not
>saying
>> >> I would get right numbers when using Chelsio HW iWarp
>(iw_cxgb4),
>> >> but it's closer to reality (using ibv_devinfo <ibname> -vv)
>> >> 
>> >> iw_cxgb4 driver:
>> >> ...
>> >>    active_width:           4X (2)
>> >>    active_speed:           25.0 Gbps (32)
>> >> 
>> >> siw driver with your patch:
>> >> ...
>> >>    active_width:           4X (2)
>> >>    active_speed:           10.0 Gbps (8)
>> >> 
>> >> Any idea how we can improve that, maybe coming even
>> >> close to reality (40Gbs)?
>> >
>> >Could you please share the output of ethtool <if_name> for the
>> >underlying
>> >net device that used for both iw_cxgb4 and siw?
>> >
>> H Kamal,
>> 
>> Sure! Speed looks correct, and its also what I get
>> at maximum:
>> 
>> [bmt@spoke ~]$ ethtool enp1s0f4 
>> Settings for enp1s0f4:
>>         Supported ports: [ FIBRE ]
>>         Supported link modes:   40000baseSR4/Full 
>>         Supported pause frame use: Symmetric
>>         Supports auto-negotiation: Yes
>>         Supported FEC modes: None
>>         Advertised link modes:  40000baseSR4/Full 
>>         Advertised pause frame use: Symmetric
>>         Advertised auto-negotiation: Yes
>>         Advertised FEC modes: None
>>         Link partner advertised link modes:  40000baseSR4/Full 
>>         Link partner advertised pause frame use: Symmetric
>>         Link partner advertised auto-negotiation: Yes
>>         Link partner advertised FEC modes: None
>>         Speed: 40000Mb/s
>>         Duplex: Full
>>         Port: Direct Attach Copper
>>         PHYAD: 255
>>         Transceiver: internal
>>         Auto-negotiation: on
>> Cannot get wake-on-lan settings: Operation not permitted
>>         Current message level: 0x000000ff (255)
>>                                drv probe link timer ifdown ifup
>rx_err tx_err
>>         Link detected: yes
>>
>
>Hi Bernard,
>
>Well, this is the expected value for 40GbE, Because the reported
>value
>is 4X aggregation of FDR10. For more info please the table of speeds
>under [1].
>
>[1] -
>https://urldefense.proofpoint.com/v2/url?u=https-3A__en.wikipedia.org
>_wiki_InfiniBand&d=DwIBAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T-r8ZO1PP
>1alNwU_QJcRRLfmYTAgd3QCvqSc&m=Ay2tYZ7Z-SHKRw8UZDCk76kwlZzvkXhRMrO_0jk
>YjcY&s=D4Z0CAH5UVO95WHNnUozLzrqjxRQgVe-2lc8_jwVlhw&e= 
>
>Thanks,
>Kamal
>
Hi Kamal, so I have to do the math! 4 x 10Gbs = 40Gbs.
So it is all correct as reported by ibv_devinfio
(and somehow strange what the iw_cxgb4 makes out of it).

Many thanks for the info,
Bernard.
Potnuri Bharat Teja Feb. 17, 2020, 2:50 p.m. UTC | #6
On Monday, February 02/17/20, 2020 at 19:57:54 +0530, Bernard Metzler wrote:
> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> 
> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >Date: 02/17/2020 03:12PM
> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
> >"Doug Ledford" <dledford@redhat.com>
> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
> >active_{speed, width} attributes
> >
> >On Mon, Feb 17, 2020 at 10:13:21AM +0000, Bernard Metzler wrote:
> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> >> 
> >> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >> >Date: 02/16/2020 02:43PM
> >> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
> >> >"Doug Ledford" <dledford@redhat.com>
> >> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
> >> >active_{speed, width} attributes
> >> >
> >> >On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler wrote:
> >> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
> >> >> 
> >> >> >To: linux-rdma@vger.kernel.org
> >> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
> >> >> >Date: 02/13/2020 02:07PM
> >> >> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
> >> >> ><dledford@redhat.com>, "Bernard Metzler" <bmt@zurich.ibm.com>,
> >> >"Kamal
> >> >> >Heib" <kamalheib1@gmail.com>
> >> >> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
> >> >> >active_{speed, width} attributes
> >> >> >
> >> >> >Make sure to set the active_{speed, width} attributes to avoid
> >> >> >reporting
> >> >> >the same values regardless of the underlying device.
> >> >> >
> >> >> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
> >> >> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> >> >> >---
> >> >> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
> >> >> > 1 file changed, 4 insertions(+), 3 deletions(-)
> >> >> >
> >> >> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
> >> >> >b/drivers/infiniband/sw/siw/siw_verbs.c
> >> >> >index 73485d0da907..b1aaec912edb 100644
> >> >> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
> >> >> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
> >> >> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device
> >> >*base_dev,
> >> >> >u8 port,
> >> >> > 		   struct ib_port_attr *attr)
> >> >> > {
> >> >> > 	struct siw_device *sdev = to_siw_dev(base_dev);
> >> >> >+	int rc;
> >> >> > 
> >> >> > 	memset(attr, 0, sizeof(*attr));
> >> >> > 
> >> >> >-	attr->active_speed = 2;
> >> >> >-	attr->active_width = 2;
> >> >> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
> >> >> >+			 &attr->active_width);
> >> >> > 	attr->gid_tbl_len = 1;
> >> >> > 	attr->max_msg_sz = -1;
> >> >> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
> >> >> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device
> >*base_dev,
> >> >u8
> >> >> >port,
> >> >> > 	 * attr->subnet_timeout = 0;
> >> >> > 	 * attr->init_type_repy = 0;
> >> >> > 	 */
> >> >> >-	return 0;
> >> >> >+	return rc;
> >> >> > }
> >> >> > 
> >> >> > int siw_get_port_immutable(struct ib_device *base_dev, u8
> >port,
> >> >> >-- 
> >> >> >2.21.1
> >> >> >
> >> >> >
> >> >> Hi Kamal, 
> >> >
> >> >Hi Bernard,
> >> >
> >> >> Many thanks for looking after this! So there definitely seem to 
> >> >> be applications which are taking care of those values. So, good
> >> >> to get my obvious laziness fixed.
> >> >> 
> >> >
> >> >Sure :)
> >> >
> >> >> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4
> >driver).
> >> >> Works in principle, but reported numbers are off. I am not
> >saying
> >> >> I would get right numbers when using Chelsio HW iWarp
> >(iw_cxgb4),
> >> >> but it's closer to reality (using ibv_devinfo <ibname> -vv)
> >> >> 
> >> >> iw_cxgb4 driver:
> >> >> ...
> >> >>    active_width:           4X (2)
> >> >>    active_speed:           25.0 Gbps (32)
> >> >> 
> >> >> siw driver with your patch:
> >> >> ...
> >> >>    active_width:           4X (2)
> >> >>    active_speed:           10.0 Gbps (8)
> >> >> 
> >> >> Any idea how we can improve that, maybe coming even
> >> >> close to reality (40Gbs)?
> >> >
> >> >Could you please share the output of ethtool <if_name> for the
> >> >underlying
> >> >net device that used for both iw_cxgb4 and siw?
> >> >
> >> H Kamal,
> >> 
> >> Sure! Speed looks correct, and its also what I get
> >> at maximum:
> >> 
> >> [bmt@spoke ~]$ ethtool enp1s0f4 
> >> Settings for enp1s0f4:
> >>         Supported ports: [ FIBRE ]
> >>         Supported link modes:   40000baseSR4/Full 
> >>         Supported pause frame use: Symmetric
> >>         Supports auto-negotiation: Yes
> >>         Supported FEC modes: None
> >>         Advertised link modes:  40000baseSR4/Full 
> >>         Advertised pause frame use: Symmetric
> >>         Advertised auto-negotiation: Yes
> >>         Advertised FEC modes: None
> >>         Link partner advertised link modes:  40000baseSR4/Full 
> >>         Link partner advertised pause frame use: Symmetric
> >>         Link partner advertised auto-negotiation: Yes
> >>         Link partner advertised FEC modes: None
> >>         Speed: 40000Mb/s
> >>         Duplex: Full
> >>         Port: Direct Attach Copper
> >>         PHYAD: 255
> >>         Transceiver: internal
> >>         Auto-negotiation: on
> >> Cannot get wake-on-lan settings: Operation not permitted
> >>         Current message level: 0x000000ff (255)
> >>                                drv probe link timer ifdown ifup
> >rx_err tx_err
> >>         Link detected: yes
> >>
> >
> >Hi Bernard,
> >
> >Well, this is the expected value for 40GbE, Because the reported
> >value
> >is 4X aggregation of FDR10. For more info please the table of speeds
> >under [1].
> >
> >[1] -
> >https://urldefense.proofpoint.com/v2/url?u=https-3A__en.wikipedia.org
> >_wiki_InfiniBand&d=DwIBAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T-r8ZO1PP
> >1alNwU_QJcRRLfmYTAgd3QCvqSc&m=Ay2tYZ7Z-SHKRw8UZDCk76kwlZzvkXhRMrO_0jk
> >YjcY&s=D4Z0CAH5UVO95WHNnUozLzrqjxRQgVe-2lc8_jwVlhw&e= 
> >
> >Thanks,
> >Kamal
> >
> Hi Kamal, so I have to do the math! 4 x 10Gbs = 40Gbs.
> So it is all correct as reported by ibv_devinfio
> (and somehow strange what the iw_cxgb4 makes out of it).
Hi Bernard,
Are you running siw and iw_cxgb4 on the same port or different ports?
if not same, Is the port running iw_cxgb4 connected with 100G cable?
If 40G cable is conencted to iw_cxgb4 as well then its reporting wrong.

Thanks.

> 
> Many thanks for the info,
> Bernard.
>
Bernard Metzler Feb. 17, 2020, 3:18 p.m. UTC | #7
-----"Potnuri Bharat Teja" <bharat@chelsio.com> wrote: -----

>To: "Bernard Metzler" <BMT@zurich.ibm.com>
>From: "Potnuri Bharat Teja" <bharat@chelsio.com>
>Date: 02/17/2020 03:51PM
>Cc: "Kamal Heib" <kamalheib1@gmail.com>, "linux-rdma@vger.kernel.org"
><linux-rdma@vger.kernel.org>, "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug
>Ledford" <dledford@redhat.com>
>Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>active_{speed, width} attributes
>
>On Monday, February 02/17/20, 2020 at 19:57:54 +0530, Bernard Metzler
>wrote:
>> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> 
>> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
>> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >Date: 02/17/2020 03:12PM
>> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
>> >"Doug Ledford" <dledford@redhat.com>
>> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>> >active_{speed, width} attributes
>> >
>> >On Mon, Feb 17, 2020 at 10:13:21AM +0000, Bernard Metzler wrote:
>> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> >> 
>> >> >To: "Bernard Metzler" <BMT@zurich.ibm.com>
>> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >> >Date: 02/16/2020 02:43PM
>> >> >Cc: linux-rdma@vger.kernel.org, "Jason Gunthorpe"
><jgg@ziepe.ca>,
>> >> >"Doug Ledford" <dledford@redhat.com>
>> >> >Subject: [EXTERNAL] Re: [PATH for-next] RDMA/siw: Fix setting
>> >> >active_{speed, width} attributes
>> >> >
>> >> >On Thu, Feb 13, 2020 at 01:59:30PM +0000, Bernard Metzler
>wrote:
>> >> >> -----"Kamal Heib" <kamalheib1@gmail.com> wrote: -----
>> >> >> 
>> >> >> >To: linux-rdma@vger.kernel.org
>> >> >> >From: "Kamal Heib" <kamalheib1@gmail.com>
>> >> >> >Date: 02/13/2020 02:07PM
>> >> >> >Cc: "Jason Gunthorpe" <jgg@ziepe.ca>, "Doug Ledford"
>> >> >> ><dledford@redhat.com>, "Bernard Metzler"
><bmt@zurich.ibm.com>,
>> >> >"Kamal
>> >> >> >Heib" <kamalheib1@gmail.com>
>> >> >> >Subject: [EXTERNAL] [PATH for-next] RDMA/siw: Fix setting
>> >> >> >active_{speed, width} attributes
>> >> >> >
>> >> >> >Make sure to set the active_{speed, width} attributes to
>avoid
>> >> >> >reporting
>> >> >> >the same values regardless of the underlying device.
>> >> >> >
>> >> >> >Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
>> >> >> >Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>> >> >> >---
>> >> >> > drivers/infiniband/sw/siw/siw_verbs.c | 7 ++++---
>> >> >> > 1 file changed, 4 insertions(+), 3 deletions(-)
>> >> >> >
>> >> >> >diff --git a/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >> >b/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >> >index 73485d0da907..b1aaec912edb 100644
>> >> >> >--- a/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >> >+++ b/drivers/infiniband/sw/siw/siw_verbs.c
>> >> >> >@@ -165,11 +165,12 @@ int siw_query_port(struct ib_device
>> >> >*base_dev,
>> >> >> >u8 port,
>> >> >> > 		   struct ib_port_attr *attr)
>> >> >> > {
>> >> >> > 	struct siw_device *sdev = to_siw_dev(base_dev);
>> >> >> >+	int rc;
>> >> >> > 
>> >> >> > 	memset(attr, 0, sizeof(*attr));
>> >> >> > 
>> >> >> >-	attr->active_speed = 2;
>> >> >> >-	attr->active_width = 2;
>> >> >> >+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
>> >> >> >+			 &attr->active_width);
>> >> >> > 	attr->gid_tbl_len = 1;
>> >> >> > 	attr->max_msg_sz = -1;
>> >> >> > 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
>> >> >> >@@ -192,7 +193,7 @@ int siw_query_port(struct ib_device
>> >*base_dev,
>> >> >u8
>> >> >> >port,
>> >> >> > 	 * attr->subnet_timeout = 0;
>> >> >> > 	 * attr->init_type_repy = 0;
>> >> >> > 	 */
>> >> >> >-	return 0;
>> >> >> >+	return rc;
>> >> >> > }
>> >> >> > 
>> >> >> > int siw_get_port_immutable(struct ib_device *base_dev, u8
>> >port,
>> >> >> >-- 
>> >> >> >2.21.1
>> >> >> >
>> >> >> >
>> >> >> Hi Kamal, 
>> >> >
>> >> >Hi Bernard,
>> >> >
>> >> >> Many thanks for looking after this! So there definitely seem
>to 
>> >> >> be applications which are taking care of those values. So,
>good
>> >> >> to get my obvious laziness fixed.
>> >> >> 
>> >> >
>> >> >Sure :)
>> >> >
>> >> >> I tried your patch on a 40Gbs Ethernet link (Chelsio cxgb4
>> >driver).
>> >> >> Works in principle, but reported numbers are off. I am not
>> >saying
>> >> >> I would get right numbers when using Chelsio HW iWarp
>> >(iw_cxgb4),
>> >> >> but it's closer to reality (using ibv_devinfo <ibname> -vv)
>> >> >> 
>> >> >> iw_cxgb4 driver:
>> >> >> ...
>> >> >>    active_width:           4X (2)
>> >> >>    active_speed:           25.0 Gbps (32)
>> >> >> 
>> >> >> siw driver with your patch:
>> >> >> ...
>> >> >>    active_width:           4X (2)
>> >> >>    active_speed:           10.0 Gbps (8)
>> >> >> 
>> >> >> Any idea how we can improve that, maybe coming even
>> >> >> close to reality (40Gbs)?
>> >> >
>> >> >Could you please share the output of ethtool <if_name> for the
>> >> >underlying
>> >> >net device that used for both iw_cxgb4 and siw?
>> >> >
>> >> H Kamal,
>> >> 
>> >> Sure! Speed looks correct, and its also what I get
>> >> at maximum:
>> >> 
>> >> [bmt@spoke ~]$ ethtool enp1s0f4 
>> >> Settings for enp1s0f4:
>> >>         Supported ports: [ FIBRE ]
>> >>         Supported link modes:   40000baseSR4/Full 
>> >>         Supported pause frame use: Symmetric
>> >>         Supports auto-negotiation: Yes
>> >>         Supported FEC modes: None
>> >>         Advertised link modes:  40000baseSR4/Full 
>> >>         Advertised pause frame use: Symmetric
>> >>         Advertised auto-negotiation: Yes
>> >>         Advertised FEC modes: None
>> >>         Link partner advertised link modes:  40000baseSR4/Full 
>> >>         Link partner advertised pause frame use: Symmetric
>> >>         Link partner advertised auto-negotiation: Yes
>> >>         Link partner advertised FEC modes: None
>> >>         Speed: 40000Mb/s
>> >>         Duplex: Full
>> >>         Port: Direct Attach Copper
>> >>         PHYAD: 255
>> >>         Transceiver: internal
>> >>         Auto-negotiation: on
>> >> Cannot get wake-on-lan settings: Operation not permitted
>> >>         Current message level: 0x000000ff (255)
>> >>                                drv probe link timer ifdown ifup
>> >rx_err tx_err
>> >>         Link detected: yes
>> >>
>> >
>> >Hi Bernard,
>> >
>> >Well, this is the expected value for 40GbE, Because the reported
>> >value
>> >is 4X aggregation of FDR10. For more info please the table of
>speeds
>> >under [1].
>> >
>> >[1] -
>>
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__en.wikipedia.or
>g
>>
>>_wiki_InfiniBand&d=DwIBAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T-r8ZO1P
>P
>>
>>1alNwU_QJcRRLfmYTAgd3QCvqSc&m=Ay2tYZ7Z-SHKRw8UZDCk76kwlZzvkXhRMrO_0j
>k
>> >YjcY&s=D4Z0CAH5UVO95WHNnUozLzrqjxRQgVe-2lc8_jwVlhw&e= 
>> >
>> >Thanks,
>> >Kamal
>> >
>> Hi Kamal, so I have to do the math! 4 x 10Gbs = 40Gbs.
>> So it is all correct as reported by ibv_devinfio
>> (and somehow strange what the iw_cxgb4 makes out of it).
>Hi Bernard,
>Are you running siw and iw_cxgb4 on the same port or different ports?
>if not same, Is the port running iw_cxgb4 connected with 100G cable?
>If 40G cable is conencted to iw_cxgb4 as well then its reporting
>wrong.
>
This is a single port 40Gbs setup. All my fault:
For iw_cxgb4, I looked at the reported values for the second
port, which is not physically connected but reported PORT_DOWN
and 4 x 25Gbs.
The connected port 1 has 4 x 10Gbs for both siw and iw_cxgb4.
Sorry about the confusion!

So its all good.

Thanks
Bernard.
diff mbox series

Patch

diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index 73485d0da907..b1aaec912edb 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -165,11 +165,12 @@  int siw_query_port(struct ib_device *base_dev, u8 port,
 		   struct ib_port_attr *attr)
 {
 	struct siw_device *sdev = to_siw_dev(base_dev);
+	int rc;
 
 	memset(attr, 0, sizeof(*attr));
 
-	attr->active_speed = 2;
-	attr->active_width = 2;
+	rc = ib_get_eth_speed(base_dev, port, &attr->active_speed,
+			 &attr->active_width);
 	attr->gid_tbl_len = 1;
 	attr->max_msg_sz = -1;
 	attr->max_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu);
@@ -192,7 +193,7 @@  int siw_query_port(struct ib_device *base_dev, u8 port,
 	 * attr->subnet_timeout = 0;
 	 * attr->init_type_repy = 0;
 	 */
-	return 0;
+	return rc;
 }
 
 int siw_get_port_immutable(struct ib_device *base_dev, u8 port,