On Mon, 2021-10-18 at 18:31 +0100, Ferruh Yigit wrote:
> On 10/18/2021 2:48 PM, Ferruh Yigit wrote:
> > There is a confusion on setting max Rx packet length, this patch aims to
> > clarify it.
> > 
> > 'rte_eth_dev_configure()' API accepts max Rx packet size via
> > 'uint32_t max_rx_pkt_len' field of the config struct 'struct
> > rte_eth_conf'.
> > 
> > Also 'rte_eth_dev_set_mtu()' API can be used to set the MTU, and result
> > stored into '(struct rte_eth_dev)->data->mtu'.
> > 
> > These two APIs are related but they work in a disconnected way, they
> > store the set values in different variables which makes hard to figure
> > out which one to use, also having two different method for a related
> > functionality is confusing for the users.
> > 
> > Other issues causing confusion is:
> > * maximum transmission unit (MTU) is payload of the Ethernet frame. And
> >    'max_rx_pkt_len' is the size of the Ethernet frame. Difference is
> >    Ethernet frame overhead, and this overhead may be different from
> >    device to device based on what device supports, like VLAN and QinQ.
> > * 'max_rx_pkt_len' is only valid when application requested jumbo frame,
> >    which adds additional confusion and some APIs and PMDs already
> >    discards this documented behavior.
> > * For the jumbo frame enabled case, 'max_rx_pkt_len' is an mandatory
> >    field, this adds configuration complexity for application.
> > 
> > As solution, both APIs gets MTU as parameter, and both saves the result
> > in same variable '(struct rte_eth_dev)->data->mtu'. For this
> > 'max_rx_pkt_len' updated as 'mtu', and it is always valid independent
> > from jumbo frame.
> > 
> > For 'rte_eth_dev_configure()', 'dev->data->dev_conf.rxmode.mtu' is user
> > request and it should be used only within configure function and result
> > should be stored to '(struct rte_eth_dev)->data->mtu'. After that point
> > both application and PMD uses MTU from this variable.
> > 
> > When application doesn't provide an MTU during 'rte_eth_dev_configure()'
> > default 'RTE_ETHER_MTU' value is used.
> > 
> > Additional clarification done on scattered Rx configuration, in
> > relation to MTU and Rx buffer size.
> > MTU is used to configure the device for physical Rx/Tx size limitation,
> > Rx buffer is where to store Rx packets, many PMDs use mbuf data buffer
> > size as Rx buffer size.
> > PMDs compare MTU against Rx buffer size to decide enabling scattered Rx
> > or not. If scattered Rx is not supported by device, MTU bigger than Rx
> > buffer size should fail.
> > 
> > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>
> > Acked-by: Ajit Khaparde <ajit.khapa...@broadcom.com>
> > Acked-by: Somnath Kotur <somnath.ko...@broadcom.com>
> > Acked-by: Huisong Li <lihuis...@huawei.com>
> > Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>
> > Acked-by: Konstantin Ananyev <konstantin.anan...@intel.com>
> > Acked-by: Rosen Xu <rosen...@intel.com>
> > Acked-by: Hyong Youb Kim <hyon...@cisco.com>
> 
> Series applied to dpdk-next-net/main, thanks.
> 

Hi Ferruh,

I noticed that no cc stable in this this "fix" patch, do you expect it
to be part of LTS?

Thanks,
Xueming

Reply via email to