@@ -137,6 +137,9 @@ typedef struct {
odp_pktio_t input;
+ uint32_t has_hash:1; /**< Flow hash present */
+ uint32_t flow_hash; /**< Flow hash value */
+
odp_crypto_generic_op_result_t op_result; /**< Result for crypto */
} odp_packet_hdr_t;
@@ -326,6 +326,21 @@ int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset)
return 0;
}
+uint32_t odp_packet_flow_hash(odp_packet_t pkt)
+{
+ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
+ return pkt_hdr->flow_hash;
+}
+
+void odp_packet_flow_hash_set(odp_packet_t pkt, uint32_t flow_hash)
+{
+ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
+ pkt_hdr->flow_hash = flow_hash;
+ pkt_hdr->has_hash = 1;
+}
+
int odp_packet_is_segmented(odp_packet_t pkt)
{
return odp_packet_hdr(pkt)->buf_hdr.segcount > 1;
@@ -116,6 +116,13 @@ int odp_packet_has_icmp(odp_packet_t pkt)
retflag(pkt, input_flags.icmp);
}
+int odp_packet_has_flow_hash(odp_packet_t pkt)
+{
+ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
+ return pkt_hdr->has_hash;
+}
+
/* Set Input Flags */
void odp_packet_has_l2_set(odp_packet_t pkt, int val)
@@ -202,3 +209,11 @@ void odp_packet_has_icmp_set(odp_packet_t pkt, int val)
{
setflag(pkt, input_flags.icmp, val);
}
+
+void odp_packet_has_flow_hash_clr(odp_packet_t pkt)
+{
+ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
+
+ pkt_hdr->has_hash = 0;
+}
+
This platform doesn't compute it, packet_init sets the flag to 0. Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org> --- v8: adjust to newer API definition platform/linux-generic/include/odp_packet_internal.h | 3 +++ platform/linux-generic/odp_packet.c | 15 +++++++++++++++ platform/linux-generic/odp_packet_flags.c | 15 +++++++++++++++ 3 files changed, 33 insertions(+)