Hi,

I didn't had any particular reason to use 1.8, I just started using the master branch. I've marked it EXPERIMENTAL because I know the master branch in rc1 stage right now, I just sent this in so when someone starts the move to 1.8, (s)he can spare this work.

Regards,

Zoltan

On 10/11/14 14:10, Venkatesh Vivekanandan wrote:
Hi Zoltan,

Looking at the changes, these seems to be based on v1.8.0-rc1 DPDK code.
Unfortunately, ODP still supports 1.6.0-rc2 of DPDK./ I would suggest to
put this patch on-hold /and revisit once ODP supports v1.8.0-rc1 and
above. Can you please let me know if you are looking for any specific
project or customer request?. In any case, am planning to pull DPDK to
1.8.0 shortly. Any effort to get ODP working(l2fwd, ipsec & pktio apps)
with DPDK 1.8.0 is also welcome!.

I tried to apply your patch on ODP compiled with latest DPDK v1.8.0-rc1.
l2fwd app was failing and the reason being rte_pmd_init_all is obsoleted
from 1.7.0 and pci probe doesn't happen anymore. We should find a way to
fix this cleanly and am working towards that.

Thanks,
Venkatesh.

On 7 November 2014 20:26, Venkatesh Vivekanandan
<[email protected]
<mailto:[email protected]>> wrote:



    On 6 November 2014 22:30, Mike Holmes <[email protected]
    <mailto:[email protected]>> wrote:

        Venki can you please review this for inclusion in the DPDK repo.


    Sure will look at it and give my comments.


        Mike

        On 4 November 2014 12:38, Zoltan Kiss <[email protected]
        <mailto:[email protected]>> wrote:

            The following commits changed the master branch of DPDK:

            http://dpdk.org/browse/dpdk/commit/?id=7869536f
            http://dpdk.org/browse/dpdk/commit/?id=ca04aaea
            http://dpdk.org/browse/dpdk/commit/?id=08b563ff
            http://dpdk.org/browse/dpdk/commit/?id=ea672a8b
            http://dpdk.org/browse/dpdk/commit/?id=9aaccf1a
            http://dpdk.org/browse/dpdk/commit/?id=e5ffdd14
            http://dpdk.org/browse/dpdk/commit/?id=591a9d79

            This patch adjust the code to these changes.

            Signed-off-by: Zoltan Kiss <[email protected]
            <mailto:[email protected]>>
            diff --git a/platform/linux-dpdk/odp_buffer.c
            b/platform/linux-dpdk/odp_buffer.c
            index 4914ca2..b586fa2 100644
            --- a/platform/linux-dpdk/odp_buffer.c
            +++ b/platform/linux-dpdk/odp_buffer.c
            @@ -69,8 +69,6 @@ int odp_buffer_snprint(char *str, size_t
            n, odp_buffer_t buf)
                     len += snprintf(&str[len], n-len,
                                     "  ref_count    %i\n",
            hdr->mb.refcnt);
                     len += snprintf(&str[len], n-len,
            -                       "  dpdk type    %i\n",
            hdr->mb.type);
            -       len += snprintf(&str[len], n-len,
                                     "  odp type     %i\n",
            hdr->type);

                     return len;
            diff --git a/platform/linux-dpdk/odp_buffer_pool.c
            b/platform/linux-dpdk/odp_buffer_pool.c
            index 8325b9e..e2183d6 100644
            --- a/platform/linux-dpdk/odp_buffer_pool.c
            +++ b/platform/linux-dpdk/odp_buffer_pool.c
            @@ -169,18 +169,18 @@ odp_dpdk_mbuf_ctor(struct rte_mempool *mp,
                     /* keep some headroom between start of buffer and
            data */
                     if (mb_ctor_arg->buf_type == ODP_BUFFER_TYPE_PACKET ||
                         mb_ctor_arg->buf_type == ODP_BUFFER_TYPE_ANY)
            -               mb->pkt.data = (char *)mb->buf_addr +
            RTE_PKTMBUF_HEADROOM;
            +               mb->data_off = RTE_PKTMBUF_HEADROOM;
                     else
            -               mb->pkt.data = mb->buf_addr;
            +               mb->data_off = 0;

                     /* init some constant fields */
            -       mb->type         = RTE_MBUF_PKT;
                     mb->pool         = mp;
            -       mb->pkt.nb_segs  = 1;
            -       mb->pkt.in_port  = 0xff;
            +       mb->nb_segs  = 1;
            +       mb->port  = 0xff;
                     mb->ol_flags     = 0;
            -       mb->pkt.vlan_macip.data = 0;
            -       mb->pkt.hash.rss = 0;
            +       mb->l2_l3_len = 0;
            +       mb->vlan_tci = 0;
            +       mb->hash.rss = 0;

                     /* Save index, might be useful for debugging
            purposes */
                     buf_hdr = (struct odp_buffer_hdr_t *)raw_mbuf;
            @@ -282,5 +282,5 @@ void odp_buffer_free(odp_buffer_t buf)

              void odp_buffer_pool_print(odp_buffer_pool_t pool_id)
              {
            -       rte_mempool_dump((const struct rte_mempool *)pool_id);
            +       rte_mempool_dump(stdout, (const struct rte_mempool
            *)pool_id);
              }
            diff --git a/platform/linux-dpdk/odp_init.c
            b/platform/linux-dpdk/odp_init.c
            index ecc2066..97f8b21 100644
            --- a/platform/linux-dpdk/odp_init.c
            +++ b/platform/linux-dpdk/odp_init.c
            @@ -37,11 +37,6 @@ int odp_init_dpdk(void)
                             return -1;
                     }

            -       if (rte_pmd_init_all() < 0) {
            -               ODP_ERR("Cannot init pmd\n");
            -               return -1;
            -       }
            -
                     if (rte_eal_pci_probe() < 0) {
                             ODP_ERR("Cannot probe PCI\n");
                             return -1;
            diff --git a/platform/linux-dpdk/odp_packet.c
            b/platform/linux-dpdk/odp_packet.c
            index 1cd190d..0586538 100644
            --- a/platform/linux-dpdk/odp_packet.c
            +++ b/platform/linux-dpdk/odp_packet.c
            @@ -51,14 +51,12 @@ static int
            odp_packet_set_offset_len(odp_packet_t pkt, size_t frame_offset,
                                                  size_t len)
              {
                     struct rte_mbuf *mb =
            &(odp_packet_hdr(pkt)->buf_hdr.mb);
            -       uint16_t offset;
            +       uint16_t offset = mb->data_off;
                     uint16_t data_len;

                     /* The pkt buf may have been pulled back into the
            headroom
                      * so we cannot rely on finding the data right
            after the
                      * ODP header and HEADROOM */
            -       offset = (uint16_t)((unsigned long)mb->pkt.data -
            -                           (unsigned long)mb->buf_addr);
                     ODP_ASSERT(mb->buf_len >= offset, "Corrupted mbuf");
                     data_len = mb->buf_len - offset;

            @@ -66,14 +64,14 @@ static int
            odp_packet_set_offset_len(odp_packet_t pkt, size_t frame_offset,
                             ODP_ERR("Frame offset too big");
                             return -1;
                     }
            -       mb->pkt.data = (void *)((char *)mb->pkt.data +
            frame_offset);
            +       mb->data_off += frame_offset;
                     data_len -= frame_offset;

                     if (data_len < len) {
                             ODP_ERR("Packet len too big");
                             return -1;
                     }
            -       mb->pkt.pkt_len = len;
            +       mb->pkt_len = len;

                     return 0;
              }
            @@ -86,7 +84,7 @@ void odp_packet_set_len(odp_packet_t pkt,
            size_t len)
              size_t odp_packet_get_len(odp_packet_t pkt)
              {
                     struct rte_mbuf *mb =
            &(odp_packet_hdr(pkt)->buf_hdr.mb);
            -       return mb->pkt.pkt_len;
            +       return mb->pkt_len;
              }

              uint8_t *odp_packet_buf_addr(odp_packet_t pkt)
            @@ -97,7 +95,7 @@ uint8_t *odp_packet_buf_addr(odp_packet_t pkt)
              uint8_t *odp_packet_start(odp_packet_t pkt)
              {
                     struct rte_mbuf *mb =
            &(odp_packet_hdr(pkt)->buf_hdr.mb);
            -       return mb->pkt.data;
            +       return ((uint8_t *)(mb->buf_addr) + mb->data_off);
              }


            @@ -360,13 +358,13 @@ void odp_packet_print(odp_packet_t pkt)
                     len += snprintf(&str[len], n-len,
                                     "  l4_offset    %u\n", hdr->l4_offset);
                     len += snprintf(&str[len], n-len,
            -                       "  frame_len    %u\n",
            hdr->buf_hdr.mb.pkt.pkt_len);
            +                       "  frame_len    %u\n",
            hdr->buf_hdr.mb.pkt_len);
                     len += snprintf(&str[len], n-len,
                                     "  input        %u\n", hdr->input);
                     str[len] = '\0';

                     printf("\n%s\n", str);
            -       rte_pktmbuf_dump(&hdr->buf_hdr.mb, 32);
            +       rte_pktmbuf_dump(stdout, &hdr->buf_hdr.mb, 32);

                     p = odp_packet_start(pkt);
                     printf("00000000: %02X %02X %02X %02X %02X %02X
            %02X %02X\n",
            @@ -393,12 +391,12 @@ int odp_packet_copy(odp_packet_t
            pkt_dst, odp_packet_t pkt_src)
                     mb_dst = &(odp_packet_hdr(pkt_dst)->buf_hdr.mb);
                     mb_src = &(odp_packet_hdr(pkt_src)->buf_hdr.mb);

            -       if (mb_dst->pkt.nb_segs != mb_src->pkt.nb_segs) {
            +       if (mb_dst->nb_segs != mb_src->nb_segs) {
                             ODP_ERR("Different nb_segs in pkt_dst and
            pkt_src");
                             return -1;
                     }

            -       nb_segs = mb_src->pkt.nb_segs;
            +       nb_segs = mb_src->nb_segs;

                     if (mb_dst->buf_len < mb_src->buf_len) {
                             ODP_ERR("dst_pkt smaller than src_pkt");
            @@ -411,8 +409,8 @@ int odp_packet_copy(odp_packet_t
            pkt_dst, odp_packet_t pkt_src)
                                     return -1;
                             }
                             memcpy(mb_dst->buf_addr, mb_src->buf_addr,
            mb_src->buf_len);
            -               mb_dst = mb_dst->pkt.next;
            -               mb_src = mb_src->pkt.next;
            +               mb_dst = mb_dst->next;
            +               mb_src = mb_src->next;
                     }
                     return 0;
              }
            diff --git a/platform/linux-dpdk/odp_packet_dpdk.c
            b/platform/linux-dpdk/odp_packet_dpdk.c
            index 9fe4bbd..94653d4 100644
            --- a/platform/linux-dpdk/odp_packet_dpdk.c
            +++ b/platform/linux-dpdk/odp_packet_dpdk.c
            @@ -167,7 +167,7 @@ int recv_pkt_dpdk(pkt_dpdk_t * const
            pkt_dpdk, odp_packet_t pkt_table[],
                     for (i = 0; i < nb_rx; i++) {
                             odp_packet_hdr_t *pkt_hdr =
            odp_packet_hdr(pkt_table[i]);
                             struct rte_mbuf *mb = &pkt_hdr->buf_hdr.mb;
            -               odp_packet_parse(pkt_table[i],
            mb->pkt.pkt_len, 0);
            +               odp_packet_parse(pkt_table[i], mb->pkt_len, 0);
                     }
                     return nb_rx;
              }

            _______________________________________________
            lng-odp mailing list
            [email protected] <mailto:[email protected]>
            http://lists.linaro.org/mailman/listinfo/lng-odp




        --
        *Mike Holmes*
        Linaro  Sr Technical Manager
        LNG - ODP

        _______________________________________________
        lng-odp mailing list
        [email protected] <mailto:[email protected]>
        http://lists.linaro.org/mailman/listinfo/lng-odp




_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to