X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_reassembly%2Fmain.c;h=d59e6d02ff5e72e830da5759b89972f7848d46a2;hb=513f192b5fd4d5b2f9e79febecc28d629eb3dd82;hp=fe92fcdd2f23830e3bad2b69e7868f0ddbaca68e;hpb=538da7a1cad25fbdffe298c8ca76fc4dbd262d1b;p=dpdk.git diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index fe92fcdd2f..d59e6d02ff 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -190,14 +190,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}, }; /* @@ -324,10 +324,10 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, /* if packet is IPv4 */ if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) { - struct ipv4_hdr *ip_hdr; + struct rte_ipv4_hdr *ip_hdr; uint32_t ip_dst; - ip_hdr = (struct ipv4_hdr *)(eth_hdr + 1); + ip_hdr = (struct rte_ipv4_hdr *)(eth_hdr + 1); /* if it is a fragmented packet, then try to reassemble. */ if (rte_ipv4_frag_pkt_is_fragmented(ip_hdr)) { @@ -351,8 +351,11 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, m = mo; eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *); - ip_hdr = (struct ipv4_hdr *)(eth_hdr + 1); + ip_hdr = (struct rte_ipv4_hdr *)(eth_hdr + 1); } + + /* update offloading flags */ + m->ol_flags |= (PKT_TX_IPV4 | PKT_TX_IP_CKSUM); } ip_dst = rte_be_to_cpu_32(ip_hdr->dst_addr); @@ -362,13 +365,13 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, dst_port = next_hop; } - eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv4); + eth_hdr->ether_type = rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV4); } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) { /* if packet is IPv6 */ struct ipv6_extension_fragment *frag_hdr; - struct ipv6_hdr *ip_hdr; + struct rte_ipv6_hdr *ip_hdr; - ip_hdr = (struct ipv6_hdr *)(eth_hdr + 1); + ip_hdr = (struct rte_ipv6_hdr *)(eth_hdr + 1); frag_hdr = rte_ipv6_frag_get_ipv6_fragment_header(ip_hdr); @@ -390,7 +393,7 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, m = mo; eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *); - ip_hdr = (struct ipv6_hdr *)(eth_hdr + 1); + ip_hdr = (struct rte_ipv6_hdr *)(eth_hdr + 1); } } @@ -401,7 +404,7 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, dst_port = next_hop; } - eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv6); + eth_hdr->ether_type = rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV6); } /* if packet wasn't IPv4 or IPv6, it's forwarded to the port it came from */ @@ -694,8 +697,8 @@ parse_args(int argc, char **argv) static void print_ethaddr(const char *name, const struct rte_ether_addr *eth_addr) { - char buf[ETHER_ADDR_FMT_SIZE]; - rte_ether_format_addr(buf, ETHER_ADDR_FMT_SIZE, eth_addr); + char buf[RTE_ETHER_ADDR_FMT_SIZE]; + rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, eth_addr); printf("%s%s", name, buf); } @@ -708,6 +711,7 @@ check_all_ports_link_status(uint32_t port_mask) uint16_t portid; uint8_t count, all_ports_up, print_flag = 0; struct rte_eth_link link; + int ret; printf("\nChecking link status"); fflush(stdout); @@ -717,7 +721,14 @@ check_all_ports_link_status(uint32_t port_mask) if ((port_mask & (1 << portid)) == 0) continue; memset(&link, 0, sizeof(link)); - rte_eth_link_get_nowait(portid, &link); + ret = rte_eth_link_get_nowait(portid, &link); + if (ret < 0) { + all_ports_up = 0; + if (print_flag == 1) + printf("Port %u link get failed: %s\n", + portid, rte_strerror(-ret)); + continue; + } /* print link status if flag set */ if (print_flag == 1) { if (link.link_status) @@ -1035,7 +1046,12 @@ main(int argc, char **argv) qconf = &lcore_queue_conf[rx_lcore_id]; /* limit the frame size to the maximum supported by NIC */ - rte_eth_dev_info_get(portid, &dev_info); + ret = rte_eth_dev_info_get(portid, &dev_info); + if (ret != 0) + rte_exit(EXIT_FAILURE, + "Error during getting device (port %u) info: %s\n", + portid, strerror(-ret)); + local_port_conf.rxmode.max_rx_pkt_len = RTE_MIN( dev_info.max_rx_pktlen, local_port_conf.rxmode.max_rx_pkt_len); @@ -1116,7 +1132,14 @@ main(int argc, char **argv) ret, portid); } - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) { + printf("\n"); + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%d\n", + ret, portid); + } + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf("\n"); @@ -1161,7 +1184,11 @@ main(int argc, char **argv) rte_exit(EXIT_FAILURE, "rte_eth_dev_start: err=%d, port=%d\n", ret, portid); - rte_eth_promiscuous_enable(portid); + ret = rte_eth_promiscuous_enable(portid); + if (ret != 0) + rte_exit(EXIT_FAILURE, + "rte_eth_promiscuous_enable: err=%s, port=%d\n", + rte_strerror(-ret), portid); } if (init_routing_table() < 0)