app/testpmd: add command to print representor info
[dpdk.git] / examples / ip_reassembly / main.c
index 550fb53..f513e2f 100644 (file)
@@ -22,7 +22,6 @@
 #include <rte_memcpy.h>
 #include <rte_eal.h>
 #include <rte_launch.h>
-#include <rte_atomic.h>
 #include <rte_cycles.h>
 #include <rte_prefetch.h>
 #include <rte_lcore.h>
@@ -189,6 +188,7 @@ struct l3fwd_ipv4_route {
        uint8_t  if_out;
 };
 
+/* Default l3fwd_ipv4_route_array table. 8< */
 struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = {
                {RTE_IPV4(100,10,0,0), 16, 0},
                {RTE_IPV4(100,20,0,0), 16, 1},
@@ -199,6 +199,7 @@ struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = {
                {RTE_IPV4(100,70,0,0), 16, 6},
                {RTE_IPV4(100,80,0,0), 16, 7},
 };
+/* >8 End of default l3fwd_ipv4_route_array table. */
 
 /*
  * IPv6 forwarding table
@@ -210,6 +211,7 @@ struct l3fwd_ipv6_route {
        uint8_t if_out;
 };
 
+/* Default l3fwd_ipv6_route_array table. 8< */
 static struct l3fwd_ipv6_route l3fwd_ipv6_route_array[] = {
        {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 48, 0},
        {{2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 48, 1},
@@ -220,6 +222,7 @@ static struct l3fwd_ipv6_route l3fwd_ipv6_route_array[] = {
        {{7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 48, 6},
        {{8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 48, 7},
 };
+/* >8 End of default l3fwd_ipv6_route_array table. */
 
 #define LPM_MAX_RULES         1024
 #define LPM6_MAX_RULES         1024
@@ -409,11 +412,11 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue,
        /* if packet wasn't IPv4 or IPv6, it's forwarded to the port it came from */
 
        /* 02:00:00:00:00:xx */
-       d_addr_bytes = &eth_hdr->d_addr.addr_bytes[0];
+       d_addr_bytes = &eth_hdr->dst_addr.addr_bytes[0];
        *((uint64_t *)d_addr_bytes) = 0x000000000002 + ((uint64_t)dst_port << 40);
 
        /* src addr */
-       rte_ether_addr_copy(&ports_eth_addr[dst_port], &eth_hdr->s_addr);
+       rte_ether_addr_copy(&ports_eth_addr[dst_port], &eth_hdr->src_addr);
 
        send_single_packet(m, dst_port);
 }
@@ -709,6 +712,7 @@ check_all_ports_link_status(uint32_t port_mask)
        uint8_t count, all_ports_up, print_flag = 0;
        struct rte_eth_link link;
        int ret;
+       char link_status_text[RTE_ETH_LINK_MAX_STR_LEN];
 
        printf("\nChecking link status");
        fflush(stdout);
@@ -728,14 +732,10 @@ check_all_ports_link_status(uint32_t port_mask)
                        }
                        /* print link status if flag set */
                        if (print_flag == 1) {
-                               if (link.link_status)
-                                       printf(
-                                       "Port%d Link Up. Speed %u Mbps - %s\n",
-                                               portid, link.link_speed,
-                               (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
-                                       ("full-duplex") : ("half-duplex"));
-                               else
-                                       printf("Port %d Link Down\n", portid);
+                               rte_eth_link_to_str(link_status_text,
+                                       sizeof(link_status_text), &link);
+                               printf("Port %d %s\n", portid,
+                                      link_status_text);
                                continue;
                        }
                        /* clear all_ports_up flag if any link down */
@@ -859,6 +859,7 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
        if (socket == SOCKET_ID_ANY)
                socket = 0;
 
+       /* Each table entry holds information about packet fragmentation. 8< */
        frag_cycles = (rte_get_tsc_hz() + MS_PER_S - 1) / MS_PER_S *
                max_flow_ttl;
 
@@ -870,6 +871,7 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
                        max_flow_num, lcore, queue);
                return -1;
        }
+       /* >8 End of holding packet fragmentation. */
 
        /*
         * At any given moment up to <max_flow_num * (MAX_FRAG_NUM)>
@@ -877,6 +879,7 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
         * Plus, each TX queue can hold up to <max_flow_num> packets.
         */
 
+       /* mbufs stored int the gragment table. 8< */
        nb_mbuf = RTE_MAX(max_flow_num, 2UL * MAX_PKT_BURST) * MAX_FRAG_NUM;
        nb_mbuf *= (port_conf.rxmode.max_rx_pkt_len + BUF_SIZE - 1) / BUF_SIZE;
        nb_mbuf *= 2; /* ipv4 and ipv6 */
@@ -893,6 +896,7 @@ setup_queue_tbl(struct rx_queue *rxq, uint32_t lcore, uint32_t queue)
                        "rte_pktmbuf_pool_create(%s) failed", buf);
                return -1;
        }
+       /* >8 End of mbufs stored int the fragmentation table. */
 
        return 0;
 }
@@ -1198,11 +1202,14 @@ main(int argc, char **argv)
        signal(SIGINT, signal_handler);
 
        /* launch per-lcore init on every lcore */
-       rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       rte_eal_mp_remote_launch(main_loop, NULL, CALL_MAIN);
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (rte_eal_wait_lcore(lcore_id) < 0)
                        return -1;
        }
 
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }