[ofa-general] Re: [PATCH 3/10] IB/core: Add LSO support

Eli Cohen eli at dev.mellanox.co.il
Tue Apr 1 08:35:46 PDT 2008


Roland,

would like me to re-generate the mlx4 LSO patch to match this commit or
would you do the adjustments?

On Fri, 2008-03-28 at 14:39 -0700, Roland Dreier wrote:
> thanks, applied as below.
> 
> For now I left the IB_WR_LSO opcode rather than a send flag, since the
> mlx4 internal implementation is as a new opcode.  However since this
> is kernel-internal we can revisit this and I'm happy if the discussion
> continues.
> 
> From 86a0dd93c39739a39d6b5f7f67d4b2456c5f45ae Mon Sep 17 00:00:00 2001
> From: Eli Cohen <eli at dev.mellanox.co.il>
> Date: Mon, 17 Mar 2008 17:23:51 +0200
> Subject: [PATCH] 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 at mellanox.co.il>
> Signed-off-by: Roland Dreier <rolandd at cisco.com>
> ---
>  include/rdma/ib_verbs.h |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 3ac7371..5fe7723 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -104,6 +104,7 @@ enum ib_device_cap_flags {
>  	 * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode.
>  	 */
>  	IB_DEVICE_UD_IP_CSUM		= (1<<18),
> +	IB_DEVICE_UD_TSO		= (1<<19),
>  	IB_DEVICE_SEND_W_INV		= (1<<21),
>  };
>  
> @@ -412,6 +413,7 @@ enum ib_wc_opcode {
>  	IB_WC_COMP_SWAP,
>  	IB_WC_FETCH_ADD,
>  	IB_WC_BIND_MW,
> +	IB_WC_LSO,
>  /*
>   * Set value of IB_WC_RECV so consumers can test if a completion is a
>   * receive by testing (opcode & IB_WC_RECV).
> @@ -623,7 +625,8 @@ enum ib_wr_opcode {
>  	IB_WR_SEND_WITH_IMM,
>  	IB_WR_RDMA_READ,
>  	IB_WR_ATOMIC_CMP_AND_SWP,
> -	IB_WR_ATOMIC_FETCH_AND_ADD
> +	IB_WR_ATOMIC_FETCH_AND_ADD,
> +	IB_WR_LSO
>  };
>  
>  enum ib_send_flags {
> @@ -662,6 +665,9 @@ struct ib_send_wr {
>  		} atomic;
>  		struct {
>  			struct ib_ah *ah;
> +			void   *header;
> +			int     hlen;
> +			int     mss;
>  			u32	remote_qpn;
>  			u32	remote_qkey;
>  			u16	pkey_index; /* valid for GSI only */




More information about the general mailing list