freebsd-src/sys/dev/mana
Wei Hu b685df314f mana: some code refactoring and export apis for future RDMA driver
- Record the physical address for doorbell page region
  For supporting RDMA device with multiple user contexts with their
  individual doorbell pages, record the start address of doorbell page
  region for use by the RDMA driver to allocate user context doorbell IDs.

- Handle vport sharing between devices
  For outgoing packets, the PF requires the VF to configure the vport with
  corresponding protection domain and doorbell ID for the kernel or user
  context. The vport can't be shared between different contexts.

  Implement the logic to exclusively take over the vport by either the
  Ethernet device or RDMA device.

- Add functions for allocating doorbell page from GDMA
  The RDMA device needs to allocate doorbell pages for each user context.
  Implement those functions and expose them for use by the RDMA driver.

- Export Work Queue functions for use by RDMA driver
  RDMA device may need to create Ethernet device queues for use by Queue
  Pair type RAW. This allows a user-mode context accesses Ethernet hardware
  queues. Export the supporting functions for use by the RDMA driver.

- Define max values for SGL entries
  The number of maximum SGl entries should be computed from the maximum
  WQE size for the intended queue type and the corresponding OOB data
  size. This guarantees the hardware queue can successfully queue requests
  up to the queue depth exposed to the upper layer.

- Define and process GDMA response code GDMA_STATUS_MORE_ENTRIES
   When doing memory registration, the PF may respond with
   GDMA_STATUS_MORE_ENTRIES to indicate a follow request is needed. This is
   not an error and should be processed as expected.

- Define data structures for protection domain and memory registration
  The MANA hardware support protection domain and memory registration for use
  in RDMA environment. Add those definitions and expose them for use by the
  RDMA driver.

MFC after:	2 weeks
Sponsored by:	Microsoft
2022-08-29 05:24:21 +00:00
..
gdma.h mana: some code refactoring and export apis for future RDMA driver 2022-08-29 05:24:21 +00:00
gdma_main.c mana: some code refactoring and export apis for future RDMA driver 2022-08-29 05:24:21 +00:00
gdma_util.c
gdma_util.h
hw_channel.c mana: some code refactoring and export apis for future RDMA driver 2022-08-29 05:24:21 +00:00
hw_channel.h
mana.h mana: some code refactoring and export apis for future RDMA driver 2022-08-29 05:24:21 +00:00
mana_en.c mana: some code refactoring and export apis for future RDMA driver 2022-08-29 05:24:21 +00:00
mana_sysctl.c
mana_sysctl.h
shm_channel.c
shm_channel.h