aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Cohen <eli@dev.mellanox.co.il>2008-04-17 00:09:27 -0400
committerRoland Dreier <rolandd@cisco.com>2008-04-17 00:09:27 -0400
commitc93570f23a98c633570397aedc6d1808f5d5846a (patch)
tree91251e98dcacfe9e7be8bf805f4bd5c4b2284f90
parentb846f25aa2a353355aec5202fe4dbdc6674dfc64 (diff)
IB/core: Add IPoIB UD LSO support
LSO (large send offload) allows the networking stack to pass SKBs with data size larger than the MTU to the IPoIB driver and have the HCA HW fragment the data to multiple MSS-sized packets. Add a device capability flag IB_DEVICE_UD_TSO for devices that can perform TCP segmentation offload, a new send work request opcode IB_WR_LSO, header, hlen and mss fields for the work request structure, and a new IB_WC_LSO completion type. Signed-off-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--include/rdma/ib_verbs.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index c3299be41c6f..66928e9cab19 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -104,6 +104,7 @@ enum ib_device_cap_flags {
104 * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode. 104 * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode.
105 */ 105 */
106 IB_DEVICE_UD_IP_CSUM = (1<<18), 106 IB_DEVICE_UD_IP_CSUM = (1<<18),
107 IB_DEVICE_UD_TSO = (1<<19),
107}; 108};
108 109
109enum ib_atomic_cap { 110enum ib_atomic_cap {
@@ -411,6 +412,7 @@ enum ib_wc_opcode {
411 IB_WC_COMP_SWAP, 412 IB_WC_COMP_SWAP,
412 IB_WC_FETCH_ADD, 413 IB_WC_FETCH_ADD,
413 IB_WC_BIND_MW, 414 IB_WC_BIND_MW,
415 IB_WC_LSO,
414/* 416/*
415 * Set value of IB_WC_RECV so consumers can test if a completion is a 417 * Set value of IB_WC_RECV so consumers can test if a completion is a
416 * receive by testing (opcode & IB_WC_RECV). 418 * receive by testing (opcode & IB_WC_RECV).
@@ -622,7 +624,8 @@ enum ib_wr_opcode {
622 IB_WR_SEND_WITH_IMM, 624 IB_WR_SEND_WITH_IMM,
623 IB_WR_RDMA_READ, 625 IB_WR_RDMA_READ,
624 IB_WR_ATOMIC_CMP_AND_SWP, 626 IB_WR_ATOMIC_CMP_AND_SWP,
625 IB_WR_ATOMIC_FETCH_AND_ADD 627 IB_WR_ATOMIC_FETCH_AND_ADD,
628 IB_WR_LSO
626}; 629};
627 630
628enum ib_send_flags { 631enum ib_send_flags {
@@ -660,6 +663,9 @@ struct ib_send_wr {
660 } atomic; 663 } atomic;
661 struct { 664 struct {
662 struct ib_ah *ah; 665 struct ib_ah *ah;
666 void *header;
667 int hlen;
668 int mss;
663 u32 remote_qpn; 669 u32 remote_qpn;
664 u32 remote_qkey; 670 u32 remote_qkey;
665 u16 pkey_index; /* valid for GSI only */ 671 u16 pkey_index; /* valid for GSI only */