[ovs-dev] [PATCH] datapath: STT: Fix checksum handling.

Pravin B Shelar pshelar at ovn.org
Thu Mar 3 22:18:30 UTC 2016


On packet receive STT verifies the checksum if not done in
hardware. But IP and TCP were pulled before the verification
step. The verification expect to see packet with TCP header.
This causes STT to drop packet in certain cases.

Signed-off-by: Pravin B Shelar <pshelar at ovn.org>
---
 datapath/linux/compat/stt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/datapath/linux/compat/stt.c b/datapath/linux/compat/stt.c
index 5b68577..eb397e8 100644
--- a/datapath/linux/compat/stt.c
+++ b/datapath/linux/compat/stt.c
@@ -1347,6 +1347,7 @@ static void stt_rcv(struct stt_dev *stt_dev, struct sk_buff *skb)
 	if (unlikely(!validate_checksum(skb)))
 		goto drop;
 
+	__skb_pull(skb, sizeof(struct tcphdr));
 	skb = reassemble(skb);
 	if (!skb)
 		return;
@@ -1490,7 +1491,7 @@ static unsigned int nf_ip_hook(FIRST_PARAM, struct sk_buff *skb, LAST_PARAM)
 	if (!stt_dev)
 		return NF_ACCEPT;
 
-	__skb_pull(skb, ip_hdr_len + sizeof(struct tcphdr));
+	__skb_pull(skb, ip_hdr_len);
 	stt_rcv(stt_dev, skb);
 	return NF_STOLEN;
 }
-- 
2.5.0




More information about the dev mailing list