X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fsample_app_ug%2Fipv4_multicast.rst;h=3e30f5090e6857d4ac421ae23cd869b0516f6a6a;hb=8526571400ff2d81b6d9f93873bb706b7d6dcb39;hp=ec760871229f35c1430e7dc4476e3c806a544515;hpb=693f715da45c48ec1ec0fe4ba2f3b5ffd11ba53e;p=dpdk.git diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst index ec76087122..3e30f5090e 100644 --- a/doc/guides/sample_app_ug/ipv4_multicast.rst +++ b/doc/guides/sample_app_ug/ipv4_multicast.rst @@ -39,8 +39,7 @@ Overview -------- The application demonstrates the use of zero-copy buffers for packet forwarding. -The initialization and run-time paths are very similar to those of the L2 forwarding application -(see Chapter 9 "L2 Forwarding Sample Application (in Real and Virtualized Environments)" for details more information). +The initialization and run-time paths are very similar to those of the :doc:`l2_forward_real_virtual`. This guide highlights the differences between the two applications. There are two key differences from the L2 Forwarding sample application: @@ -114,7 +113,7 @@ Typically, to run the IPv4 Multicast sample application, issue the following com .. code-block:: console - ./build/ipv4_multicast -c 0x00f -n 3 -- -p 0x3 -q 1 + ./build/ipv4_multicast -l 0-3 -n 3 -- -p 0x3 -q 1 In this command: @@ -134,8 +133,7 @@ Explanation The following sections provide some explanation of the code. As mentioned in the overview section, -the initialization and run-time paths are very similar to those of the L2 Forwarding sample application -(see Chapter 9 "L2 Forwarding Sample Application in Real and Virtualized Environments" for more information). +the initialization and run-time paths are very similar to those of the :doc:`l2_forward_real_virtual`. The following sections describe aspects that are specific to the IPv4 Multicast sample application. Memory Pool Initialization @@ -147,12 +145,12 @@ Memory pools for indirect buffers are initialized differently from the memory po .. code-block:: c - packet_pool = rte_mempool_create("packet_pool", NB_PKT_MBUF, PKT_MBUF_SIZE, 32, sizeof(struct rte_pktmbuf_pool_private), - rte_pktmbuf_pool_init, NULL, rte_pktmbuf_init, NULL, rte_socket_id(), 0); - - header_pool = rte_mempool_create("header_pool", NB_HDR_MBUF, HDR_MBUF_SIZE, 32, 0, NULL, NULL, rte_pktmbuf_init, NULL, rte_socket_id(), 0); - clone_pool = rte_mempool_create("clone_pool", NB_CLONE_MBUF, - CLONE_MBUF_SIZE, 32, 0, NULL, NULL, rte_pktmbuf_init, NULL, rte_socket_id(), 0); + packet_pool = rte_pktmbuf_pool_create("packet_pool", NB_PKT_MBUF, 32, + 0, PKT_MBUF_DATA_SIZE, rte_socket_id()); + header_pool = rte_pktmbuf_pool_create("header_pool", NB_HDR_MBUF, 32, + 0, HDR_MBUF_DATA_SIZE, rte_socket_id()); + clone_pool = rte_pktmbuf_pool_create("clone_pool", NB_CLONE_MBUF, 32, + 0, 0, rte_socket_id()); The reason for this is because indirect buffers are not supposed to hold any packet data and therefore can be initialized with lower amount of reserved memory for each buffer. @@ -195,7 +193,7 @@ Firstly, the Ethernet* header is removed from the packet and the IPv4 address is /* Remove the Ethernet header from the input packet */ iphdr = (struct ipv4_hdr *)rte_pktmbuf_adj(m, sizeof(struct ether_hdr)); - RTE_MBUF_ASSERT(iphdr != NULL); + RTE_ASSERT(iphdr != NULL); dest_addr = rte_be_to_cpu_32(iphdr->dst_addr); Then, the packet is checked to see if it has a multicast destination address and @@ -273,7 +271,7 @@ The actual packet transmission is done in the mcast_send_pkt() function: ethdr = (struct ether_hdr *)rte_pktmbuf_prepend(pkt, (uint16_t) sizeof(*ethdr)); - RTE_MBUF_ASSERT(ethdr != NULL); + RTE_ASSERT(ethdr != NULL); ether_addr_copy(dest_addr, ðdr->d_addr); ether_addr_copy(&ports_eth_addr[port], ðdr->s_addr);