Reviewed-by: Balasubramanian Manoharan <bala.manoha...@linaro.org>

On 18 March 2016 at 14:02, Elo, Matias (Nokia - FI/Espoo) <
matias....@nokia.com> wrote:

> Ping.
>
> > -----Original Message-----
> > From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of
> EXT Matias
> > Elo
> > Sent: Friday, March 11, 2016 2:48 PM
> > To: lng-odp@lists.linaro.org
> > Subject: [lng-odp] [PATCH] linux-generic: dpdk: add packet
> classification support
> >
> > Add packet classification support using _odp_packet_cls_enq
> > helper function.
> >
> > Signed-off-by: Matias Elo <matias....@nokia.com>
> > ---
> >  platform/linux-generic/pktio/dpdk.c | 54
> +++++++++++++++++++++--------------
> > --
> >  1 file changed, 31 insertions(+), 23 deletions(-)
> >
> > diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-
> > generic/pktio/dpdk.c
> > index a39e7dc..3b65d97 100644
> > --- a/platform/linux-generic/pktio/dpdk.c
> > +++ b/platform/linux-generic/pktio/dpdk.c
> > @@ -554,6 +554,7 @@ static inline int mbuf_to_pkt(pktio_entry_t
> *pktio_entry,
> >       struct rte_mbuf *mbuf;
> >       void *buf;
> >       int i, j;
> > +     int nb_pkts = 0;
> >
> >       for (i = 0; i < num; i++) {
> >               mbuf = mbuf_table[i];
> > @@ -567,37 +568,44 @@ static inline int mbuf_to_pkt(pktio_entry_t
> > *pktio_entry,
> >
> >               pkt_len = rte_pktmbuf_pkt_len(mbuf);
> >
> > -             pkt = packet_alloc(pktio_entry->s.pkt_dpdk.pool, pkt_len,
> 1);
> > -             if (pkt == ODP_PACKET_INVALID) {
> > -                     ODP_ERR("packet_alloc failed\n");
> > -                     goto fail;
> > -             }
> > +             if (pktio_cls_enabled(pktio_entry)) {
> > +                     if (_odp_packet_cls_enq(pktio_entry,
> > +                                             (const uint8_t *)buf,
> pkt_len,
> > +                                             &pkt_table[nb_pkts]))
> > +                             nb_pkts++;
> > +             } else {
> > +                     pkt = packet_alloc(pktio_entry->s.pkt_dpdk.pool,
> > +                                        pkt_len, 1);
> > +                     if (pkt == ODP_PACKET_INVALID) {
> > +                             ODP_ERR("packet_alloc failed\n");
> > +                             goto fail;
> > +                     }
> >
> > -             pkt_hdr = odp_packet_hdr(pkt);
> > +                     pkt_hdr = odp_packet_hdr(pkt);
> >
> > -             /* For now copy the data in the mbuf,
> > -                worry about zero-copy later */
> > -             if (odp_packet_copydata_in(pkt, 0, pkt_len, buf) != 0) {
> > -                     ODP_ERR("odp_packet_copydata_in failed\n");
> > -                     odp_packet_free(pkt);
> > -                     goto fail;
> > -             }
> > +                     /* For now copy the data in the mbuf,
> > +                        worry about zero-copy later */
> > +                     if (odp_packet_copydata_in(pkt, 0, pkt_len, buf)
> != 0) {
> > +                             ODP_ERR("odp_packet_copydata_in failed\n");
> > +                             odp_packet_free(pkt);
> > +                             goto fail;
> > +                     }
> >
> > -             packet_parse_l2(pkt_hdr);
> > +                     packet_parse_l2(pkt_hdr);
> >
> > -             pkt_hdr->input = pktio_entry->s.handle;
> > +                     pkt_hdr->input = pktio_entry->s.handle;
> >
> > -             if (mbuf->ol_flags & PKT_RX_RSS_HASH) {
> > -                     pkt_hdr->has_hash = 1;
> > -                     pkt_hdr->flow_hash = mbuf->hash.rss;
> > -             }
> > -
> > -             pkt_table[i] = pkt;
> > +                     if (mbuf->ol_flags & PKT_RX_RSS_HASH) {
> > +                             pkt_hdr->has_hash = 1;
> > +                             pkt_hdr->flow_hash = mbuf->hash.rss;
> > +                     }
> >
> > +                     pkt_table[nb_pkts++] = pkt;
> > +             }
> >               rte_pktmbuf_free(mbuf);
> >       }
> >
> > -     return i;
> > +     return nb_pkts;
> >
> >  fail:
> >       ODP_ERR("Creating ODP packet failed\n");
> > @@ -653,7 +661,7 @@ static int dpdk_recv_queue(pktio_entry_t
> *pktio_entry,
> >  {
> >       pkt_dpdk_t *pkt_dpdk = &pktio_entry->s.pkt_dpdk;
> >       pkt_cache_t *rx_cache = &pkt_dpdk->rx_cache[index];
> > -     uint16_t nb_rx;
> > +     int nb_rx;
> >       struct rte_mbuf *rx_mbufs[num];
> >       int i;
> >       unsigned cache_idx;
> > --
> > 1.9.1
> >
> > _______________________________________________
> > lng-odp mailing list
> > lng-odp@lists.linaro.org
> > https://lists.linaro.org/mailman/listinfo/lng-odp
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to