On Tue, May 31, 2022 at 1:13 AM Ajit Khaparde <ajit.khapa...@broadcom.com> wrote: > > On Mon, May 30, 2022 at 6:16 AM <jer...@marvell.com> wrote: > > > > From: Jerin Jacob <jer...@marvell.com> > > > > NIC HW controllers often come with congestion management support on > > various HW objects such as Rx queue depth or mempool queue depth. > > > > Also, it can support various modes of operation such as RED > > (Random early discard), WRED etc on those HW objects. > > > > This patch adds a framework to express such modes(enum rte_cman_mode) > > and introduce (enum rte_eth_cman_obj) to enumerate the different > > objects where the modes can operate on. > > > > This patch adds RTE_CMAN_RED mode of operation and > > RTE_ETH_CMAN_OBJ_RX_QUEUE, RTE_ETH_CMAN_OBJ_RX_QUEUE_MEMPOOL object. > > > > Introduced reserved fields in configuration structure > > backed by rte_eth_cman_config_init() to add new configuration > > parameters without ABI breakage. > > > > Added rte_eth_cman_info_get() API to get the information such as > > supported modes and objects. > > > > Added rte_eth_cman_config_init(), rte_eth_cman_config_set() APIs > > to configure congestion management on those object with associated mode. > > > > Finally, Added rte_eth_cman_config_get() API to retrieve the > > applied configuration. > > Can you also add How all this helps an application? Thanks
Random early detection (RED), also known as random early discard or random early drop is a queuing discipline for a network scheduler suited for congestion avoidance. In the conventional tail drop algorithm, a router or other network component buffers as many packets as it can, and simply drops the ones it cannot buffer. If buffers are constantly full, the network is congested. Tail drop distributes buffer space unfairly among traffic flows. Tail drop can also lead to TCP global synchronization as all TCP connections "hold back" simultaneously, and then step forward simultaneously. Networks become under-utilized and flooded—alternately, in waves. RED addresses these issues by pre-emptively dropping packets before the buffer becomes completely full. It uses predictive models to decide which packets to drop. it is copied from https://en.wikipedia.org/wiki/Random_early_detection page. I have kept this URL under enum rte_cman_mode:: RTE_CMAN_RED too. Also I will add original specification URL too, http://www.aciri.org/floyd/papers/red/red.html.