]> www.infradead.org Git - users/jedix/linux-maple.git/commit
bnxt_en: Add interface to support RDMA driver.
authorMichael Chan <michael.chan@broadcom.com>
Wed, 7 Dec 2016 05:26:21 +0000 (00:26 -0500)
committerDhaval Giani <dhaval.giani@oracle.com>
Fri, 20 Jan 2017 18:10:03 +0000 (13:10 -0500)
commit71c60cece168fd63a0c5412956069d6f7e819155
tree89ce42ee8edbb3a26a7d76379f3caf13d2209f9f
parenta733255bf2409f47844c41b0dda8ba2dba1177b1
bnxt_en: Add interface to support RDMA driver.

Orabug: 24567991

Since the network driver and RDMA driver operate on the same PCI function,
we need to create an interface to allow the RDMA driver to share resources
with the network driver.

1. Create a new bnxt_en_dev struct which will be returned by
bnxt_ulp_probe() upon success.  After that, all calls from the RDMA driver
to bnxt_en will pass a pointer to this struct.

2. This struct contains additional function pointers to register, request
msix, send fw messages, register for async events.

3. If the RDMA driver wants to enable RDMA on the function, it needs to
call the function pointer bnxt_register_device().  A ulp_ops structure
is passed for RCU protected upcalls from bnxt_en to the RDMA driver.

4. The RDMA driver can call firmware APIs using the bnxt_send_fw_msg()
function pointer.

5. 1 stats context is reserved when the RDMA driver registers.  MSIX
and completion rings are reserved when the RDMA driver calls
bnxt_request_msix() function pointer.

6. When the RDMA driver calls bnxt_unregister_device(), all RDMA resources
will be cleaned up.

v2: Fixed 2 uninitialized variable warnings.

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit a588e4580a7ecb715dab8bf09725b97aa0e0e3a0)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/net/ethernet/broadcom/bnxt/Makefile
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c [new file with mode: 0644]
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h [new file with mode: 0644]