X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_fragmentation%2Fmain.c;h=f8b3033466ff864fb4d182307c1643c5c6940a65;hb=24ac604ef7469eb5773c2504b313dd00257f8df3;hp=8d789b417ebaa61351fb130c926d97f6be9a926f;hpb=73d2c1d3f33c63410645548809b18de97e563c07;p=dpdk.git diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c index 8d789b417e..f8b3033466 100644 --- a/examples/ip_fragmentation/main.c +++ b/examples/ip_fragmentation/main.c @@ -52,14 +52,22 @@ * Default byte size for the IPv6 Maximum Transfer Unit (MTU). * This value includes the size of IPv6 header. */ -#define IPV4_MTU_DEFAULT ETHER_MTU -#define IPV6_MTU_DEFAULT ETHER_MTU +#define IPV4_MTU_DEFAULT RTE_ETHER_MTU +#define IPV6_MTU_DEFAULT RTE_ETHER_MTU + +/* + * The overhead from max frame size to MTU. + * We have to consider the max possible overhead. + */ +#define MTU_OVERHEAD \ + (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + \ + 2 * sizeof(struct rte_vlan_hdr)) /* * Default payload in bytes for the IPv6 packet. */ -#define IPV4_DEFAULT_PAYLOAD (IPV4_MTU_DEFAULT - sizeof(struct ipv4_hdr)) -#define IPV6_DEFAULT_PAYLOAD (IPV6_MTU_DEFAULT - sizeof(struct ipv6_hdr)) +#define IPV4_DEFAULT_PAYLOAD (IPV4_MTU_DEFAULT - sizeof(struct rte_ipv4_hdr)) +#define IPV6_DEFAULT_PAYLOAD (IPV6_MTU_DEFAULT - sizeof(struct rte_ipv6_hdr)) /* * Max number of fragments per packet expected - defined by config file. @@ -83,7 +91,7 @@ static uint16_t nb_rxd = RTE_TEST_RX_DESC_DEFAULT; static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT; /* ethernet addresses of ports */ -static struct ether_addr ports_eth_addr[RTE_MAX_ETHPORTS]; +static struct rte_ether_addr ports_eth_addr[RTE_MAX_ETHPORTS]; #ifndef IPv4_BYTES #define IPv4_BYTES_FMT "%" PRIu8 ".%" PRIu8 ".%" PRIu8 ".%" PRIu8 @@ -161,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}, }; /* @@ -245,17 +253,17 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf, port_out = port_in; /* Remove the Ethernet header and trailer from the input packet */ - rte_pktmbuf_adj(m, (uint16_t)sizeof(struct ether_hdr)); + rte_pktmbuf_adj(m, (uint16_t)sizeof(struct rte_ether_hdr)); /* Build transmission burst */ len = qconf->tx_mbufs[port_out].len; /* if this is an IPv4 packet */ if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) { - struct ipv4_hdr *ip_hdr; + struct rte_ipv4_hdr *ip_hdr; uint32_t ip_dst; /* Read the lookup key (i.e. ip_dst) from the input packet */ - ip_hdr = rte_pktmbuf_mtod(m, struct ipv4_hdr *); + ip_hdr = rte_pktmbuf_mtod(m, struct rte_ipv4_hdr *); ip_dst = rte_be_to_cpu_32(ip_hdr->dst_addr); /* Find destination port */ @@ -287,12 +295,12 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf, } } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) { /* if this is an IPv6 packet */ - struct ipv6_hdr *ip_hdr; + struct rte_ipv6_hdr *ip_hdr; ipv6 = 1; /* Read the lookup key (i.e. ip_dst) from the input packet */ - ip_hdr = rte_pktmbuf_mtod(m, struct ipv6_hdr *); + ip_hdr = rte_pktmbuf_mtod(m, struct rte_ipv6_hdr *); /* Find destination port */ if (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, @@ -333,24 +341,28 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf, void *d_addr_bytes; m = qconf->tx_mbufs[port_out].m_table[i]; - struct ether_hdr *eth_hdr = (struct ether_hdr *) - rte_pktmbuf_prepend(m, (uint16_t)sizeof(struct ether_hdr)); + struct rte_ether_hdr *eth_hdr = (struct rte_ether_hdr *) + rte_pktmbuf_prepend(m, + (uint16_t)sizeof(struct rte_ether_hdr)); if (eth_hdr == NULL) { rte_panic("No headroom in mbuf.\n"); } - m->l2_len = sizeof(struct ether_hdr); + m->l2_len = sizeof(struct rte_ether_hdr); /* 02:00:00:00:00:xx */ d_addr_bytes = ð_hdr->d_addr.addr_bytes[0]; *((uint64_t *)d_addr_bytes) = 0x000000000002 + ((uint64_t)port_out << 40); /* src addr */ - ether_addr_copy(&ports_eth_addr[port_out], ð_hdr->s_addr); + rte_ether_addr_copy(&ports_eth_addr[port_out], + ð_hdr->s_addr); if (ipv6) - 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); else - 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); } len += len2; @@ -561,10 +573,10 @@ parse_args(int argc, char **argv) } static void -print_ethaddr(const char *name, struct ether_addr *eth_addr) +print_ethaddr(const char *name, struct rte_ether_addr *eth_addr) { - char buf[ETHER_ADDR_FMT_SIZE]; - 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); } @@ -662,15 +674,15 @@ check_ptype(int portid) static inline void parse_ptype(struct rte_mbuf *m) { - struct ether_hdr *eth_hdr; + struct rte_ether_hdr *eth_hdr; uint32_t packet_type = RTE_PTYPE_UNKNOWN; uint16_t ether_type; - eth_hdr = rte_pktmbuf_mtod(m, struct ether_hdr *); + eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *); ether_type = eth_hdr->ether_type; - if (ether_type == rte_cpu_to_be_16(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(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; @@ -938,7 +950,7 @@ main(int argc, char **argv) /* set the mtu to the maximum received packet size */ ret = rte_eth_dev_set_mtu(portid, - local_port_conf.rxmode.max_rx_pkt_len); + local_port_conf.rxmode.max_rx_pkt_len - MTU_OVERHEAD); if (ret < 0) { printf("\n"); rte_exit(EXIT_FAILURE, "Set MTU failed: "