IB/core: Add IP checksum offload support
Eli Cohen [Wed, 30 Jan 2008 16:30:57 +0000 (18:30 +0200)]
Add a device capability to show when it can handle checksum offload.
Also add a send flag for inserting checksums and a csum_ok field to
the completion record.

Signed-off-by: Eli Cohen <eli@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>

include/rdma/ib_verbs.h

index cfbd38f..a5a7f96 100644 (file)
@@ -95,7 +95,15 @@ enum ib_device_cap_flags {
        IB_DEVICE_N_NOTIFY_CQ           = (1<<14),
        IB_DEVICE_ZERO_STAG             = (1<<15),
        IB_DEVICE_SEND_W_INV            = (1<<16),
-       IB_DEVICE_MEM_WINDOW            = (1<<17)
+       IB_DEVICE_MEM_WINDOW            = (1<<17),
+       /*
+        * Devices should set IB_DEVICE_UD_IP_SUM if they support
+        * insertion of UDP and TCP checksum on outgoing UD IPoIB
+        * messages and can verify the validity of checksum for
+        * incoming messages.  Setting this flag implies that the
+        * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode.
+        */
+       IB_DEVICE_UD_IP_CSUM            = (1<<18),
 };
 
 enum ib_atomic_cap {
@@ -431,6 +439,7 @@ struct ib_wc {
        u8                      sl;
        u8                      dlid_path_bits;
        u8                      port_num;       /* valid only for DR SMPs on switches */
+       int                     csum_ok;
 };
 
 enum ib_cq_notify_flags {
@@ -615,7 +624,8 @@ enum ib_send_flags {
        IB_SEND_FENCE           = 1,
        IB_SEND_SIGNALED        = (1<<1),
        IB_SEND_SOLICITED       = (1<<2),
-       IB_SEND_INLINE          = (1<<3)
+       IB_SEND_INLINE          = (1<<3),
+       IB_SEND_IP_CSUM         = (1<<4)
 };
 
 struct ib_sge {