This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 7cefeec60b27d96cc6a62f2579dddc56d80846ed (commit) via a8cc1677b95448509bbc0258734c4a0c6465a2ae (commit) from 0f6ebf74b3f77bf7e02558778e32d317cb983393 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 7cefeec60b27d96cc6a62f2579dddc56d80846ed Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Oct 10 09:50:05 2018 +0300
validation: cls: interleave tcp test flows
For better test coverage send two packet flows interleaved (in two/three packet patches). Also check that a received packet is from the correct queue.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/validation/api/classification/odp_classification_test_pmr.c b/test/validation/api/classification/odp_classification_test_pmr.c index b0da2c5c..4b90d783 100644 --- a/test/validation/api/classification/odp_classification_test_pmr.c +++ b/test/validation/api/classification/odp_classification_test_pmr.c @@ -191,7 +191,7 @@ static void _classification_test_pmr_term_tcp_dport(int num_pkt) uint32_t seqno[num_pkt]; uint16_t val; uint16_t mask; - int retval, i, num_queue, num_default; + int retval, i, sent_queue, recv_queue, sent_default, recv_default; odp_pktio_t pktio; odp_queue_t queue; odp_queue_t retqueue; @@ -295,6 +295,9 @@ static void _classification_test_pmr_term_tcp_dport(int num_pkt) odp_packet_free(pkt); }
+ sent_queue = 0; + sent_default = 0; + /* Both queues simultaneously */ for (i = 0; i < 2 * num_pkt; i++) { pkt = create_packet(default_pkt_info); @@ -305,32 +308,41 @@ static void _classification_test_pmr_term_tcp_dport(int num_pkt)
tcp = (odph_tcphdr_t *)odp_packet_l4_ptr(pkt, NULL);
- if (i < num_pkt) + if ((i % 5) < 2) { + sent_queue++; tcp->dst_port = odp_cpu_to_be_16(CLS_DEFAULT_DPORT); - else + } else { + sent_default++; tcp->dst_port = odp_cpu_to_be_16(CLS_DEFAULT_DPORT + 1); + }
enqueue_pktio_interface(pkt, pktio); }
- num_queue = 0; - num_default = 0; + recv_queue = 0; + recv_default = 0;
for (i = 0; i < 2 * num_pkt; i++) { pkt = receive_packet(&retqueue, ODP_TIME_SEC_IN_NS); CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID); CU_ASSERT(retqueue == queue || retqueue == default_queue);
- if (retqueue == queue) - num_queue++; - else if (retqueue == default_queue) - num_default++; + tcp = (odph_tcphdr_t *)odp_packet_l4_ptr(pkt, NULL);
+ if (retqueue == queue) { + recv_queue++; + CU_ASSERT(tcp->dst_port == + odp_cpu_to_be_16(CLS_DEFAULT_DPORT)); + } else if (retqueue == default_queue) { + recv_default++; + CU_ASSERT(tcp->dst_port == + odp_cpu_to_be_16(CLS_DEFAULT_DPORT + 1)); + } odp_packet_free(pkt); }
- CU_ASSERT(num_queue == num_pkt); - CU_ASSERT(num_default == num_pkt); + CU_ASSERT(sent_queue == recv_queue); + CU_ASSERT(sent_default == recv_default);
odp_cos_destroy(cos); odp_cos_destroy(default_cos); @@ -1988,7 +2000,7 @@ static void classification_test_pmr_term_ipv6saddr(void)
static void classification_test_pmr_term_tcp_dport(void) { - _classification_test_pmr_term_tcp_dport(1); + _classification_test_pmr_term_tcp_dport(2); }
static void classification_test_pmr_term_tcp_dport_multi(void)
commit a8cc1677b95448509bbc0258734c4a0c6465a2ae Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Oct 10 10:12:37 2018 +0300
linux-gen: pktio: fix index calculation of multiple dest_queue
Packets to different destination queues interleaved resulted bad indexes when pktin_recv_buf() was recording which packets belong to the same dest_queue.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 26be844c..92c14cc2 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -614,7 +614,7 @@ static inline int pktin_recv_buf(pktio_entry_t *entry, int pktin_index, odp_packet_t packets[num]; odp_packet_hdr_t *pkt_hdr; odp_buffer_hdr_t *buf_hdr; - int i, pkts, num_rx, num_ev, num_dst, num_cur, cur_dst; + int i, pkts, num_rx, num_ev, num_dst; odp_queue_t cur_queue; odp_event_t ev[num]; odp_queue_t dst[num]; @@ -622,6 +622,10 @@ static inline int pktin_recv_buf(pktio_entry_t *entry, int pktin_index,
num_rx = 0; num_dst = 0; + num_ev = 0; + + /* Some compilers need this dummy initialization */ + cur_queue = ODP_QUEUE_INVALID;
pkts = entry->s.ops->recv(entry, pktin_index, packets, num);
@@ -632,29 +636,23 @@ static inline int pktin_recv_buf(pktio_entry_t *entry, int pktin_index,
if (odp_unlikely(pkt_hdr->p.input_flags.dst_queue)) { /* Sort events for enqueue multi operation(s) */ - if (num_dst == 0) { - num_ev = 0; + if (odp_unlikely(num_dst == 0)) { num_dst = 1; - num_cur = 0; cur_queue = pkt_hdr->dst_queue; dst[0] = cur_queue; dst_idx[0] = 0; }
ev[num_ev] = odp_packet_to_event(pkt); - num_ev++;
if (cur_queue != pkt_hdr->dst_queue) { - cur_dst = num_dst; - num_dst++; cur_queue = pkt_hdr->dst_queue; - dst[cur_dst] = cur_queue; - dst_idx[cur_dst] = num_cur; - num_cur = 0; + dst[num_dst] = cur_queue; + dst_idx[num_dst] = num_ev; + num_dst++; }
- num_cur++; - + num_ev++; continue; } buffer_hdrs[num_rx++] = buf_hdr;
-----------------------------------------------------------------------
Summary of changes: platform/linux-generic/odp_packet_io.c | 22 ++++++------- .../classification/odp_classification_test_pmr.c | 36 ++++++++++++++-------- 2 files changed, 34 insertions(+), 24 deletions(-)
hooks/post-receive