Add support for TCP segmentation offload (TSO)
1) Add a structure to define a TSO packet as part of struct ibv_send_wr.
2) Add IBV_WR_TSO opcode to be used as part of post_send.
3) Add IBV_WC_TSO to be used as part of poll_cq to report a TSO completion.
4) Add IBV_QP_INIT_ATTR_MAX_TSO_HEADER to define the maximum TSO header size
when creating a QP. This is needed to let providers prepare their SQ buffer
to fit application's usage.
5) Report TSO capabilities when querying a device.
In order to preserve the size of ibv_send_wr structure and prevents some
performance penalty, the TSO definition was added under a union with the
memory window stuff, those options are mutual exclusive.
The TSO definition should include:
- A pointer to the packet header.
- Header size.
- The maximum segment size (mss) that the hardware should generate in
its TSO engine.
Signed-off-by: Bodong Wang <firstname.lastname@example.org>
Reviewed-by: Yishai Hadas <email@example.com>
Signed-off-by: Doug Ledford <firstname.lastname@example.org>
2 files changed