]> git.droids-corp.org - dpdk.git/commitdiff
net/ena: ensure Rx buffer size is at least 1400B
authorMichal Krawczyk <mk@semihalf.com>
Wed, 8 Apr 2020 08:28:52 +0000 (10:28 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 21 Apr 2020 11:57:06 +0000 (13:57 +0200)
Some of the ENA devices can't handle buffers which are smaller than a
1400B. Because of this limitation, size of the buffer is being checked
and limited during the Rx queue setup.

If it's below the allowed value, PMD won't finish it's configuration
successfully..

Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
Reviewed-by: Guy Tzalik <gtzalik@amazon.com>
drivers/net/ena/ena_ethdev.c
drivers/net/ena/ena_ethdev.h

index 665afee4f0fdc2152bb1a0204c1e242d86c9836e..64aabbbb190dcf1b79ec031b734dfe4be18531d1 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates.
+ * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates.
  * All rights reserved.
  */
 
@@ -1282,6 +1282,7 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
 {
        struct ena_adapter *adapter = dev->data->dev_private;
        struct ena_ring *rxq = NULL;
+       size_t buffer_size;
        int i;
 
        rxq = &adapter->rx_ring[queue_idx];
@@ -1309,6 +1310,15 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
                return -EINVAL;
        }
 
+       /* ENA isn't supporting buffers smaller than 1400 bytes */
+       buffer_size = rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM;
+       if (buffer_size < ENA_RX_BUF_MIN_SIZE) {
+               PMD_DRV_LOG(ERR,
+                       "Unsupported size of RX buffer: %zu (min size: %d)\n",
+                       buffer_size, ENA_RX_BUF_MIN_SIZE);
+               return -EINVAL;
+       }
+
        rxq->port_id = dev->data->port_id;
        rxq->next_to_clean = 0;
        rxq->next_to_use = 0;
index af5eeea2804fca7b9a030af2b9619b9973b8dad3..e9b55dc029269a329cabb4c20704dcc1cf843be3 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates.
+ * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates.
  * All rights reserved.
  */
 
@@ -20,6 +20,7 @@
 #define ENA_MIN_FRAME_LEN      64
 #define ENA_NAME_MAX_LEN       20
 #define ENA_PKT_MAX_BUFS       17
+#define ENA_RX_BUF_MIN_SIZE    1400
 
 #define ENA_MIN_MTU            128