[qca-nss-sfe] Add Tx support for PPPoE
Change-Id: Iae53d1eb116ff847457c2da2864ecd21ad8ae0be
Signed-off-by: Guduri Prathyusha <quic_gprathyu@quicinc.com>
diff --git a/sfe_ipv4_udp.c b/sfe_ipv4_udp.c
index 1d1a4df..28c7a43 100644
--- a/sfe_ipv4_udp.c
+++ b/sfe_ipv4_udp.c
@@ -28,6 +28,7 @@
#include "sfe.h"
#include "sfe_flow_cookie.h"
#include "sfe_ipv4.h"
+#include "sfe_pppoe.h"
/*
* sfe_ipv4_recv_udp()
@@ -198,6 +199,23 @@
iph->ttl = ttl - 1;
/*
+ * For PPPoE flows, add PPPoE header before L2 header is added.
+ */
+ if (cm->flags & SFE_IPV4_CONNECTION_MATCH_FLAG_PPPOE_ENCAP) {
+ if (unlikely(!sfe_pppoe_add_header(skb, cm->pppoe_session_id, PPP_IP))) {
+ rcu_read_unlock();
+ DEBUG_WARN("%px: PPPoE header addition failed\n", skb);
+ sfe_ipv4_exception_stats_inc(si, SFE_IPV4_EXCEPTION_EVENT_PPPOE_HEADER_ENCAP_FAILED);
+ return 0;
+ }
+ this_cpu_inc(si->stats_pcpu->pppoe_encap_packets_forwarded64);
+ }
+
+ /*
+ * TODO: VLAN header should be added here when they are supported.
+ */
+
+ /*
* Enable HW csum if rx checksum is verified and xmit interface is CSUM offload capable.
* Note: If L4 csum at Rx was found to be incorrect, we (router) should use incremental L4 checksum here
* so that HW does not re-calculate/replace the L4 csum