]> git.droids-corp.org - dpdk.git/commitdiff
examples/ip_fragmentation: support big packets
authorNoa Ezra <noae@mellanox.com>
Sun, 13 Jan 2019 11:37:06 +0000 (11:37 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 15 Jan 2019 01:40:41 +0000 (02:40 +0100)
In some vendors the RX and TX configuration must be the same, therefore
the MTU size need to be equal to max_rx_pkt_len.
The MTU is the largest size packet in bytes that can be sent on the
network, therefore before changing this parameter, the NIC could not
receive packets larger than 1500 bytes, which is the default MTU size.
In addition, scatter-gather need to be enabled in order to receive
frames bigger than mbuf size.

Signed-off-by: Noa Ezra <noae@mellanox.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
examples/ip_fragmentation/main.c

index 17a877da2d09a003fdf121aaaab0d0e8791e9d70..8d789b417ebaa61351fb130c926d97f6be9a926f 100644 (file)
@@ -141,6 +141,7 @@ static struct rte_eth_conf port_conf = {
                .max_rx_pkt_len = JUMBO_FRAME_MAX_SIZE,
                .split_hdr_size = 0,
                .offloads = (DEV_RX_OFFLOAD_CHECKSUM |
+                            DEV_RX_OFFLOAD_SCATTER |
                             DEV_RX_OFFLOAD_JUMBO_FRAME),
        },
        .txmode = {
@@ -935,6 +936,16 @@ main(int argc, char **argv)
                                ret, portid);
                }
 
+               /* set the mtu to the maximum received packet size */
+               ret = rte_eth_dev_set_mtu(portid,
+                       local_port_conf.rxmode.max_rx_pkt_len);
+               if (ret < 0) {
+                       printf("\n");
+                       rte_exit(EXIT_FAILURE, "Set MTU failed: "
+                               "err=%d, port=%d\n",
+                       ret, portid);
+               }
+
                ret = rte_eth_dev_adjust_nb_rx_tx_desc(portid, &nb_rxd,
                                            &nb_txd);
                if (ret < 0) {