[ofa-general] Re: [PATCH 3/16 v4] IB/core: Add checksum offload support

Roland Dreier rdreier at cisco.com
Fri Feb 8 14:39:34 PST 2008


thanks, applied.  I changed the description and name of the device
capability flag to make it clear that this is only for UD messages
(since future devices may handle this for IPoIB CM with RC QPs).

Also it seems we could use an anonymous union to make the csum_ok
field share the same location as the port_num field in struct ib_wc
and save a few bytes of space, but I'm not sure it's worth it.

commit e0605d9199b462454f2f2e5ca01810255a6d5cfa
Author: Eli Cohen <eli at mellanox.co.il>
Date:   Wed Jan 30 18:30:57 2008 +0200

    IB/core: Add IP checksum offload support
    
    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 at mellanox.co.il>
    Signed-off-by: Roland Dreier <rolandd at cisco.com>

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index cfbd38f..a5a7f96 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -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 {



More information about the general mailing list