get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/10250/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 10250,
    "url": "http://patches.dpdk.org/api/patches/10250/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1454069573-12059-3-git-send-email-michalx.kobylinski@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1454069573-12059-3-git-send-email-michalx.kobylinski@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1454069573-12059-3-git-send-email-michalx.kobylinski@intel.com",
    "date": "2016-01-29T12:12:53",
    "name": "[dpdk-dev,2/2] examples: update to use new lpm lib for ip4",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "86dadbee20e13da39ee5272529fbc288e7a2698c",
    "submitter": {
        "id": 322,
        "url": "http://patches.dpdk.org/api/people/322/?format=api",
        "name": "Michal Kobylinski",
        "email": "michalx.kobylinski@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1454069573-12059-3-git-send-email-michalx.kobylinski@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/10250/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/10250/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id BCC2AC64E;\n\tFri, 29 Jan 2016 13:30:03 +0100 (CET)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 72812C648\n\tfor <dev@dpdk.org>; Fri, 29 Jan 2016 13:30:01 +0100 (CET)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby orsmga101.jf.intel.com with ESMTP; 29 Jan 2016 04:30:00 -0800",
            "from gklab-246-018.igk.intel.com (HELO stargo) ([10.217.246.18])\n\tby orsmga001.jf.intel.com with SMTP; 29 Jan 2016 04:29:32 -0800",
            "by stargo (sSMTP sendmail emulation);\n\tFri, 29 Jan 2016 13:30:14 +0100"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.22,364,1449561600\"; d=\"scan'208\";a=\"871647723\"",
        "From": "Michal Kobylinski <michalx.kobylinski@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 29 Jan 2016 13:12:53 +0100",
        "Message-Id": "<1454069573-12059-3-git-send-email-michalx.kobylinski@intel.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1454069573-12059-1-git-send-email-michalx.kobylinski@intel.com>",
        "References": "<1454069573-12059-1-git-send-email-michalx.kobylinski@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 2/2] examples: update to use new lpm lib for ip4",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Update other applications to use new structures from LPM library for IPv4.\n\nSigned-off-by: Michal Kobylinski <michalx.kobylinski@intel.com>\n---\n examples/ip_fragmentation/main.c                | 23 ++++++-----\n examples/ip_reassembly/main.c                   | 22 +++++++----\n examples/l3fwd-power/main.c                     | 12 ++++--\n examples/l3fwd-vf/main.c                        | 12 ++++--\n examples/l3fwd/main.c                           | 51 ++++++++++++++++---------\n examples/load_balancer/init.c                   |  8 +++-\n examples/load_balancer/runtime.c                |  2 +-\n examples/performance-thread/l3fwd-thread/main.c | 10 +++--\n 8 files changed, 92 insertions(+), 48 deletions(-)",
    "diff": "diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c\nindex fbc0b8d..367cab2 100644\n--- a/examples/ip_fragmentation/main.c\n+++ b/examples/ip_fragmentation/main.c\n@@ -266,8 +266,8 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,\n \t\tuint8_t queueid, uint8_t port_in)\n {\n \tstruct rx_queue *rxq;\n-\tuint32_t i, len;\n-\tuint8_t next_hop, port_out, ipv6;\n+\tuint32_t i, len, next_hop_ip4;\n+\tuint8_t next_hop_ip6, port_out, ipv6;\n \tint32_t len2;\n \n \tipv6 = 0;\n@@ -291,9 +291,9 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,\n \t\tip_dst = rte_be_to_cpu_32(ip_hdr->dst_addr);\n \n \t\t/* Find destination port */\n-\t\tif (rte_lpm_lookup(rxq->lpm, ip_dst, &next_hop) == 0 &&\n-\t\t\t\t(enabled_port_mask & 1 << next_hop) != 0) {\n-\t\t\tport_out = next_hop;\n+\t\tif (rte_lpm_lookup(rxq->lpm, ip_dst, &next_hop_ip4) == 0 &&\n+\t\t\t\t(enabled_port_mask & 1 << next_hop_ip4) != 0) {\n+\t\t\tport_out = next_hop_ip4;\n \n \t\t\t/* Build transmission burst for new port */\n \t\t\tlen = qconf->tx_mbufs[port_out].len;\n@@ -327,9 +327,9 @@ l3fwd_simple_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf,\n \t\tip_hdr = rte_pktmbuf_mtod(m, struct ipv6_hdr *);\n \n \t\t/* Find destination port */\n-\t\tif (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, &next_hop) == 0 &&\n-\t\t\t\t(enabled_port_mask & 1 << next_hop) != 0) {\n-\t\t\tport_out = next_hop;\n+\t\tif (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, &next_hop_ip6) == 0 &&\n+\t\t\t\t(enabled_port_mask & 1 << next_hop_ip6) != 0) {\n+\t\t\tport_out = next_hop_ip6;\n \n \t\t\t/* Build transmission burst for new port */\n \t\t\tlen = qconf->tx_mbufs[port_out].len;\n@@ -721,6 +721,7 @@ init_mem(void)\n \tstruct rte_mempool *mp;\n \tstruct rte_lpm *lpm;\n \tstruct rte_lpm6 *lpm6;\n+\tstruct rte_lpm_config lpm_config;\n \tint socket;\n \tunsigned lcore_id;\n \n@@ -768,7 +769,11 @@ init_mem(void)\n \t\t\tRTE_LOG(INFO, IP_FRAG, \"Creating LPM table on socket %i\\n\", socket);\n \t\t\tsnprintf(buf, sizeof(buf), \"IP_FRAG_LPM_%i\", socket);\n \n-\t\t\tlpm = rte_lpm_create(buf, socket, LPM_MAX_RULES, 0);\n+\t\t\tlpm_config.max_rules = LPM6_MAX_RULES;\n+\t\t\tlpm_config.number_tbl8s = 256;\n+\t\t\tlpm_config.flags = 0;\n+\n+\t\t\tlpm = rte_lpm_create(buf, socket, &lpm_config);\n \t\t\tif (lpm == NULL) {\n \t\t\t\tRTE_LOG(ERR, IP_FRAG, \"Cannot create LPM table\\n\");\n \t\t\t\treturn -1;\ndiff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c\nindex 741c398..481f757 100644\n--- a/examples/ip_reassembly/main.c\n+++ b/examples/ip_reassembly/main.c\n@@ -347,7 +347,8 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue,\n \tstruct rte_ip_frag_death_row *dr;\n \tstruct rx_queue *rxq;\n \tvoid *d_addr_bytes;\n-\tuint8_t next_hop, dst_port;\n+\tuint32_t next_hop_ip4;\n+\tuint8_t next_hop_ip6, dst_port;\n \n \trxq = &qconf->rx_queue_list[queue];\n \n@@ -390,9 +391,9 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue,\n \t\tip_dst = rte_be_to_cpu_32(ip_hdr->dst_addr);\n \n \t\t/* Find destination port */\n-\t\tif (rte_lpm_lookup(rxq->lpm, ip_dst, &next_hop) == 0 &&\n-\t\t\t\t(enabled_port_mask & 1 << next_hop) != 0) {\n-\t\t\tdst_port = next_hop;\n+\t\tif (rte_lpm_lookup(rxq->lpm, ip_dst, &next_hop_ip4) == 0 &&\n+\t\t\t\t(enabled_port_mask & 1 << next_hop_ip4) != 0) {\n+\t\t\tdst_port = next_hop_ip4;\n \t\t}\n \n \t\teth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv4);\n@@ -427,9 +428,9 @@ reassemble(struct rte_mbuf *m, uint8_t portid, uint32_t queue,\n \t\t}\n \n \t\t/* Find destination port */\n-\t\tif (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, &next_hop) == 0 &&\n-\t\t\t\t(enabled_port_mask & 1 << next_hop) != 0) {\n-\t\t\tdst_port = next_hop;\n+\t\tif (rte_lpm6_lookup(rxq->lpm6, ip_hdr->dst_addr, &next_hop_ip6) == 0 &&\n+\t\t\t\t(enabled_port_mask & 1 << next_hop_ip6) != 0) {\n+\t\t\tdst_port = next_hop_ip6;\n \t\t}\n \n \t\teth_hdr->ether_type = rte_be_to_cpu_16(ETHER_TYPE_IPv6);\n@@ -926,6 +927,7 @@ init_mem(void)\n \tchar buf[PATH_MAX];\n \tstruct rte_lpm *lpm;\n \tstruct rte_lpm6 *lpm6;\n+\tstruct rte_lpm_config lpm_config;\n \tint socket;\n \tunsigned lcore_id;\n \n@@ -945,7 +947,11 @@ init_mem(void)\n \t\t\tRTE_LOG(INFO, IP_RSMBL, \"Creating LPM table on socket %i\\n\", socket);\n \t\t\tsnprintf(buf, sizeof(buf), \"IP_RSMBL_LPM_%i\", socket);\n \n-\t\t\tlpm = rte_lpm_create(buf, socket, LPM_MAX_RULES, 0);\n+\t\t\tlpm_config.max_rules = LPM_MAX_RULES;\n+\t\t\tlpm_config.number_tbl8s = 256;\n+\t\t\tlpm_config.flags = 0;\n+\n+\t\t\tlpm = rte_lpm_create(buf, socket, &lpm_config);\n \t\t\tif (lpm == NULL) {\n \t\t\t\tRTE_LOG(ERR, IP_RSMBL, \"Cannot create LPM table\\n\");\n \t\t\t\treturn -1;\ndiff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c\nindex 828c18a..f8a2f1b 100644\n--- a/examples/l3fwd-power/main.c\n+++ b/examples/l3fwd-power/main.c\n@@ -631,7 +631,7 @@ static inline uint8_t\n get_ipv4_dst_port(struct ipv4_hdr *ipv4_hdr, uint8_t portid,\n \t\tlookup_struct_t *ipv4_l3fwd_lookup_struct)\n {\n-\tuint8_t next_hop;\n+\tuint32_t next_hop;\n \n \treturn (uint8_t) ((rte_lpm_lookup(ipv4_l3fwd_lookup_struct,\n \t\t\trte_be_to_cpu_32(ipv4_hdr->dst_addr), &next_hop) == 0)?\n@@ -1430,9 +1430,15 @@ setup_lpm(int socketid)\n \tchar s[64];\n \n \t/* create the LPM table */\n+\tstruct rte_lpm_config lpm_ipv4_config;\n+\n+\tlpm_ipv4_config.max_rules = IPV4_L3FWD_LPM_MAX_RULES;\n+\tlpm_ipv4_config.number_tbl8s = 256;\n+\tlpm_ipv4_config.flags = 0;\n+\n \tsnprintf(s, sizeof(s), \"IPV4_L3FWD_LPM_%d\", socketid);\n-\tipv4_l3fwd_lookup_struct[socketid] = rte_lpm_create(s, socketid,\n-\t\t\t\tIPV4_L3FWD_LPM_MAX_RULES, 0);\n+\tipv4_l3fwd_lookup_struct[socketid] =\n+\t\t\trte_lpm_create(s, socketid, &lpm_ipv4_config);\n \tif (ipv4_l3fwd_lookup_struct[socketid] == NULL)\n \t\trte_exit(EXIT_FAILURE, \"Unable to create the l3fwd LPM table\"\n \t\t\t\t\" on socket %d\\n\", socketid);\ndiff --git a/examples/l3fwd-vf/main.c b/examples/l3fwd-vf/main.c\nindex 01f610e..034c22a 100644\n--- a/examples/l3fwd-vf/main.c\n+++ b/examples/l3fwd-vf/main.c\n@@ -440,7 +440,7 @@ get_dst_port(struct ipv4_hdr *ipv4_hdr,  uint8_t portid, lookup_struct_t * l3fwd\n static inline uint8_t\n get_dst_port(struct ipv4_hdr *ipv4_hdr,  uint8_t portid, lookup_struct_t * l3fwd_lookup_struct)\n {\n-\tuint8_t next_hop;\n+\tuint32_t next_hop;\n \n \treturn (uint8_t) ((rte_lpm_lookup(l3fwd_lookup_struct,\n \t\t\trte_be_to_cpu_32(ipv4_hdr->dst_addr), &next_hop) == 0)?\n@@ -869,10 +869,16 @@ setup_lpm(int socketid)\n \tint ret;\n \tchar s[64];\n \n+\tstruct rte_lpm_config lpm_ipv4_config;\n+\n+\tlpm_ipv4_config.max_rules = L3FWD_LPM_MAX_RULES;\n+\tlpm_ipv4_config.number_tbl8s = 256;\n+\tlpm_ipv4_config.flags = 0;\n+\n \t/* create the LPM table */\n \tsnprintf(s, sizeof(s), \"L3FWD_LPM_%d\", socketid);\n-\tl3fwd_lookup_struct[socketid] = rte_lpm_create(s, socketid,\n-\t\t\t\tL3FWD_LPM_MAX_RULES, 0);\n+\tl3fwd_lookup_struct[socketid] =\n+\t\t\trte_lpm_create(s, socketid, &lpm_ipv4_config);\n \tif (l3fwd_lookup_struct[socketid] == NULL)\n \t\trte_exit(EXIT_FAILURE, \"Unable to create the l3fwd LPM table\"\n \t\t\t\t\" on socket %d\\n\", socketid);\ndiff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c\nindex 21a5782..c06180b 100644\n--- a/examples/l3fwd/main.c\n+++ b/examples/l3fwd/main.c\n@@ -475,6 +475,7 @@ static struct ipv6_l3fwd_route ipv6_l3fwd_route_array[] = {\n \t(sizeof(ipv6_l3fwd_route_array) / sizeof(ipv6_l3fwd_route_array[0]))\n \n #define IPV4_L3FWD_LPM_MAX_RULES         1024\n+#define IPV4_L3FWD_LPM_NUMBER_TBL8S (1 << 8)\n #define IPV6_L3FWD_LPM_MAX_RULES         1024\n #define IPV6_L3FWD_LPM_NUMBER_TBL8S (1 << 16)\n \n@@ -711,12 +712,12 @@ get_ipv6_dst_port(void *ipv6_hdr,  uint8_t portid, lookup_struct_t * ipv6_l3fwd_\n \n #if (APP_LOOKUP_METHOD == APP_LOOKUP_LPM)\n \n-static inline uint8_t\n+static inline uint32_t\n get_ipv4_dst_port(void *ipv4_hdr,  uint8_t portid, lookup_struct_t * ipv4_l3fwd_lookup_struct)\n {\n-\tuint8_t next_hop;\n+\tuint32_t next_hop;\n \n-\treturn (uint8_t) ((rte_lpm_lookup(ipv4_l3fwd_lookup_struct,\n+\treturn (uint32_t) ((rte_lpm_lookup(ipv4_l3fwd_lookup_struct,\n \t\trte_be_to_cpu_32(((struct ipv4_hdr *)ipv4_hdr)->dst_addr),\n \t\t&next_hop) == 0) ? next_hop : portid);\n }\n@@ -1155,7 +1156,7 @@ l3fwd_simple_forward(struct rte_mbuf *m, uint8_t portid, struct lcore_conf *qcon\n  * to BAD_PORT value.\n  */\n static inline __attribute__((always_inline)) void\n-rfc1812_process(struct ipv4_hdr *ipv4_hdr, uint16_t *dp, uint32_t ptype)\n+rfc1812_process(struct ipv4_hdr *ipv4_hdr, uint32_t *dp, uint32_t ptype)\n {\n \tuint8_t ihl;\n \n@@ -1182,34 +1183,42 @@ rfc1812_process(struct ipv4_hdr *ipv4_hdr, uint16_t *dp, uint32_t ptype)\n #if ((APP_LOOKUP_METHOD == APP_LOOKUP_LPM) && \\\n \t(ENABLE_MULTI_BUFFER_OPTIMIZE == 1))\n \n-static inline __attribute__((always_inline)) uint16_t\n+static inline __attribute__((always_inline)) uint32_t\n get_dst_port(const struct lcore_conf *qconf, struct rte_mbuf *pkt,\n \tuint32_t dst_ipv4, uint8_t portid)\n {\n-\tuint8_t next_hop;\n+\tuint32_t next_hop_ipv4;\n+\tuint8_t next_hop_ipv6;\n \tstruct ipv6_hdr *ipv6_hdr;\n \tstruct ether_hdr *eth_hdr;\n \n \tif (RTE_ETH_IS_IPV4_HDR(pkt->packet_type)) {\n \t\tif (rte_lpm_lookup(qconf->ipv4_lookup_struct, dst_ipv4,\n-\t\t\t\t&next_hop) != 0)\n-\t\t\tnext_hop = portid;\n+\t\t\t\t&next_hop_ipv4) != 0)\n+\t\t\tnext_hop_ipv4 = portid;\n+\t\treturn next_hop_ipv4;\n \t} else if (RTE_ETH_IS_IPV6_HDR(pkt->packet_type)) {\n \t\teth_hdr = rte_pktmbuf_mtod(pkt, struct ether_hdr *);\n \t\tipv6_hdr = (struct ipv6_hdr *)(eth_hdr + 1);\n \t\tif (rte_lpm6_lookup(qconf->ipv6_lookup_struct,\n-\t\t\t\tipv6_hdr->dst_addr, &next_hop) != 0)\n-\t\t\tnext_hop = portid;\n+\t\t\t\tipv6_hdr->dst_addr, &next_hop_ipv6) != 0) {\n+\t\t\tnext_hop_ipv6 = portid;\n+\t\t\treturn next_hop_ipv6;\n+\t\t\t} else {\n+\t\t\t\tnext_hop_ipv6 = portid;\n+\t\t\t\treturn next_hop_ipv6;\n+\t\t\t}\n \t} else {\n-\t\tnext_hop = portid;\n+\t\tnext_hop_ipv4 = portid;\n+\t\treturn next_hop_ipv4;\n \t}\n \n-\treturn next_hop;\n+\n }\n \n static inline void\n process_packet(struct lcore_conf *qconf, struct rte_mbuf *pkt,\n-\tuint16_t *dst_port, uint8_t portid)\n+\tuint32_t *dst_port, uint8_t portid)\n {\n \tstruct ether_hdr *eth_hdr;\n \tstruct ipv4_hdr *ipv4_hdr;\n@@ -1277,9 +1286,9 @@ static inline void\n processx4_step2(const struct lcore_conf *qconf,\n \t\t__m128i dip,\n \t\tuint32_t ipv4_flag,\n-\t\tuint8_t portid,\n+\t\tuint32_t portid,\n \t\tstruct rte_mbuf *pkt[FWDSTEP],\n-\t\tuint16_t dprt[FWDSTEP])\n+\t\tuint32_t dprt[FWDSTEP])\n {\n \trte_xmm_t dst;\n \tconst  __m128i bswap_mask = _mm_set_epi8(12, 13, 14, 15, 8, 9, 10, 11,\n@@ -1305,7 +1314,7 @@ processx4_step2(const struct lcore_conf *qconf,\n  * Perform RFC1812 checks and updates for IPV4 packets.\n  */\n static inline void\n-processx4_step3(struct rte_mbuf *pkt[FWDSTEP], uint16_t dst_port[FWDSTEP])\n+processx4_step3(struct rte_mbuf *pkt[FWDSTEP], uint32_t dst_port[FWDSTEP])\n {\n \t__m128i te[FWDSTEP];\n \t__m128i ve[FWDSTEP];\n@@ -1531,7 +1540,7 @@ main_loop(__attribute__((unused)) void *dummy)\n \tint32_t k;\n \tuint16_t dlp;\n \tuint16_t *lp;\n-\tuint16_t dst_port[MAX_PKT_BURST];\n+\tuint32_t dst_port[MAX_PKT_BURST];\n \t__m128i dip[MAX_PKT_BURST / FWDSTEP];\n \tuint32_t ipv4_flag[MAX_PKT_BURST / FWDSTEP];\n \tuint16_t pnum[MAX_PKT_BURST + 1];\n@@ -2388,14 +2397,18 @@ static void\n setup_lpm(int socketid)\n {\n \tstruct rte_lpm6_config config;\n+\tstruct rte_lpm_config config_ip4;\n \tunsigned i;\n \tint ret;\n \tchar s[64];\n \n \t/* create the LPM table */\n+\tconfig_ip4.max_rules = IPV4_L3FWD_LPM_MAX_RULES;\n+\tconfig_ip4.number_tbl8s = IPV4_L3FWD_LPM_NUMBER_TBL8S;\n+\tconfig_ip4.flags = 0;\n \tsnprintf(s, sizeof(s), \"IPV4_L3FWD_LPM_%d\", socketid);\n-\tipv4_l3fwd_lookup_struct[socketid] = rte_lpm_create(s, socketid,\n-\t\t\t\tIPV4_L3FWD_LPM_MAX_RULES, 0);\n+\tipv4_l3fwd_lookup_struct[socketid] =\n+\t\t\trte_lpm_create(s, socketid, &config_ip4);\n \tif (ipv4_l3fwd_lookup_struct[socketid] == NULL)\n \t\trte_exit(EXIT_FAILURE, \"Unable to create the l3fwd LPM table\"\n \t\t\t\t\" on socket %d\\n\", socketid);\ndiff --git a/examples/load_balancer/init.c b/examples/load_balancer/init.c\nindex 5a56078..a96d778 100644\n--- a/examples/load_balancer/init.c\n+++ b/examples/load_balancer/init.c\n@@ -160,13 +160,17 @@ app_init_lpm_tables(void)\n \t\t\tcontinue;\n \t\t}\n \n+\t\tstruct rte_lpm_config lpm_config;\n+\n+\t\tlpm_config.max_rules = APP_MAX_LPM_RULES;\n+\t\tlpm_config.number_tbl8s = 256;\n+\t\tlpm_config.flags = 0;\n \t\tsnprintf(name, sizeof(name), \"lpm_table_%u\", socket);\n \t\tprintf(\"Creating the LPM table for socket %u ...\\n\", socket);\n \t\tapp.lpm_tables[socket] = rte_lpm_create(\n \t\t\tname,\n \t\t\tsocket,\n-\t\t\tAPP_MAX_LPM_RULES,\n-\t\t\t0);\n+\t\t\t&lpm_config);\n \t\tif (app.lpm_tables[socket] == NULL) {\n \t\t\trte_panic(\"Unable to create LPM table on socket %u\\n\", socket);\n \t\t}\ndiff --git a/examples/load_balancer/runtime.c b/examples/load_balancer/runtime.c\nindex 2b265c2..6944325 100644\n--- a/examples/load_balancer/runtime.c\n+++ b/examples/load_balancer/runtime.c\n@@ -525,7 +525,7 @@ app_lcore_worker(\n \t\t\tstruct rte_mbuf *pkt;\n \t\t\tstruct ipv4_hdr *ipv4_hdr;\n \t\t\tuint32_t ipv4_dst, pos;\n-\t\t\tuint8_t port;\n+\t\t\tuint32_t port;\n \n \t\t\tif (likely(j < bsz_rd - 1)) {\n \t\t\t\tAPP_WORKER_PREFETCH1(rte_pktmbuf_mtod(lp->mbuf_in.array[j+1], unsigned char *));\ndiff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c\nindex db6cb64..af7c910 100644\n--- a/examples/performance-thread/l3fwd-thread/main.c\n+++ b/examples/performance-thread/l3fwd-thread/main.c\n@@ -838,7 +838,7 @@ static inline uint8_t\n get_ipv4_dst_port(void *ipv4_hdr, uint8_t portid,\n \t\tlookup_struct_t *ipv4_l3fwd_lookup_struct)\n {\n-\tuint8_t next_hop;\n+\tuint32_t next_hop;\n \n \treturn (uint8_t)((rte_lpm_lookup(ipv4_l3fwd_lookup_struct,\n \t\trte_be_to_cpu_32(((struct ipv4_hdr *)ipv4_hdr)->dst_addr),\n@@ -3244,14 +3244,18 @@ static void\n setup_lpm(int socketid)\n {\n \tstruct rte_lpm6_config config;\n+\tstruct rte_lpm_config lpm_ipv4_config;\n \tunsigned i;\n \tint ret;\n \tchar s[64];\n \n \t/* create the LPM table */\n \tsnprintf(s, sizeof(s), \"IPV4_L3FWD_LPM_%d\", socketid);\n-\tipv4_l3fwd_lookup_struct[socketid] = rte_lpm_create(s, socketid,\n-\t\t\t\tIPV4_L3FWD_LPM_MAX_RULES, 0);\n+\tlpm_ipv4_config.max_rules = IPV4_L3FWD_LPM_MAX_RULES;\n+\tlpm_ipv4_config.number_tbl8s = 256;\n+\tlpm_ipv4_config.flags = 0;\n+\tipv4_l3fwd_lookup_struct[socketid] =\n+\t\t\trte_lpm_create(s, socketid, &lpm_ipv4_config);\n \tif (ipv4_l3fwd_lookup_struct[socketid] == NULL)\n \t\trte_exit(EXIT_FAILURE, \"Unable to create the l3fwd LPM table\"\n \t\t\t\t\" on socket %d\\n\", socketid);\n",
    "prefixes": [
        "dpdk-dev",
        "2/2"
    ]
}