[qca-nss-ecm] Copy ingress qostag to acceleration rules.
Copy ingress qostag fields from DSCP extension CTE to IPv4/IPv6
and multicast rules.
Change-Id: Id3ca9198563eb1c284227280275d8dd5a5bce51a
Signed-off-by: Manish Verma <maniverm@codeaurora.org>
diff --git a/ecm_classifier.h b/ecm_classifier.h
index fdda166..6575251 100644
--- a/ecm_classifier.h
+++ b/ecm_classifier.h
@@ -1,6 +1,6 @@
/*
**************************************************************************
- * Copyright (c) 2014-2015, 2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2015, 2018-2019, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
@@ -79,6 +79,8 @@
#ifdef ECM_CLASSIFIER_DSCP_ENABLE
#define ECM_CLASSIFIER_PROCESS_ACTION_DSCP 0x00000010 /* Contains DSCP marking information */
#define ECM_CLASSIFIER_PROCESS_ACTION_DSCP_DENY 0x00000020 /* Denies any DSCP changes */
+
+#define ECM_CLASSIFIER_PROCESS_ACTION_IGS_QOS_TAG 0x00000040 /* Contains flow & return ingress qos tags */
#endif
/*
@@ -97,6 +99,8 @@
bool drop; /* Drop packet at hand */
uint32_t flow_qos_tag; /* QoS tag to use for the packet */
uint32_t return_qos_tag; /* QoS tag to use for the packet */
+ uint16_t igs_flow_qos_tag; /* Ingress QoS tag to use for the packet */
+ uint16_t igs_return_qos_tag; /* Ingress QoS tag to use for the return packet */
#ifdef ECM_CLASSIFIER_DSCP_ENABLE
uint8_t flow_dscp; /* DSCP mark for flow */
uint8_t return_dscp; /* DSCP mark for return */
@@ -248,6 +252,7 @@
}
}
+#ifdef ECM_CLASSIFIER_DSCP_ENABLE
if (pr->process_actions & ECM_CLASSIFIER_PROCESS_ACTION_QOS_TAG) {
if ((result = ecm_state_write(sfi, "flow_qos_tag", "%u", pr->flow_qos_tag))) {
return result;
@@ -256,7 +261,16 @@
return result;
}
}
-#ifdef ECM_CLASSIFIER_DSCP_ENABLE
+
+ if (pr->process_actions & ECM_CLASSIFIER_PROCESS_ACTION_IGS_QOS_TAG) {
+ if ((result = ecm_state_write(sfi, "igs_flow_qos_tag", "%u", pr->igs_flow_qos_tag))) {
+ return result;
+ }
+ if ((result = ecm_state_write(sfi, "igs_return_qos_tag", "%u", pr->igs_return_qos_tag))) {
+ return result;
+ }
+ }
+
if (pr->process_actions & ECM_CLASSIFIER_PROCESS_ACTION_DSCP) {
if ((result = ecm_state_write(sfi, "flow_dscp", "%u", pr->flow_dscp))) {
return result;