[][kernel][mt7988][eip197][Fix EIP197 inline checksum error]

[Description]
Fix EIP197 inline checksum error.
Compute checksum value accumulated over ESP source and ESP destination
IP addresses.

[Release-log]
N/A

Change-Id: I77a3201121b94fa895200f1570bc8f1b89ebb2b6
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6879251
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_ipsec.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_ipsec.c
index 5219bc5..4d85f50 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_ipsec.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_ipsec.c
@@ -121,6 +121,7 @@
 	struct ahash_export_state istate, ostate;
 	unsigned char *key_aalg;
 	unsigned char *key_ealg;
+	unsigned int checksum;
 	unsigned int key_len;
 	int i;
 	int cdrt_idx;
@@ -162,7 +163,6 @@
 		context->control1 = CTRL_WORD1_OUT;
 		memcpy(context->data + 38, &xs->props.saddr.a4, 4);
 		memcpy(context->data + 42, &xs->id.daddr.a4, 4);
-		context->data[39] = 0x00005938;
 		context->data[46] = 0x04020000;
 		context->data[49] = 0x9e14ed69;
 		context->data[50] = 0x01020c10;
@@ -175,6 +175,16 @@
 	context->data[48] = 0x00f00008;
 	context->data[51] = 0x94119411;
 
+	/* Calculate Checksum */
+	checksum = 0;
+	checksum += context->data[38] % 0x10000;
+	checksum += context->data[38] / 0x10000;
+	checksum += context->data[42] % 0x10000;
+	checksum += context->data[42] / 0x10000;
+	checksum += checksum / 0x10000;
+	checksum = checksum % 0x10000;
+	context->data[39] = checksum;
+
 	/* EIP-96 context words[2...39]*/
 	if (strcmp(xs->aalg->alg_name, "hmac(sha1)") == 0) {
 		key_aalg = &xs->aalg->alg_key[0];