On 26 March 2015 at 17:14, Bill Fischofer <[email protected]> wrote:
> Sounds like we should hold v1.0.2 for this bug fix? Maxim: I think this > review is properly yours as you did the jumbo frame add for v1.0.1. > Bill can you describe the use case than for holding, if we have a strong case for it then we can hold. Normal procedure is that whatever makes the cut is there and the release goes out unless there is a regression introduced. > > On Thu, Mar 26, 2015 at 12:52 PM, Stuart Haslam <[email protected]> > wrote: > >> A magic number, used to ensure jumbo frames are transmitted and received >> in full, is written to the end of a packet buffer at a fixed offset of >> 9170 bytes. However for non-jumbo tests this is way beyond the end of >> the allocated buffer. >> >> Signed-off-by: Stuart Haslam <[email protected]> >> --- >> test/validation/odp_pktio.c | 84 >> ++++++++++++++++++++++++++++----------------- >> 1 file changed, 52 insertions(+), 32 deletions(-) >> >> diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c >> index e022c33..d653da4 100644 >> --- a/test/validation/odp_pktio.c >> +++ b/test/validation/odp_pktio.c >> @@ -44,7 +44,6 @@ typedef struct ODP_PACKED { >> >> /** structure of test packet UDP payload */ >> typedef struct ODP_PACKED { >> - pkt_head_t head; >> char data[PKT_BUF_JUMBO_MAX_PAYLOAD - sizeof(pkt_head_t) - >> sizeof(uint32be_t)]; >> uint32be_t magic2; >> @@ -74,33 +73,47 @@ static void pktio_pkt_set_macs(odp_packet_t pkt, >> >> static uint32_t pkt_payload_len(void) >> { >> - return test_jumbo ? sizeof(pkt_test_data_t) : sizeof(pkt_head_t); >> + uint32_t len; >> + >> + len = sizeof(pkt_head_t); >> + >> + if (test_jumbo) >> + len += sizeof(pkt_test_data_t); >> + >> + return len; >> } >> >> static int pktio_pkt_set_seq(odp_packet_t pkt) >> { >> static uint32_t tstseq; >> - size_t l4_off; >> - pkt_test_data_t *data; >> - uint32_t len = pkt_payload_len(); >> - >> + size_t off; >> + pkt_head_t head; >> >> - l4_off = odp_packet_l4_offset(pkt); >> - if (!l4_off) { >> + off = odp_packet_l4_offset(pkt); >> + if (!off) { >> CU_FAIL("packet L4 offset not set"); >> return -1; >> } >> >> - data = calloc(1, len); >> - CU_ASSERT_FATAL(data != NULL); >> + head.magic = TEST_SEQ_MAGIC; >> + head.seq = tstseq; >> + >> + off += ODPH_UDPHDR_LEN; >> + odp_packet_copydata_in(pkt, off, sizeof(head), &head); >> + >> + if (test_jumbo) { >> + pkt_test_data_t *data; >> + >> + data = calloc(1, sizeof(*data)); >> + CU_ASSERT_FATAL(data != NULL); >> >> - data->head.magic = TEST_SEQ_MAGIC; >> - data->magic2 = TEST_SEQ_MAGIC; >> - data->head.seq = tstseq; >> + data->magic2 = TEST_SEQ_MAGIC; >> + >> + off += sizeof(head); >> + odp_packet_copydata_in(pkt, off, sizeof(*data), data); >> + free(data); >> + } >> >> - odp_packet_copydata_in(pkt, l4_off+ODPH_UDPHDR_LEN, >> - len, data); >> - free(data); >> tstseq++; >> >> return 0; >> @@ -108,30 +121,37 @@ static int pktio_pkt_set_seq(odp_packet_t pkt) >> >> static uint32_t pktio_pkt_seq(odp_packet_t pkt) >> { >> - size_t l4_off; >> + size_t off; >> uint32_t seq = TEST_SEQ_INVALID; >> - pkt_test_data_t *data; >> - uint32_t len = pkt_payload_len(); >> + pkt_head_t head; >> >> - l4_off = odp_packet_l4_offset(pkt); >> - if (l4_off == ODP_PACKET_OFFSET_INVALID) >> + off = odp_packet_l4_offset(pkt); >> + if (off == ODP_PACKET_OFFSET_INVALID) >> return TEST_SEQ_INVALID; >> >> - data = calloc(1, len); >> - CU_ASSERT_FATAL(data != NULL); >> + off += ODPH_UDPHDR_LEN; >> + odp_packet_copydata_out(pkt, off, sizeof(head), &head); >> >> - odp_packet_copydata_out(pkt, l4_off+ODPH_UDPHDR_LEN, >> - len, data); >> + if (head.magic != TEST_SEQ_MAGIC) >> + return TEST_SEQ_INVALID; >> >> - if (data->head.magic == TEST_SEQ_MAGIC) { >> - if (test_jumbo && data->magic2 != TEST_SEQ_MAGIC) { >> - free(data); >> - return TEST_SEQ_INVALID; >> - } >> - seq = data->head.seq; >> + seq = head.seq; >> + >> + if (test_jumbo) { >> + pkt_test_data_t *data; >> + >> + data = calloc(1, sizeof(*data)); >> + CU_ASSERT_FATAL(data != NULL); >> + >> + off += sizeof(head); >> + odp_packet_copydata_out(pkt, off, sizeof(*data), data); >> + >> + if (data->magic2 != TEST_SEQ_MAGIC) >> + seq = TEST_SEQ_INVALID; >> + >> + free(data); >> } >> >> - free(data); >> return seq; >> } >> >> -- >> 2.1.1 >> >> >> _______________________________________________ >> lng-odp mailing list >> [email protected] >> http://lists.linaro.org/mailman/listinfo/lng-odp >> > > > _______________________________________________ > lng-odp mailing list > [email protected] > http://lists.linaro.org/mailman/listinfo/lng-odp > > -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
