Hi Ferrue

From: Ferruh Yigit
> On 7/22/2019 10:12 AM, Matan Azrad wrote:
> > Introduction:
> > LRO (Large Receive Offload) is intended to reduce host CPU overhead
> when processing Rx TCP packets.
> > LRO works by aggregating multiple incoming packets from a single stream
> into a larger buffer, before they are passed higher up the networking stack.
> Thus reducing the number of packets that have to be processed.
> >
> > Use:
> > MLX5 PMD will query the HCA capabilities on initialization to check if LRO 
> > is
> supported and can be used.
> > LRO in MLX5 PMD is intended for use by applications using a relatively small
> number of flows.
> > LRO support can be enabled only per port.
> > In each LRO session, packets of the same flow will be coalesced until one of
> the following occur:
> >   *   Buffer size limit is exceeded.
> >   *   Session timeout is exceeded.
> >   *   Packet from a different flow is received on the same queue.
> >
> > When LRO session ends the coalesced packet is passed to the PMD, which
> will update the header fields before passing the packet to the application.
> > For efficient memory utilization, the MPRQ mechanism is used.
> > Support of Non-LRO flows will not be impacted.
> >
> > Existing API:
> > Offload capability DEV_RX_OFFLOAD_TCP_LRO will be used to indicate
> device supports LRO.
> > testpmd command-line option "-enable-lro" will be used to request LRO
> feature enable on application start.
> > testpmd rx_offload "tcp_lro" on or off will be used to request LRO feature
> enable or disable during application runtime.
> > Offload flag PKT_RX_LRO will be used. This flag can be set in Rx mbuf to
> indicate this is a LRO coalesced packet.
> >
> > New API:
> > PMD configuration parameter lro_timeout_usec will be added.
> > This parameter can be used by application to select LRO session timeout (in
> microseconds).
> > If this value is not specified, the minimal value supported by device will 
> > be
> used.
> >
> > Known limitations:
> > mbuf head-room is zero for any packet if LRO is configured in the port.
> > Keep CRC offload cannot be supported with LRO.
> > CQE compression is not supported with LRO.
> >
> > Dekel Peled (23):
> >   net/mlx5: remove redundant item from union
> >   net/mlx5: add LRO APIs and initial settings
> >   net/mlx5: support LRO caps query using devx API
> >   net/mlx5: glue func for queue query using new API
> >   net/mlx5: glue function for action using new API
> >   net/mlx5: check conditions to enable LRO
> >   net/mlx5: support Tx interface query using new API
> >   net/mlx5: update Tx queue create for LRO
> >   net/mlx5: create advanced RxQ object using new API
> >   net/mlx5: modify advanced RxQ object using new API
> >   net/mlx5: create advanced Rx object using new API
> >   net/mlx5: create advanced RxQ table using new API
> >   net/mlx5: allocate door-bells using new API
> >   net/mlx5: rename RxQ verbs to general RxQ object
> >   net/mlx5: rename verbs indirection table to obj
> >   net/mlx5: rename hash RxQ verbs to general
> >   net/mlx5: update queue state modify function
> >   net/mlx5: store protection domain number on create
> >   net/mlx5: func to create Rx verbs completion queue
> >   net/mlx5: function to create Rx verbs work queue
> >   net/mlx5: create advanced RxQ using new API
> >   net/mlx5: support LRO with single RxQ object
> >   doc: update MLX5 doc and release notes with LRO
> >
> > Matan Azrad (5):
> >   net/mlx5: replace the external mbuf shared memory
> >   net/mlx5: update LRO fields in completion entry
> >   net/mlx5: handle LRO packets in Rx queue
> >   net/mlx5: zero the LRO mbuf headroom
> >   net/mlx5: adjust the maximum LRO message size
> 
> I am getting build error on patch by patch build, didn't dig to figure out 
> which
> exact patch to fail, please investigate.
> 
> And this patchset, adding a new feature, is sent on last day of the rc2, and
> merged in the same day, do you guys really sure it has been reviewed well?

Yes, most of the patches were reviewed by 2 guys, all the others by 1.
It is in testing for all the week, so it is good enough for RC2.

May be some fixes\enhancements in RC3.
 
> There are two group of build errors [1] & [2], both of them are observed with
> both gcc and clang.
> 
> 
> [1]
> .../drivers/net/mlx5/mlx5_rxq.c:2150:7: error: variable 'qp' is used
> uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-
> uninitialized]...
>                 if (!tir) {...
>                     ^~~~...
> .../drivers/net/mlx5/mlx5_rxq.c:2191:6: note: uninitialized use occurs here...
>         if (qp)...
>             ^~...
> .../drivers/net/mlx5/mlx5_rxq.c:2150:3: note: remove the 'if' if its 
> condition is
> always false...
>                 if (!tir) {...
>                 ^~~~~~~~~~~...
> .../drivers/net/mlx5/mlx5_rxq.c:2046:19: note: initialize the variable 'qp' to
> silence this warning...
>         struct ibv_qp *qp;...
>                          ^...
>                           = NULL...
> 1 error generated....
> 
> 
> [2]
> .../drivers/net/mlx5/mlx5.c:1450:17: error: incomplete definition of type
> 'struct mlx5dv_devx_umem'
>                 if (page->umem->umem_id == umem_id)
>                     ~~~~~~~~~~^
> .../drivers/net/mlx5/mlx5_glue.h:64:8: note: forward declaration of 'struct
> mlx5dv_devx_umem'
> struct mlx5dv_devx_umem;
>        ^
> 1 error generated.


Will address it, now...

Thanks

Reply via email to