[PATCH V5 for-next 00/21] Broadcom RoCE Driver (bnxt_re)

Selvin Xavier
2017-02-10T11:19:32Z

This series introduces the RoCE driver for the Broadcom
NetXtreme-E 10/25/40/50G RoCE HCAs.
This driver is dependent on the bnxt_en NIC driver and is
based on the for-4.11 branch in linux-rdma repository.
bnxt_en changes required for this patch series are already
available afore mentioned branch.

These changes are available for your reference in
the bnxt_re_v5 branch of following repository.
https://github.com/Broadcom/linux-rdma-nxt/

Doug,
This patchset addresses review comments from you and Leon.
This series also includes some changes required for the latest FW.
Please consider applying this to linux-rdma tree.

Thanks,
Selvin Xavier

v4->v5:
* Removes rdev ref_count as this is not necessary.
* Adds a check to see if the device is supporting RoCE
* Updating the PF FW communication channel offset as per
the latest FW changes
* Use min_t macro to calculate the number CQ and QP entries
* Adds ib_udata parameter to create_ah verb
* Uses ETH_P_IBOE macro for RoCE ethertype
* Code refactoring based on the review comments from Leon

v3->v4:
* Changes driver folder name to bnxt_re and remove the bnxt_re/bnxt
prefix from the individual files inside the driver folder.
* Changes the file name bnxtre-abi to bnxt_re-abi.h to align with
convention <module_name>-abi.h
* Updates the Makefile and Kconfig file with new format change.

v2->v3:
* Fix 0day build breakage
* Fix cocci, kbuild robot, sparse, smatch and checkpatch warnings
* Changed the filename bnxt_re_uverbs_abi.h to bnxtre-abi.h
* Removed the __packed qualifier from the uverbs structure and adjusted
the structure alignment to 64bits.
* Added retry count to bail out in case of delayed or no response
to FW commands
* Removed the debugfs support from this patch series
* Changed some of the defines as inline functions based on Jason's comment
* Split two functions to get rid of switch within switch construct
* Removed bnxt_re_copy_to_udata as it is just a wrapper for ib_copy_to_udata
* Added maintainers information to MAINTAINERS file

v1-> v2:
* The license text in each file updated to reflect Dual license.
* Makefile and Kconfig changes are pushed to the last patch
* Moved bnxt_re_uverbs_abi.h to include/uapi/rdma folder
* Remove duplicate structure definitions from bnxt_re_hsi.h as
it is available in the corresponding bnxt_en header file (bnxt_hsi.h)
* Removed some unused code reported during code review.
* Fixed few sparse warnings

Selvin Xavier (21):
RDMA/bnxt_re: Add bnxt_re RoCE driver files
RDMA/bnxt_re: Introducing autogenerated Host Software Interface(hsi)
file
RDMA/bnxt_re: register with the NIC driver
RDMA/bnxt_re: Enabling RoCE control path
RDMA/bnxt_re: Adding Notification Queue support
RDMA/bnxt_re: Support for PD, ucontext and mmap verbs
RDMA/bnxt_re: Support for query and modify device verbs
RDMA/bnxt_re: Adding support for port related verbs
RDMA/bnxt_re: Support for GID related verbs
RDMA/bnxt_re: Support for CQ verbs
RDMA/bnxt_re: Support for AH verbs
RDMA/bnxt_re: Support memory registration verbs
RDMA/bnxt_re: Support QP verbs
RDMA/bnxt_re: Support post_send verb
RDMA/bnxt_re: Support post_recv
RDMA/bnxt_re: Support poll_cq verb
RDMA/bnxt_re: Handling dispatching of events to IB stack
RDMA/bnxt_re: Support for DCB
RDMA/bnxt_re: Set uverbs command mask
RDMA/bnxt_re: Add QP event handling
RDMA/bnxt_re: Add bnxt_re driver build support

MAINTAINERS | 11 +
drivers/infiniband/Kconfig | 2 +
drivers/infiniband/hw/Makefile | 1 +
drivers/infiniband/hw/bnxt_re/Kconfig | 9 +
drivers/infiniband/hw/bnxt_re/Makefile | 6 +
drivers/infiniband/hw/bnxt_re/bnxt_re.h | 146 ++
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 3202 ++++++++++++++++++++++++++++
drivers/infiniband/hw/bnxt_re/ib_verbs.h | 197 ++
drivers/infiniband/hw/bnxt_re/main.c | 1315 ++++++++++++
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 2167 +++++++++++++++++++
drivers/infiniband/hw/bnxt_re/qplib_fp.h | 439 ++++
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 694 ++++++
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 231 ++
drivers/infiniband/hw/bnxt_re/qplib_res.c | 825 +++++++
drivers/infiniband/hw/bnxt_re/qplib_res.h | 223 ++
drivers/infiniband/hw/bnxt_re/qplib_sp.c | 838 ++++++++
drivers/infiniband/hw/bnxt_re/qplib_sp.h | 160 ++
drivers/infiniband/hw/bnxt_re/roce_hsi.h | 2821 ++++++++++++++++++++++++
include/uapi/rdma/bnxt_re-abi.h | 89 +
19 files changed, 13376 insertions(+)
create mode 100644 drivers/infiniband/hw/bnxt_re/Kconfig
create mode 100644 drivers/infiniband/hw/bnxt_re/Makefile
create mode 100644 drivers/infiniband/hw/bnxt_re/bnxt_re.h
create mode 100644 drivers/infiniband/hw/bnxt_re/ib_verbs.c
create mode 100644 drivers/infiniband/hw/bnxt_re/ib_verbs.h
create mode 100644 drivers/infiniband/hw/bnxt_re/main.c
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_fp.c
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_fp.h
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_res.c
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_res.h
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_sp.c
create mode 100644 drivers/infiniband/hw/bnxt_re/qplib_sp.h
create mode 100644 drivers/infiniband/hw/bnxt_re/roce_hsi.h
create mode 100644 include/uapi/rdma/bnxt_re-abi.h

--
2.5.5