aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2017-08-17 21:36:40 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2017-08-19 21:19:25 +0300
commitaecb3c7a442b426761f1e6f43308a1e9ea709ef3 (patch)
tree902d6f0c82d29905a2d0618146a9bcc789371be6
parentcb58da98065d255a23b80fe7f00412b1049c3b2c (diff)
downloadodp-master.tar.gz
linux-gen: pktio: loop: fix recv if classier bit is enabledHEADmaster
Do not use fake header and just classify recived patched from loop ring. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
-rw-r--r--platform/linux-generic/pktio/loop.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index c825393..68abb6d 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -58,7 +58,6 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_buffer_hdr_t *hdr_tbl[QUEUE_MULTI_MAX];
queue_t queue;
odp_packet_hdr_t *pkt_hdr;
- odp_packet_hdr_t parsed_hdr;
odp_packet_t pkt;
odp_time_t ts_val;
odp_time_t *ts = NULL;
@@ -84,7 +83,7 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
pkt = packet_from_buf_hdr(hdr_tbl[i]);
pkt_len = odp_packet_len(pkt);
-
+ pkt_hdr = odp_packet_hdr(pkt);
if (pktio_cls_enabled(pktio_entry)) {
odp_packet_t new_pkt;
@@ -106,14 +105,16 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
} else {
pkt_addr = odp_packet_data(pkt);
}
+
ret = cls_classify_packet(pktio_entry, pkt_addr,
pkt_len, seg_len,
- &new_pool, &parsed_hdr);
+ &new_pool, pkt_hdr);
if (ret) {
failed++;
odp_packet_free(pkt);
continue;
}
+
if (new_pool != odp_packet_pool(pkt)) {
new_pkt = odp_packet_copy(pkt, new_pool);
@@ -125,21 +126,14 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
}
pkt = new_pkt;
}
- }
- pkt_hdr = odp_packet_hdr(pkt);
-
- pkt_hdr->input = pktio_entry->s.handle;
-
- if (pktio_cls_enabled(pktio_entry))
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
- else
+ } else {
packet_parse_layer(pkt_hdr,
pktio_entry->s.config.parser.layer);
+ }
packet_set_ts(pkt_hdr, ts);
-
+ pkt_hdr->input = pktio_entry->s.handle;
pktio_entry->s.stats.in_octets += pkt_len;
-
pkts[num_rx++] = pkt;
}