| 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 |
| |