X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_reassembly%2Fmain.c;h=f513e2f879374d8b5869068a819af4dbe4d87ef8;hb=c4045f34557a5ce3de2b14e997fe41b122595e29;hp=550fb53becf3dce0abf99f72d6acf5b1d4fff4b6;hpb=ce6b8c31548b4d71a986d9807cd06cf3a616d1ab;p=dpdk.git diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index 550fb53bec..f513e2f879 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -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 = ð_hdr->d_addr.addr_bytes[0]; + d_addr_bytes = ð_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], ð_hdr->s_addr); + rte_ether_addr_copy(&ports_eth_addr[dst_port], ð_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 @@ -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 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; }