Serries is not ready. It's needed to enable all test options in ./configure and run 'make check' before submitting.

1.

  Test: classification_test_pktio_test ...
Program received signal SIGSEGV, Segmentation fault.
0x0000000000410b6a in cls_pkt_get_seq (pkt=0x20000000) at odp_classification_common.c:122
122        if (ip->proto == ODPH_IPPROTO_UDP)
(gdb) p ip
$1 = (odph_ipv4hdr_t *) 0x0
(gdb)


2.

traffic_mngr.c: In function 'dump_rcvd_pkts':
traffic_mngr.c:941:19: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
          rcv_idx, (uint64_t)rcv_pkt, xmt_idx,
                   ^
traffic_mngr.c:942:10: error: format '%lX' expects argument of type 'long unsigned int', but argument 3 has type 'long long unsigned int' [-Werror=format=]
          rcv_pkt_desc->pkt_class, is_ipv4, unique_id, rc);
          ^
traffic_mngr.c: In function 'dump_tm_subtree':
traffic_mngr.c:1610:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=]
   LOG_ERR("odp_tm_node_info failed for tm_node=0x%lX\n",
   ^
traffic_mngr.c:1610:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=] traffic_mngr.c:1610:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=] traffic_mngr.c:1624:9: error: format '%lX' expects argument of type 'long unsigned int', but argument 4 has type 'odp_tm_node_t' [-Werror=format=]
         node_info.tm_node_fanin);
         ^
traffic_mngr.c:1624:9: error: format '%lX' expects argument of type 'long unsigned int', but argument 7 has type 'odp_tm_node_t' [-Werror=format=]
traffic_mngr.c: In function 'walk_tree_backwards':
traffic_mngr.c:3566:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=]
   LOG_ERR("odp_tm_node_info failed for tm_node=0x%lX\n", tm_node);
   ^
traffic_mngr.c:3566:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=] traffic_mngr.c:3566:3: error: format '%lX' expects argument of type 'long unsigned int', but argument 6 has type 'odp_tm_node_t' [-Werror=format=]
cc1: all warnings being treated as errors


On 04/27/16 22:38, Barry Spinney wrote:
This patch fixes a bug in parse_ipv6 caused because the IPv6 payload
length does not include the IPv6 header and a bug in parse_udp where
l4_offset was subtracted from l3_offset instead of the other way around.
Also made a number of cosmetic changes to satisfy checkpatch.

Signed-off-by: Barry Spinney <[email protected]>
---
  platform/linux-generic/odp_packet.c | 42 ++++++++++++++++++++++++-------------
  1 file changed, 27 insertions(+), 15 deletions(-)

diff --git a/platform/linux-generic/odp_packet.c 
b/platform/linux-generic/odp_packet.c
index 9329397..01c2288 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -206,6 +206,7 @@ odp_event_t odp_packet_to_event(odp_packet_t pkt)
  void *odp_packet_head(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        return buffer_map(&pkt_hdr->buf_hdr, 0, NULL, 0);
  }
@@ -219,6 +220,7 @@ uint32_t odp_packet_buf_len(odp_packet_t pkt)
  void *odp_packet_data(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        return packet_map(pkt_hdr, 0, NULL);
  }
@@ -250,6 +252,7 @@ uint32_t odp_packet_tailroom(odp_packet_t pkt)
  void *odp_packet_tail(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        return packet_map(pkt_hdr, pkt_hdr->frame_len, NULL);
  }
