diff mbox series

[rdma-next] RDMA/rxe: Set default vendor ID

Message ID 20200406173501.1466273-1-leon@kernel.org (mailing list archive)
State Mainlined
Commit 0184afd15a141d7ce24c32c0d86a1e3ba6bc0eb3
Delegated to: Jason Gunthorpe
Headers show
Series [rdma-next] RDMA/rxe: Set default vendor ID | expand

Commit Message

Leon Romanovsky April 6, 2020, 5:35 p.m. UTC
From: Zhu Yanjun <yanjunz@mellanox.com>

The RXE driver doesn't set vendor_id and user space applications
see zeros. This causes to pyverbs tests to fail with the following
traceback, because the expectation is to have valid vendor_id.

Traceback (most recent call last):
  File "tests/test_device.py", line 51, in test_query_device
    self.verify_device_attr(attr)
  File "tests/test_device.py", line 77, in verify_device_attr
    assert attr.vendor_id != 0

In order to fix it, we will set vendor_id 0XFFFFFF, according
to the IBTA v1.4 A3.3.1 VENDOR INFORMATION section.

"""
A vendor that produces a generic controller (i.e., one that supports a
standard I/O protocol such as SRP), which does not have vendor specific
device drivers, may use the value of 0xFFFFFF in the VendorID field.
"""

Before:
"
hca_id: rxe0
        transport:                      InfiniBand (0)
        fw_ver:                         0.0.0
        node_guid:                      5054:00ff:feaa:5363
        sys_image_guid:                 5054:00ff:feaa:5363
        vendor_id:                      0x0000
"

After:
"
hca_id: rxe0
        transport:                      InfiniBand (0)
        fw_ver:                         0.0.0
        node_guid:                      5054:00ff:feaa:5363
        sys_image_guid:                 5054:00ff:feaa:5363
        vendor_id:                      0xffffff
"

Fixes: 8700e3e7c485 ("Soft RoCE driver")
Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
---
 drivers/infiniband/sw/rxe/rxe.c       | 1 +
 drivers/infiniband/sw/rxe/rxe_param.h | 3 +++
 2 files changed, 4 insertions(+)

Comments

Jason Gunthorpe April 14, 2020, 7 p.m. UTC | #1
On Mon, Apr 06, 2020 at 08:35:01PM +0300, Leon Romanovsky wrote:
> From: Zhu Yanjun <yanjunz@mellanox.com>
> 
> The RXE driver doesn't set vendor_id and user space applications
> see zeros. This causes to pyverbs tests to fail with the following
> traceback, because the expectation is to have valid vendor_id.
> 
> Traceback (most recent call last):
>   File "tests/test_device.py", line 51, in test_query_device
>     self.verify_device_attr(attr)
>   File "tests/test_device.py", line 77, in verify_device_attr
>     assert attr.vendor_id != 0
> 
> In order to fix it, we will set vendor_id 0XFFFFFF, according
> to the IBTA v1.4 A3.3.1 VENDOR INFORMATION section.
> 
> """
> A vendor that produces a generic controller (i.e., one that supports a
> standard I/O protocol such as SRP), which does not have vendor specific
> device drivers, may use the value of 0xFFFFFF in the VendorID field.
> """
> 
> Before:
> "
> hca_id: rxe0
>         transport:                      InfiniBand (0)
>         fw_ver:                         0.0.0
>         node_guid:                      5054:00ff:feaa:5363
>         sys_image_guid:                 5054:00ff:feaa:5363
>         vendor_id:                      0x0000
> "
> 
> After:
> "
> hca_id: rxe0
>         transport:                      InfiniBand (0)
>         fw_ver:                         0.0.0
>         node_guid:                      5054:00ff:feaa:5363
>         sys_image_guid:                 5054:00ff:feaa:5363
>         vendor_id:                      0xffffff
> "
> 
> Fixes: 8700e3e7c485 ("Soft RoCE driver")
> Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com>
> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
> ---
>  drivers/infiniband/sw/rxe/rxe.c       | 1 +
>  drivers/infiniband/sw/rxe/rxe_param.h | 3 +++
>  2 files changed, 4 insertions(+)

Applied to for-next, thanks

Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
index 4afdd2e20883..5642eefb4ba1 100644
--- a/drivers/infiniband/sw/rxe/rxe.c
+++ b/drivers/infiniband/sw/rxe/rxe.c
@@ -77,6 +77,7 @@  static void rxe_init_device_param(struct rxe_dev *rxe)
 {
 	rxe->max_inline_data			= RXE_MAX_INLINE_DATA;
 
+	rxe->attr.vendor_id			= RXE_VENDOR_ID;
 	rxe->attr.max_mr_size			= RXE_MAX_MR_SIZE;
 	rxe->attr.page_size_cap			= RXE_PAGE_SIZE_CAP;
 	rxe->attr.max_qp			= RXE_MAX_QP;
diff --git a/drivers/infiniband/sw/rxe/rxe_param.h b/drivers/infiniband/sw/rxe/rxe_param.h
index f59616b02477..99e9d8ba9767 100644
--- a/drivers/infiniband/sw/rxe/rxe_param.h
+++ b/drivers/infiniband/sw/rxe/rxe_param.h
@@ -127,6 +127,9 @@  enum rxe_device_param {
 
 	/* Delay before calling arbiter timer */
 	RXE_NSEC_ARB_TIMER_DELAY	= 200,
+
+	/* IBTA v1.4 A3.3.1 VENDOR INFORMATION section */
+	RXE_VENDOR_ID			= 0XFFFFFF,
 };
 
 /* default/initial rxe port parameters */