diff mbox

[API-NEXT,v8,2/3] linux-generic: packet: implement flow hash support

Message ID 1440759940-17679-3-git-send-email-zoltan.kiss@linaro.org
State Accepted
Commit 786289fe35e43c2988a1d780fdba5d88da767764
Headers show

Commit Message

Zoltan Kiss Aug. 28, 2015, 11:05 a.m. UTC
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(+)
diff mbox

Patch

diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index 8c41491..ba2cd7e 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -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;
 
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 5581cc4..209a6e6 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -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;
diff --git a/platform/linux-generic/odp_packet_flags.c b/platform/linux-generic/odp_packet_flags.c
index 4f680a1..ea308f7 100644
--- a/platform/linux-generic/odp_packet_flags.c
+++ b/platform/linux-generic/odp_packet_flags.c
@@ -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;
+}
+