@@ -306,6 +309,7 @@ void *odp_packet_offset(odp_packet_t pkt, uint32_t offset, uint32_t *len, if (addr != NULL && seg != NULL) {
                odp_buffer_bits_t seghandle;
+
                seghandle.handle = (odp_buffer_t)pkt;
                seghandle.seg = (pkt_hdr->headroom + offset) /
                        pkt_hdr->buf_hdr.segsize;
@@ -360,6 +364,7 @@ uint32_t odp_packet_user_area_size(odp_packet_t pkt)
  void *odp_packet_l2_ptr(odp_packet_t pkt, uint32_t *len)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (!packet_hdr_has_l2(pkt_hdr))
                return NULL;
        return packet_map(pkt_hdr, pkt_hdr->l2_offset, len);
@@ -368,6 +373,7 @@ void *odp_packet_l2_ptr(odp_packet_t pkt, uint32_t *len)
  uint32_t odp_packet_l2_offset(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (!packet_hdr_has_l2(pkt_hdr))
                return ODP_PACKET_OFFSET_INVALID;
        return pkt_hdr->l2_offset;
@@ -388,6 +394,7 @@ int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t 
offset)
  void *odp_packet_l3_ptr(odp_packet_t pkt, uint32_t *len)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (packet_parse_not_complete(pkt_hdr))
                packet_parse_full(pkt_hdr);
        return packet_map(pkt_hdr, pkt_hdr->l3_offset, len);
@@ -396,6 +403,7 @@ void *odp_packet_l3_ptr(odp_packet_t pkt, uint32_t *len)
  uint32_t odp_packet_l3_offset(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (packet_parse_not_complete(pkt_hdr))
                packet_parse_full(pkt_hdr);
        return pkt_hdr->l3_offset;
@@ -417,6 +425,7 @@ int odp_packet_l3_offset_set(odp_packet_t pkt, uint32_t 
offset)
  void *odp_packet_l4_ptr(odp_packet_t pkt, uint32_t *len)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (packet_parse_not_complete(pkt_hdr))
                packet_parse_full(pkt_hdr);
        return packet_map(pkt_hdr, pkt_hdr->l4_offset, len);
@@ -425,6 +434,7 @@ void *odp_packet_l4_ptr(odp_packet_t pkt, uint32_t *len)
  uint32_t odp_packet_l4_offset(odp_packet_t pkt)
  {
        odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
        if (packet_parse_not_complete(pkt_hdr))
                packet_parse_full(pkt_hdr);
        return pkt_hdr->l4_offset;
@@ -696,26 +706,27 @@ void odp_packet_print(odp_packet_t pkt)
        int max_len = 512;
        char str[max_len];
        int len = 0;
-       int n = max_len-1;
+       int n = max_len - 1;
        odp_packet_hdr_t *hdr = odp_packet_hdr(pkt);
- len += snprintf(&str[len], n-len, "Packet ");
-       len += odp_buffer_snprint(&str[len], n-len, (odp_buffer_t) pkt);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len, "Packet ");
+       len += odp_buffer_snprint(&str[len], n - len, (odp_buffer_t)pkt);
+       len += snprintf(&str[len], n - len,
                        "  input_flags  0x%" PRIx32 "\n", hdr->input_flags.all);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
                        "  error_flags  0x%" PRIx32 "\n", hdr->error_flags.all);
-       len += snprintf(&str[len], n-len,
-                       "  output_flags 0x%" PRIx32 "\n", 
hdr->output_flags.all);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
+                       "  output_flags 0x%" PRIx32 "\n",
+                       hdr->output_flags.all);
+       len += snprintf(&str[len], n - len,
                        "  l2_offset    %" PRIu32 "\n", hdr->l2_offset);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
                        "  l3_offset    %" PRIu32 "\n", hdr->l3_offset);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
                        "  l4_offset    %" PRIu32 "\n", hdr->l4_offset);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
                        "  frame_len    %" PRIu32 "\n", hdr->frame_len);
-       len += snprintf(&str[len], n-len,
+       len += snprintf(&str[len], n - len,
                        "  input        %" PRIu64 "\n",
                        odp_pktio_to_u64(hdr->input));
        str[len] = '\0';
@@ -844,7 +855,8 @@ static inline uint8_t parse_ipv6(odp_packet_hdr_t *pkt_hdr,
        const odph_ipv6hdr_ext_t *ipv6ext;
        uint32_t dstaddr0 = odp_be_to_cpu_32(ipv6->dst_addr[0]);
- pkt_hdr->l3_len = odp_be_to_cpu_16(ipv6->payload_len);
+       pkt_hdr->l3_len = odp_be_to_cpu_16(ipv6->payload_len) +
+                               ODPH_IPV6HDR_LEN;
/* Basic sanity checks on IPv6 header */
        if ((odp_be_to_cpu_32(ipv6->ver_tc_flow) >> 28) != 6 ||
@@ -904,7 +916,7 @@ static inline void parse_tcp(odp_packet_hdr_t *pkt_hdr,
  {
        const odph_tcphdr_t *tcp = (const odph_tcphdr_t *)*parseptr;
- if (tcp->hl < sizeof(odph_tcphdr_t)/sizeof(uint32_t))
+       if (tcp->hl < sizeof(odph_tcphdr_t) / sizeof(uint32_t))
                pkt_hdr->error_flags.tcp_err = 1;
        else if ((uint32_t)tcp->hl * 4 > sizeof(odph_tcphdr_t))
                pkt_hdr->input_flags.tcpopt = 1;
@@ -927,7 +939,7 @@ static inline void parse_udp(odp_packet_hdr_t *pkt_hdr,
if (udplen < sizeof(odph_udphdr_t) ||
            udplen > (pkt_hdr->l3_len +
-                     pkt_hdr->l3_offset - pkt_hdr->l4_offset)) {
+                     pkt_hdr->l4_offset - pkt_hdr->l3_offset)) {
                pkt_hdr->error_flags.udp_err = 1;
        }

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

Reply via email to