[qca-nss-sfe] Add conntrack mark update support
Gets the conntrack mark update events from the connection
manager and updates the match entries' mark values.
Change-Id: Ie1f427af18cc484b0751ea84c838adbb609e7a95
Signed-off-by: Murat Sezgin <quic_msezgin@quicinc.com>
diff --git a/sfe_ipv6.c b/sfe_ipv6.c
index 5776fe2..01183af 100644
--- a/sfe_ipv6.c
+++ b/sfe_ipv6.c
@@ -1083,6 +1083,33 @@
}
/*
+ * sfe_ipv6_mark_rule_update()
+ * Updates the mark values of match entries.
+ */
+void sfe_ipv6_mark_rule_update(struct sfe_connection_mark *mark)
+{
+ struct sfe_ipv6_connection *c;
+ struct sfe_ipv6 *si = &__si6;
+
+ spin_lock_bh(&si->lock);
+ c = sfe_ipv6_find_connection(si, mark->protocol,
+ (struct sfe_ipv6_addr *)mark->src_ip,
+ mark->src_port,
+ (struct sfe_ipv6_addr *)mark->dest_ip,
+ mark->dest_port);
+ if (!c) {
+ spin_unlock_bh(&si->lock);
+ DEBUG_WARN("%px: connection not found for mark update\n", mark);
+ return;
+ }
+ c->original_match ->mark = mark->mark;
+ c->reply_match->mark = mark->mark;
+ spin_unlock_bh(&si->lock);
+ DEBUG_TRACE("%px: connection mark updated with %d\n", mark, mark->mark);
+}
+EXPORT_SYMBOL(sfe_ipv6_mark_rule_update);
+
+/*
* sfe_ipv6_xmit_eth_type_check
* Checking if MAC header has to be written.
*/