net/mlx5: set maximum LRO packet size
This patch implements use of the API for LRO aggregated packet max size. Rx queue create is updated to use the relevant configuration. Documentation is updated accordingly. Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Matan Azrad <matan@mellanox.com>
This commit is contained in:
parent
dc258e4ab9
commit
1c7e57f9bd
@ -207,6 +207,8 @@ Limitations
|
||||
- KEEP_CRC offload cannot be supported with LRO.
|
||||
- The first mbuf length, without head-room, must be big enough to include the
|
||||
TCP header (122B).
|
||||
- Rx queue with LRO offload enabled, receiving a non-LRO packet, can forward
|
||||
it with size limited to max LRO size, not to max RX packet length.
|
||||
|
||||
Statistics
|
||||
----------
|
||||
|
@ -218,6 +218,9 @@ TAILQ_HEAD(mlx5_flows, rte_flow);
|
||||
#define MLX5_LRO_SUPPORTED(dev) \
|
||||
(((struct mlx5_priv *)((dev)->data->dev_private))->config.lro.supported)
|
||||
|
||||
/* Maximal size of aggregated LRO packet. */
|
||||
#define MLX5_MAX_LRO_SIZE (UINT8_MAX * 256u)
|
||||
|
||||
/* LRO configurations structure. */
|
||||
struct mlx5_lro_config {
|
||||
uint32_t supported:1; /* Whether LRO is supported. */
|
||||
|
@ -609,6 +609,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
|
||||
/* FIXME: we should ask the device for these values. */
|
||||
info->min_rx_bufsize = 32;
|
||||
info->max_rx_pktlen = 65536;
|
||||
info->max_lro_pkt_size = MLX5_MAX_LRO_SIZE;
|
||||
/*
|
||||
* Since we need one CQ per QP, the limit is the minimum number
|
||||
* between the two values.
|
||||
|
@ -1702,7 +1702,6 @@ mlx5_mprq_alloc_mp(struct rte_eth_dev *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define MLX5_MAX_LRO_SIZE (UINT8_MAX * 256u)
|
||||
#define MLX5_MAX_TCP_HDR_OFFSET ((unsigned int)(sizeof(struct rte_ether_hdr) + \
|
||||
sizeof(struct rte_vlan_hdr) * 2 + \
|
||||
sizeof(struct rte_ipv6_hdr)))
|
||||
@ -1774,7 +1773,9 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
|
||||
dev->data->dev_conf.rxmode.offloads;
|
||||
unsigned int lro_on_queue = !!(offloads & DEV_RX_OFFLOAD_TCP_LRO);
|
||||
const int mprq_en = mlx5_check_mprq_support(dev) > 0;
|
||||
unsigned int max_rx_pkt_len = dev->data->dev_conf.rxmode.max_rx_pkt_len;
|
||||
unsigned int max_rx_pkt_len = lro_on_queue ?
|
||||
dev->data->dev_conf.rxmode.max_lro_pkt_size :
|
||||
dev->data->dev_conf.rxmode.max_rx_pkt_len;
|
||||
unsigned int non_scatter_min_mbuf_size = max_rx_pkt_len +
|
||||
RTE_PKTMBUF_HEADROOM;
|
||||
unsigned int max_lro_size = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user