[dpdk-test-report] |WARNING| pw94597-94599 [PATCH] [v6, 3/3] net/iavf: support AVF RSS for GTPoGRE packet
dpdklab at iol.unh.edu
dpdklab at iol.unh.edu
Mon Jun 21 10:14:10 CEST 2021
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/94597
_apply patch failure_
Submitter: Lingyu Liu <lingyu.liu at intel.com>
Date: Monday, June 21 2021 14:23:20
Applied on: CommitID:2508c18cff9ffb217ac40e44071dc2762d257f31
Apply patch set 94597-94599 failed:
Checking patch drivers/net/iavf/iavf_hash.c...
error: while searching for:
#define IAVF_PHINT_OUTER_IPV4 BIT_ULL(4)
#define IAVF_PHINT_OUTER_IPV6 BIT_ULL(5)
#define IAVF_PHINT_GRE BIT_ULL(6)
#define IAVF_PHINT_GTPU_MSK (IAVF_PHINT_GTPU | \
IAVF_PHINT_GTPU_EH | \
error: patch failed: drivers/net/iavf/iavf_hash.c:31
Hunk #2 succeeded at 232 (offset -4 lines).
Hunk #3 succeeded at 444 (offset -4 lines).
Hunk #4 succeeded at 500 (offset -10 lines).
error: while searching for:
case RTE_FLOW_ITEM_TYPE_IPV4:
if (!(*phint & IAVF_PHINT_GTPU_MSK) && !(*phint & IAVF_PHINT_GRE))
*phint |= IAVF_PHINT_OUTER_IPV4;
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
if (!(*phint & IAVF_PHINT_GTPU_MSK) && !(*phint & IAVF_PHINT_GRE))
*phint |= IAVF_PHINT_OUTER_IPV6;
break;
case RTE_FLOW_ITEM_TYPE_GTPU:
*phint |= IAVF_PHINT_GTPU;
error: patch failed: drivers/net/iavf/iavf_hash.c:607
error: while searching for:
struct virtchnl_proto_hdr *hdr1;
struct virtchnl_proto_hdr *hdr2;
int i, shift_count = 1;
if (!(phint & IAVF_PHINT_GTPU_MSK) && !(phint & IAVF_PHINT_GRE))
return;
if (phint & IAVF_PHINT_LAYERS_MSK)
shift_count++;
if (proto_hdrs->tunnel_level == TUNNEL_LEVEL_INNER) {
/* shift headers layer */
for (i = proto_hdrs->count - 1 + shift_count;
i > shift_count - 1; i--) {
error: patch failed: drivers/net/iavf/iavf_hash.c:881
error: while searching for:
hdr2 = &proto_hdrs->proto_hdr[0];
hdr2->field_selector = 0;
proto_hdrs->count++;
proto_hdrs->tunnel_level = TUNNEL_LEVEL_OUTER;
if (phint & IAVF_PHINT_OUTER_IPV4)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV4);
else if (phint & IAVF_PHINT_OUTER_IPV6)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV6);
}
} else {
hdr1 = &proto_hdrs->proto_hdr[proto_hdrs->count];
}
hdr1->field_selector = 0;
proto_hdrs->count++;
if (phint & IAVF_PHINT_GTPU_EH_DWN)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_DWN);
else if (phint & IAVF_PHINT_GTPU_EH_UP)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_UP);
else if (phint & IAVF_PHINT_GTPU_EH)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH);
else if (phint & IAVF_PHINT_GTPU)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_IP);
else if (phint & IAVF_PHINT_GRE)
VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GRE);
}
static void iavf_refine_proto_hdrs(struct virtchnl_proto_hdrs *proto_hdrs,
error: patch failed: drivers/net/iavf/iavf_hash.c:906
Applying patch drivers/net/iavf/iavf_hash.c with 4 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Rejected hunk #5.
Rejected hunk #6.
Rejected hunk #7.
diff a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c (rejected hunks)
@@ -31,6 +31,9 @@
#define IAVF_PHINT_OUTER_IPV4 BIT_ULL(4)
#define IAVF_PHINT_OUTER_IPV6 BIT_ULL(5)
#define IAVF_PHINT_GRE BIT_ULL(6)
+/* the second IP header of GTPoGRE */
+#define IAVF_PHINT_MID_IPV4 BIT_ULL(7)
+#define IAVF_PHINT_MID_IPV6 BIT_ULL(8)
#define IAVF_PHINT_GTPU_MSK (IAVF_PHINT_GTPU | \
IAVF_PHINT_GTPU_EH | \
@@ -607,10 +682,14 @@ iavf_hash_parse_pattern(const struct rte_flow_item pattern[], uint64_t *phint,
case RTE_FLOW_ITEM_TYPE_IPV4:
if (!(*phint & IAVF_PHINT_GTPU_MSK) && !(*phint & IAVF_PHINT_GRE))
*phint |= IAVF_PHINT_OUTER_IPV4;
+ if ((*phint & IAVF_PHINT_GRE) && !(*phint & IAVF_PHINT_GTPU_MSK))
+ *phint |= IAVF_PHINT_MID_IPV4;
break;
case RTE_FLOW_ITEM_TYPE_IPV6:
if (!(*phint & IAVF_PHINT_GTPU_MSK) && !(*phint & IAVF_PHINT_GRE))
*phint |= IAVF_PHINT_OUTER_IPV6;
+ if ((*phint & IAVF_PHINT_GRE) && !(*phint & IAVF_PHINT_GTPU_MSK))
+ *phint |= IAVF_PHINT_MID_IPV6;
break;
case RTE_FLOW_ITEM_TYPE_GTPU:
*phint |= IAVF_PHINT_GTPU;
@@ -881,14 +960,15 @@ iavf_refine_proto_hdrs_by_pattern(struct virtchnl_proto_hdrs *proto_hdrs,
struct virtchnl_proto_hdr *hdr1;
struct virtchnl_proto_hdr *hdr2;
int i, shift_count = 1;
+ int tun_lvl = proto_hdrs->tunnel_level;
if (!(phint & IAVF_PHINT_GTPU_MSK) && !(phint & IAVF_PHINT_GRE))
return;
- if (phint & IAVF_PHINT_LAYERS_MSK)
- shift_count++;
+ while (tun_lvl) {
+ if (phint & IAVF_PHINT_LAYERS_MSK)
+ shift_count = 2;
- if (proto_hdrs->tunnel_level == TUNNEL_LEVEL_INNER) {
/* shift headers layer */
for (i = proto_hdrs->count - 1 + shift_count;
i > shift_count - 1; i--) {
@@ -906,30 +986,44 @@ iavf_refine_proto_hdrs_by_pattern(struct virtchnl_proto_hdrs *proto_hdrs,
hdr2 = &proto_hdrs->proto_hdr[0];
hdr2->field_selector = 0;
proto_hdrs->count++;
- proto_hdrs->tunnel_level = TUNNEL_LEVEL_OUTER;
+ tun_lvl--;
+
+ if (tun_lvl == TUNNEL_LEVEL_OUTER) {
+ if (phint & IAVF_PHINT_OUTER_IPV4)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV4);
+ else if (phint & IAVF_PHINT_OUTER_IPV6)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV6);
+ } else if (tun_lvl == TUNNEL_LEVEL_INNER) {
+ if (phint & IAVF_PHINT_MID_IPV4)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV4);
+ else if (phint & IAVF_PHINT_MID_IPV6)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV6);
+ }
+ }
- if (phint & IAVF_PHINT_OUTER_IPV4)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV4);
- else if (phint & IAVF_PHINT_OUTER_IPV6)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr2, IPV6);
+ hdr1->field_selector = 0;
+ proto_hdrs->count++;
+
+ if (phint & IAVF_PHINT_GTPU_EH_DWN)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_DWN);
+ else if (phint & IAVF_PHINT_GTPU_EH_UP)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_UP);
+ else if (phint & IAVF_PHINT_GTPU_EH)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH);
+ else if (phint & IAVF_PHINT_GTPU)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_IP);
+
+ if (phint & IAVF_PHINT_GRE) {
+ if (phint & IAVF_PHINT_GTPU) {
+ /* if GTPoGRE, add GRE header at the outer tunnel */
+ if (tun_lvl == TUNNEL_LEVEL_OUTER)
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GRE);
+ } else {
+ VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GRE);
+ }
}
- } else {
- hdr1 = &proto_hdrs->proto_hdr[proto_hdrs->count];
}
-
- hdr1->field_selector = 0;
- proto_hdrs->count++;
-
- if (phint & IAVF_PHINT_GTPU_EH_DWN)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_DWN);
- else if (phint & IAVF_PHINT_GTPU_EH_UP)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH_PDU_UP);
- else if (phint & IAVF_PHINT_GTPU_EH)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_EH);
- else if (phint & IAVF_PHINT_GTPU)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GTPU_IP);
- else if (phint & IAVF_PHINT_GRE)
- VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, GRE);
+ proto_hdrs->tunnel_level = tun_lvl;
}
static void iavf_refine_proto_hdrs(struct virtchnl_proto_hdrs *proto_hdrs,
https://lab.dpdk.org/results/dashboard/patchsets/17460/
UNH-IOL DPDK Community Lab
More information about the test-report
mailing list