linux/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/* Copyright(c) 2017 Oracle and/or its affiliates. All rights reserved. */
   3
   4#ifndef _IXGBE_IPSEC_H_
   5#define _IXGBE_IPSEC_H_
   6
   7#define IXGBE_IPSEC_MAX_SA_COUNT        1024
   8#define IXGBE_IPSEC_MAX_RX_IP_COUNT     128
   9#define IXGBE_IPSEC_BASE_RX_INDEX       0
  10#define IXGBE_IPSEC_BASE_TX_INDEX       IXGBE_IPSEC_MAX_SA_COUNT
  11#define IXGBE_IPSEC_AUTH_BITS           128
  12
  13#define IXGBE_RXTXIDX_IPS_EN            0x00000001
  14#define IXGBE_RXIDX_TBL_SHIFT           1
  15enum ixgbe_ipsec_tbl_sel {
  16        ips_rx_ip_tbl   =       0x01,
  17        ips_rx_spi_tbl  =       0x02,
  18        ips_rx_key_tbl  =       0x03,
  19};
  20
  21#define IXGBE_RXTXIDX_IDX_SHIFT         3
  22#define IXGBE_RXTXIDX_READ              0x40000000
  23#define IXGBE_RXTXIDX_WRITE             0x80000000
  24
  25#define IXGBE_RXMOD_VALID               0x00000001
  26#define IXGBE_RXMOD_PROTO_ESP           0x00000004
  27#define IXGBE_RXMOD_DECRYPT             0x00000008
  28#define IXGBE_RXMOD_IPV6                0x00000010
  29#define IXGBE_RXTXMOD_VF                0x00000020
  30
  31struct rx_sa {
  32        struct hlist_node hlist;
  33        struct xfrm_state *xs;
  34        __be32 ipaddr[4];
  35        u32 key[4];
  36        u32 salt;
  37        u32 mode;
  38        u8  iptbl_ind;
  39        bool used;
  40        bool decrypt;
  41        u32 vf;
  42};
  43
  44struct rx_ip_sa {
  45        __be32 ipaddr[4];
  46        u32 ref_cnt;
  47        bool used;
  48};
  49
  50struct tx_sa {
  51        struct xfrm_state *xs;
  52        u32 key[4];
  53        u32 salt;
  54        u32 mode;
  55        bool encrypt;
  56        bool used;
  57        u32 vf;
  58};
  59
  60struct ixgbe_ipsec_tx_data {
  61        u32 flags;
  62        u16 trailer_len;
  63        u16 sa_idx;
  64};
  65
  66struct ixgbe_ipsec {
  67        u16 num_rx_sa;
  68        u16 num_tx_sa;
  69        struct rx_ip_sa *ip_tbl;
  70        struct rx_sa *rx_tbl;
  71        struct tx_sa *tx_tbl;
  72        DECLARE_HASHTABLE(rx_sa_list, 10);
  73};
  74
  75struct sa_mbx_msg {
  76        __be32 spi;
  77        u8 flags;
  78        u8 proto;
  79        u16 family;
  80        __be32 addr[4];
  81        u32 key[5];
  82};
  83#endif /* _IXGBE_IPSEC_H_ */
  84