> From: Thomas Monjalon [mailto:tho...@monjalon.net] > Sent: Tuesday, 24 May 2022 17.59 > > +Cc people involved in previous versions > > 24/05/2022 17:20, Spike Du: > > LWM(limit watermark) is per RX queue attribute, when RX queue > fullness reach the LWM limit, HW sends an event to dpdk application. > > Host shaper can configure shaper rate and lwm-triggered for a host > port.
Please ignore this comment, it is not important, but I had to get it out of my system: I assume that the "LWM" name is from the NIC datasheet; otherwise I would probably prefer something with "threshold"... LWM is easily confused with "low water mark", which is the opposite of what the LWM does. Names are always open for discussion, so I won't object to it. > > The shaper limits the rate of traffic from host port to wire port. >From host to wire? It is RX, so you must mean from wire to host. > > If lwm-triggered is enabled, a 100Mbps shaper is enabled > automatically when one of the host port's Rx queues receives LWM event. > > > > These two features can combine to control traffic from host port to > wire port. Again, you mean from wire to host? > > The work flow is configure LWM to RX queue and enable lwm-triggered > flag in host shaper, after receiving LWM event, delay a while until RX > queue is empty , then disable the shaper. We recycle this work flow to > reduce RX queue drops. You delay while RX queue gets drained by some other threads, I assume. Surely, the excess packets must be dropped somewhere, e.g. by the shaper? > > > > Add new libethdev API to set LWM, add rte event > RTE_ETH_EVENT_RXQ_LIMIT_REACHED to handle LWM event. Makes sense to make it public; could be usable for other purposes, similar to interrupt coalescing, as mentioned by Stephen. > > For host shaper, > because it doesn't align to existing DPDK framework and is specific to > Nvidia NIC, use PMD private API. Makes sense to keep it private. > > > > For integration with testpmd, put the private cmdline function and > LWM event handler in mlx5 PMD directory by adding a new file > mlx5_test.c. Only add minimal code in testpmd to invoke interfaces from > mlx5_test.c. > > > > Spike Du (7): > > net/mlx5: add LWM support for Rxq > > common/mlx5: share interrupt management > > ethdev: introduce Rx queue based limit watermark > > net/mlx5: add LWM event handling support > > net/mlx5: support Rx queue based limit watermark > > net/mlx5: add private API to config host port shaper > > app/testpmd: add LWM and Host Shaper command > >