[][Add macsec HW offload backport from kernel 5.18]
[Description]
Add macsec HW offload backport from kernel 5.18.
[Release-log]
N/A
Change-Id: I5b143fe620ec4bcae4075d1d85db5e41c8d48717
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/5981730
diff --git a/target/linux/mediatek/patches-5.4/999-1752-02-v5.18-net-macsec-introduce-the-macsec_context-structure.patch b/target/linux/mediatek/patches-5.4/999-1752-02-v5.18-net-macsec-introduce-the-macsec_context-structure.patch
new file mode 100644
index 0000000..40c1149
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-1752-02-v5.18-net-macsec-introduce-the-macsec_context-structure.patch
@@ -0,0 +1,103 @@
+From 76564261a7db80c5f5c624e0122a28787f266bdf Mon Sep 17 00:00:00 2001
+From: Antoine Tenart <antoine.tenart@bootlin.com>
+Date: Mon, 13 Jan 2020 23:31:40 +0100
+Subject: net: macsec: introduce the macsec_context structure
+
+This patch introduces the macsec_context structure. It will be used
+in the kernel to exchange information between the common MACsec
+implementation (macsec.c) and the MACsec hardware offloading
+implementations. This structure contains pointers to MACsec specific
+structures which contain the actual MACsec configuration, and to the
+underlying device (phydev for now).
+
+Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ include/linux/phy.h | 2 ++
+ include/net/macsec.h | 21 +++++++++++++++++++++
+ include/uapi/linux/if_link.h | 7 +++++++
+ tools/include/uapi/linux/if_link.h | 7 +++++++
+ 4 files changed, 37 insertions(+)
+
+diff --git a/include/linux/phy.h b/include/linux/phy.h
+index 3a70b756ac1aa..be079a7bb40aa 100644
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -332,6 +332,8 @@ struct phy_c45_device_ids {
+ u32 device_ids[8];
+ };
+
++struct macsec_context;
++
+ /* phy_device: An instance of a PHY
+ *
+ * drv: Pointer to the driver for this PHY instance
+diff --git a/include/net/macsec.h b/include/net/macsec.h
+index e7b41c1043f6f..0b98803f92ec1 100644
+--- a/include/net/macsec.h
++++ b/include/net/macsec.h
+@@ -174,4 +174,25 @@ struct macsec_secy {
+ struct macsec_rx_sc __rcu *rx_sc;
+ };
+
++/**
++ * struct macsec_context - MACsec context for hardware offloading
++ */
++struct macsec_context {
++ struct phy_device *phydev;
++ enum macsec_offload offload;
++
++ struct macsec_secy *secy;
++ struct macsec_rx_sc *rx_sc;
++ struct {
++ unsigned char assoc_num;
++ u8 key[MACSEC_KEYID_LEN];
++ union {
++ struct macsec_rx_sa *rx_sa;
++ struct macsec_tx_sa *tx_sa;
++ };
++ } sa;
++
++ u8 prepare:1;
++};
++
+ #endif /* _NET_MACSEC_H_ */
+diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
+index 1d69f637c5d6a..024af2d1d0af4 100644
+--- a/include/uapi/linux/if_link.h
++++ b/include/uapi/linux/if_link.h
+@@ -486,6 +486,13 @@ enum macsec_validation_type {
+ MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
+ };
+
++enum macsec_offload {
++ MACSEC_OFFLOAD_OFF = 0,
++ MACSEC_OFFLOAD_PHY = 1,
++ __MACSEC_OFFLOAD_END,
++ MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
++};
++
+ /* IPVLAN section */
+ enum {
+ IFLA_IPVLAN_UNSPEC,
+diff --git a/tools/include/uapi/linux/if_link.h b/tools/include/uapi/linux/if_link.h
+index 8aec8769d9442..42efdb84d1898 100644
+--- a/tools/include/uapi/linux/if_link.h
++++ b/tools/include/uapi/linux/if_link.h
+@@ -485,6 +485,13 @@ enum macsec_validation_type {
+ MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
+ };
+
++enum macsec_offload {
++ MACSEC_OFFLOAD_OFF = 0,
++ MACSEC_OFFLOAD_PHY = 1,
++ __MACSEC_OFFLOAD_END,
++ MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
++};
++
+ /* IPVLAN section */
+ enum {
+ IFLA_IPVLAN_UNSPEC,
+--
+cgit 1.2.3-1.el7
+