net: macsec: add support for offloading to the MAC
This patch adds a new MACsec offloading option, MACSEC_OFFLOAD_MAC, allowing a user to select a MAC as a provider for MACsec offloading operations. Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com> Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8fa9137180
commit
21114b7fee
|
@ -339,7 +339,8 @@ static void macsec_set_shortlen(struct macsec_eth_header *h, size_t data_len)
|
|||
/* Checks if a MACsec interface is being offloaded to an hardware engine */
|
||||
static bool macsec_is_offloaded(struct macsec_dev *macsec)
|
||||
{
|
||||
if (macsec->offload == MACSEC_OFFLOAD_PHY)
|
||||
if (macsec->offload == MACSEC_OFFLOAD_MAC ||
|
||||
macsec->offload == MACSEC_OFFLOAD_PHY)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
@ -355,6 +356,9 @@ static bool macsec_check_offload(enum macsec_offload offload,
|
|||
if (offload == MACSEC_OFFLOAD_PHY)
|
||||
return macsec->real_dev->phydev &&
|
||||
macsec->real_dev->phydev->macsec_ops;
|
||||
else if (offload == MACSEC_OFFLOAD_MAC)
|
||||
return macsec->real_dev->features & NETIF_F_HW_MACSEC &&
|
||||
macsec->real_dev->macsec_ops;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -369,9 +373,14 @@ static const struct macsec_ops *__macsec_get_ops(enum macsec_offload offload,
|
|||
|
||||
if (offload == MACSEC_OFFLOAD_PHY)
|
||||
ctx->phydev = macsec->real_dev->phydev;
|
||||
else if (offload == MACSEC_OFFLOAD_MAC)
|
||||
ctx->netdev = macsec->real_dev;
|
||||
}
|
||||
|
||||
return macsec->real_dev->phydev->macsec_ops;
|
||||
if (offload == MACSEC_OFFLOAD_PHY)
|
||||
return macsec->real_dev->phydev->macsec_ops;
|
||||
else
|
||||
return macsec->real_dev->macsec_ops;
|
||||
}
|
||||
|
||||
/* Returns a pointer to the MACsec ops struct if any and updates the MACsec
|
||||
|
|
|
@ -489,6 +489,7 @@ enum macsec_validation_type {
|
|||
enum macsec_offload {
|
||||
MACSEC_OFFLOAD_OFF = 0,
|
||||
MACSEC_OFFLOAD_PHY = 1,
|
||||
MACSEC_OFFLOAD_MAC = 2,
|
||||
__MACSEC_OFFLOAD_END,
|
||||
MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
|
||||
};
|
||||
|
|
|
@ -489,6 +489,7 @@ enum macsec_validation_type {
|
|||
enum macsec_offload {
|
||||
MACSEC_OFFLOAD_OFF = 0,
|
||||
MACSEC_OFFLOAD_PHY = 1,
|
||||
MACSEC_OFFLOAD_MAC = 2,
|
||||
__MACSEC_OFFLOAD_END,
|
||||
MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue