examples/ip_frag: fix use of ethdev internal device array
[dpdk.git] / examples / ip_fragmentation / main.c
index 847f9ab..1b51bf2 100644 (file)
@@ -169,14 +169,14 @@ struct l3fwd_ipv4_route {
 };
 
 struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = {
-               {IPv4(100,10,0,0), 16, 0},
-               {IPv4(100,20,0,0), 16, 1},
-               {IPv4(100,30,0,0), 16, 2},
-               {IPv4(100,40,0,0), 16, 3},
-               {IPv4(100,50,0,0), 16, 4},
-               {IPv4(100,60,0,0), 16, 5},
-               {IPv4(100,70,0,0), 16, 6},
-               {IPv4(100,80,0,0), 16, 7},
+               {RTE_IPV4(100,10,0,0), 16, 0},
+               {RTE_IPV4(100,20,0,0), 16, 1},
+               {RTE_IPV4(100,30,0,0), 16, 2},
+               {RTE_IPV4(100,40,0,0), 16, 3},
+               {RTE_IPV4(100,50,0,0), 16, 4},
+               {RTE_IPV4(100,60,0,0), 16, 5},
+               {RTE_IPV4(100,70,0,0), 16, 6},
+               {RTE_IPV4(100,80,0,0), 16, 7},
 };
 
 /*
@@ -357,12 +357,14 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,
                /* src addr */
                rte_ether_addr_copy(&ports_eth_addr[port_out],
                                &eth_hdr->s_addr);
-               if (ipv6)
+               if (ipv6) {
                        eth_hdr->ether_type =
-                               rte_be_to_cpu_16(RTE_ETHER_TYPE_IPv6);
-               else
+                               rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV6);
+               } else {
                        eth_hdr->ether_type =
-                               rte_be_to_cpu_16(RTE_ETHER_TYPE_IPv4);
+                               rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV4);
+                       m->ol_flags |= (PKT_TX_IPV4 | PKT_TX_IP_CKSUM);
+               }
        }
 
        len += len2;
@@ -680,9 +682,9 @@ parse_ptype(struct rte_mbuf *m)
 
        eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
        ether_type = eth_hdr->ether_type;
-       if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv4))
+       if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4))
                packet_type |= RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
-       else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_IPv6))
+       else if (ether_type == rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6))
                packet_type |= RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
 
        m->packet_type = packet_type;
@@ -989,6 +991,9 @@ main(int argc, char **argv)
                        if (rte_lcore_is_enabled(lcore_id) == 0)
                                continue;
 
+                       if (queueid >= dev_info.nb_tx_queues)
+                               break;
+
                        socket = (int) rte_lcore_to_socket_id(lcore_id);
                        printf("txq=%u,%d ", lcore_id, queueid);
                        fflush(stdout);