OpenCloudOS-Kernel/include/linux/mlx5
Emeel Hakim 4411a6c0ab net/mlx5e: Support MACsec offload extended packet number (EPN)
MACsec EPN splits the packet number (PN) into two 32-bits fields,
epn_lsb (32 least significant bits (LSBs) of PN) and epn_msb (32
most significant bits (MSBs) of PN).
Epn_msb bits are managed by SW and for that HW is required to send
an object change event of type EPN event notifying the SW to update
the epn_msb in addition, once epn_msb is updated SW update HW with
the new epn_msb value for HW to perform replay protection.
To prevent HW from stopping while handling the event, SW manages
another bit for HW called epn_overlap, HW uses the latter to get
an indication regarding how to read the epn_msb value correctly
while still receiving packets.
Add epn event handling that updates the epn_overlap and epn_msb for
every 2^31 packets according to the following logic:
if epn_lsb crosses 2^31 (half sequence number wraparound) upon HW
relevant event, SW updates the esn_overlap value to OLD (value = 1).
When the epn_lsb crosses 2^32 (full sequence number wraparound)
upon HW relevant event, SW updates the esn_overlap to NEW
(value = 0) and increment the esn_msb.
When using MACsec EPN a salt and short secure channel id (ssci)
needs to be provided by the user, when offloading EPN need to pass
this salt and ssci to the HW to be used in the initial vector (IV)
calculations.

Reviewed-by: Raed Salem <raeds@nvidia.com>
Signed-off-by: Emeel Hakim <ehakim@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2022-09-22 18:01:33 -07:00
..
cq.h net/mlx5: Use mlx5_cmd_do() in core create_{cq,dct} 2022-02-23 15:21:59 -08:00
device.h net/mlx5e: Support MACsec offload extended packet number (EPN) 2022-09-22 18:01:33 -07:00
doorbell.h
driver.h v6.0 second rc pull request 2022-09-09 14:46:44 -04:00
eq.h net/mlx5: Introduce API for bulk request and release of IRQs 2022-01-06 16:22:52 -08:00
eswitch.h net/mlx5: E-switch, Remove dependency between sriov and eswitch mode 2022-07-02 11:58:26 -07:00
fs.h net/mlx5: Add MACsec Rx tables support to fs_core 2022-09-07 14:02:08 +01:00
fs_helpers.h
mlx5_ifc.h net/mlx5: Add ifc bits for MACsec extended packet number (EPN) and replay protection 2022-09-22 18:01:32 -07:00
mlx5_ifc_fpga.h net/mlx5_fpga: Drop INNOVA IPsec support 2022-04-09 08:23:47 +03:00
mlx5_ifc_vdpa.h vdpa/mlx5: Implement susupend virtqueue callback 2022-08-11 04:26:08 -04:00
mpfs.h {net,vdpa}/mlx5: Configure interface MAC into mpfs L2 table 2021-05-18 23:01:48 -07:00
port.h IB/mlx5: Fix undefined behavior due to shift overflowing the constant 2022-04-06 10:15:03 +03:00
qp.h net/mlx5e: Add MACsec TX steering rules 2022-09-07 14:02:08 +01:00
rsc_dump.h
transobj.h net/mlx5e: Fix page reclaim for dead peer hairpin 2021-06-09 17:20:03 -07:00
vport.h net/mlx5: E-Switch, Prepare to return total vports from eswitch struct 2021-04-24 00:58:43 -07:00