0001
0002
0003
0004 #ifndef _IXGBEVF_IPSEC_H_
0005 #define _IXGBEVF_IPSEC_H_
0006
0007 #define IXGBE_IPSEC_MAX_SA_COUNT 1024
0008 #define IXGBE_IPSEC_BASE_RX_INDEX 0
0009 #define IXGBE_IPSEC_BASE_TX_INDEX IXGBE_IPSEC_MAX_SA_COUNT
0010 #define IXGBE_IPSEC_AUTH_BITS 128
0011
0012 #define IXGBE_RXMOD_VALID 0x00000001
0013 #define IXGBE_RXMOD_PROTO_ESP 0x00000004
0014 #define IXGBE_RXMOD_DECRYPT 0x00000008
0015 #define IXGBE_RXMOD_IPV6 0x00000010
0016
0017 struct rx_sa {
0018 struct hlist_node hlist;
0019 struct xfrm_state *xs;
0020 __be32 ipaddr[4];
0021 u32 key[4];
0022 u32 salt;
0023 u32 mode;
0024 u32 pfsa;
0025 bool used;
0026 bool decrypt;
0027 };
0028
0029 struct rx_ip_sa {
0030 __be32 ipaddr[4];
0031 u32 ref_cnt;
0032 bool used;
0033 };
0034
0035 struct tx_sa {
0036 struct xfrm_state *xs;
0037 u32 key[4];
0038 u32 salt;
0039 u32 pfsa;
0040 bool encrypt;
0041 bool used;
0042 };
0043
0044 struct ixgbevf_ipsec_tx_data {
0045 u32 flags;
0046 u16 trailer_len;
0047 u16 pfsa;
0048 };
0049
0050 struct ixgbevf_ipsec {
0051 u16 num_rx_sa;
0052 u16 num_tx_sa;
0053 struct rx_sa *rx_tbl;
0054 struct tx_sa *tx_tbl;
0055 DECLARE_HASHTABLE(rx_sa_list, 10);
0056 };
0057
0058 struct sa_mbx_msg {
0059 __be32 spi;
0060 u8 dir;
0061 u8 proto;
0062 u16 family;
0063 __be32 addr[4];
0064 u32 key[5];
0065 };
0066 #endif