macsec: Support XPN frame handling - IEEE 802.1AEbw
authorEra Mayflower <mayflowerera@gmail.com>
Mon, 9 Mar 2020 19:47:01 +0000 (19:47 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Mar 2020 08:42:31 +0000 (01:42 -0700)
commita21ecf0e033807b976967286e6c392f48ee2049f
tree066f5ca68d02329bb11df2ba1e95ed1da63071d8
parent65b7a2c8e3691b4b1d5d4b64f3c39dff3670975a
macsec: Support XPN frame handling - IEEE 802.1AEbw

Support extended packet number cipher suites (802.1AEbw) frames handling.
This does not include the needed netlink patches.

    * Added xpn boolean field to `struct macsec_secy`.
    * Added ssci field to `struct_macsec_tx_sa` (802.1AE figure 10-5).
    * Added ssci field to `struct_macsec_rx_sa` (802.1AE figure 10-5).
    * Added salt field to `struct macsec_key` (802.1AE 10.7 NOTE 1).
    * Created pn_t type for easy access to lower and upper halves.
    * Created salt_t type for easy access to the "ssci" and "pn" parts.
    * Created `macsec_fill_iv_xpn` function to create IV in XPN mode.
    * Support in PN recovery and preliminary replay check in XPN mode.

In addition, according to IEEE 802.1AEbw figure 10-5, the PN of incoming
frame can be 0 when XPN cipher suite is used, so fixed the function
`macsec_validate_skb` to fail on PN=0 only if XPN is off.

Signed-off-by: Era Mayflower <mayflowerera@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macsec.c
include/net/macsec.h