X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_reassembly%2Fmain.c;h=b641576fc90196808f092a19b695f39a7671bc3a;hb=a261b214b2444cf50bd0cdf4e3b97d25d80334ec;hp=849215314533b7307370b6503cc35c323f29b49a;hpb=fdf20fa7bee9df9037116318a87080e1eb7e757e;p=dpdk.git diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index 8492153145..b641576fc9 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -66,7 +65,6 @@ #include #include #include -#include #include #include #include @@ -86,7 +84,7 @@ #define MAX_JUMBO_PKT_LEN 9600 -#define BUF_SIZE 2048 +#define BUF_SIZE RTE_MBUF_DEFAULT_DATAROOM #define MBUF_SIZE \ (BUF_SIZE + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM) @@ -305,7 +303,7 @@ send_burst(struct lcore_queue_conf *qconf, uint32_t thresh, uint8_t port) txmb->tail = 0; } - return (fill); + return fill; } /* Enqueue a single packet, and send burst if queue is filled */ @@ -336,7 +334,7 @@ send_single_packet(struct rte_mbuf *m, uint8_t port) if(++txmb->head == len) txmb->head = 0; - return (0); + return 0; } static inline void @@ -348,7 +346,8 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue, struct rte_ip_frag_death_row *dr; struct rx_queue *rxq; void *d_addr_bytes; - uint8_t next_hop, dst_port; + uint32_t next_hop; + uint8_t dst_port; rxq = &qconf->rx_queue_list[queue]; @@ -357,7 +356,7 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue, dst_port = portid; /* if packet is IPv4 */ - if (m->ol_flags & (PKT_RX_IPV4_HDR)) { + if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) { struct ipv4_hdr *ip_hdr; uint32_t ip_dst; @@ -397,9 +396,8 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue, } eth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv4); - } - /* if packet is IPv6 */ - else if (m->ol_flags & (PKT_RX_IPV6_HDR | PKT_RX_IPV6_HDR_EXT)) { + } 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; @@ -429,7 +427,8 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue, } /* Find destination port */ - if (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, &next_hop) == 0 && + if (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, + &next_hop) == 0 && (enabled_port_mask & 1 << next_hop) != 0) { dst_port = next_hop; } @@ -563,13 +562,13 @@ parse_flow_num(const char *str, uint32_t min, uint32_t max, uint32_t *val) errno = 0; v = strtoul(str, &end, 10); if (errno != 0 || *end != '\0') - return (-EINVAL); + return -EINVAL; if (v < min || v > max) - return (-EINVAL); + return -EINVAL; *val = (uint32_t)v; - return (0); + return 0; } static int @@ -585,20 +584,20 @@ parse_flow_ttl(const char *str, uint32_t min, uint32_t max, uint32_t *val) errno = 0; v = strtoul(str, &end, 10); if (errno != 0) - return (-EINVAL); + return -EINVAL; if (*end != '\0') { if (strncmp(frmt_sec, end, sizeof(frmt_sec)) == 0) v *= MS_PER_S; else if (strncmp(frmt_msec, end, sizeof (frmt_msec)) != 0) - return (-EINVAL); + return -EINVAL; } if (v < min || v > max) - return (-EINVAL); + return -EINVAL; *val = (uint32_t)v; - return (0); + return 0; } static int @@ -691,7 +690,7 @@ parse_args(int argc, char **argv) optarg, lgopts[option_index].name); print_usage(prgname); - return (ret); + return ret; } } @@ -704,7 +703,7 @@ parse_args(int argc, char **argv) optarg, lgopts[option_index].name); print_usage(prgname); - return (ret); + return ret; } } @@ -720,7 +719,7 @@ parse_args(int argc, char **argv) argv[optind-1] = prgname; ret = optind-1; - optind = 0; /* reset getopt lib */ + optind = 1; /* reset getopt lib */ return ret; } @@ -764,7 +763,7 @@ check_all_ports_link_status(uint8_t port_num, uint32_t port_mask) continue; } /* clear all_ports_up flag if any link down */ - if (link.link_status == 0) { + if (link.link_status == ETH_LINK_DOWN) { all_ports_up = 0; break; } @@ -928,6 +927,7 @@ init_mem(void) char buf[PATH_MAX]; struct rte_lpm *lpm; struct rte_lpm6 *lpm6; + struct rte_lpm_config lpm_config; int socket; unsigned lcore_id; @@ -947,7 +947,11 @@ init_mem(void) RTE_LOG(INFO, IP_RSMBL, "Creating LPM table on socket %i\n", socket); snprintf(buf, sizeof(buf), "IP_RSMBL_LPM_%i", socket); - lpm = rte_lpm_create(buf, socket, LPM_MAX_RULES, 0); + lpm_config.max_rules = LPM_MAX_RULES; + lpm_config.number_tbl8s = 256; + lpm_config.flags = 0; + + lpm = rte_lpm_create(buf, socket, &lpm_config); if (lpm == NULL) { RTE_LOG(ERR, IP_RSMBL, "Cannot create LPM table\n"); return -1; @@ -959,7 +963,7 @@ init_mem(void) RTE_LOG(INFO, IP_RSMBL, "Creating LPM6 table on socket %i\n", socket); snprintf(buf, sizeof(buf), "IP_RSMBL_LPM_%i", socket); - lpm6 = rte_lpm6_create("IP_RSMBL_LPM6", socket, &lpm6_config); + lpm6 = rte_lpm6_create(buf, socket, &lpm6_config); if (lpm6 == NULL) { RTE_LOG(ERR, IP_RSMBL, "Cannot create LPM table\n"); return -1; @@ -1036,9 +1040,7 @@ main(int argc, char **argv) rte_exit(EXIT_FAILURE, "Invalid IP reassembly parameters\n"); nb_ports = rte_eth_dev_count(); - if (nb_ports > RTE_MAX_ETHPORTS) - nb_ports = RTE_MAX_ETHPORTS; - else if (nb_ports == 0) + if (nb_ports == 0) rte_exit(EXIT_FAILURE, "No ports found!\n"); nb_lcores = rte_lcore_count();