diff options
| -rw-r--r-- | drivers/crypto/caam/desc.h | 16 | ||||
| -rw-r--r-- | drivers/crypto/caam/pdb.h | 401 |
2 files changed, 401 insertions, 16 deletions
diff --git a/drivers/crypto/caam/desc.h b/drivers/crypto/caam/desc.h index a17c2958dab..af25e76c5f7 100644 --- a/drivers/crypto/caam/desc.h +++ b/drivers/crypto/caam/desc.h | |||
| @@ -1585,20 +1585,4 @@ | |||
| 1585 | #define NFIFOENTRY_PLEN_SHIFT 0 | 1585 | #define NFIFOENTRY_PLEN_SHIFT 0 |
| 1586 | #define NFIFOENTRY_PLEN_MASK (0xFF << NFIFOENTRY_PLEN_SHIFT) | 1586 | #define NFIFOENTRY_PLEN_MASK (0xFF << NFIFOENTRY_PLEN_SHIFT) |
| 1587 | 1587 | ||
| 1588 | /* | ||
| 1589 | * PDB internal definitions | ||
| 1590 | */ | ||
| 1591 | |||
| 1592 | /* IPSec ESP CBC Encap/Decap Options */ | ||
| 1593 | #define PDBOPTS_ESPCBC_ARSNONE 0x00 /* no antireplay window */ | ||
| 1594 | #define PDBOPTS_ESPCBC_ARS32 0x40 /* 32-entry antireplay window */ | ||
| 1595 | #define PDBOPTS_ESPCBC_ARS64 0xc0 /* 64-entry antireplay window */ | ||
| 1596 | #define PDBOPTS_ESPCBC_IVSRC 0x20 /* IV comes from internal random gen */ | ||
| 1597 | #define PDBOPTS_ESPCBC_ESN 0x10 /* extended sequence included */ | ||
| 1598 | #define PDBOPTS_ESPCBC_OUTFMT 0x08 /* output only decapsulation (decap) */ | ||
| 1599 | #define PDBOPTS_ESPCBC_IPHDRSRC 0x08 /* IP header comes from PDB (encap) */ | ||
| 1600 | #define PDBOPTS_ESPCBC_INCIPHDR 0x04 /* Prepend IP header to output frame */ | ||
| 1601 | #define PDBOPTS_ESPCBC_IPVSN 0x02 /* process IPv6 header */ | ||
| 1602 | #define PDBOPTS_ESPCBC_TUNNEL 0x01 /* tunnel mode next-header byte */ | ||
| 1603 | |||
| 1604 | #endif /* DESC_H */ | 1588 | #endif /* DESC_H */ |
diff --git a/drivers/crypto/caam/pdb.h b/drivers/crypto/caam/pdb.h new file mode 100644 index 00000000000..62950d22ac1 --- /dev/null +++ b/drivers/crypto/caam/pdb.h | |||
| @@ -0,0 +1,401 @@ | |||
| 1 | /* | ||
| 2 | * CAAM Protocol Data Block (PDB) definition header file | ||
| 3 | * | ||
| 4 | * Copyright 2008-2012 Freescale Semiconductor, Inc. | ||
| 5 | * | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef CAAM_PDB_H | ||
| 9 | #define CAAM_PDB_H | ||
| 10 | |||
| 11 | /* | ||
| 12 | * PDB- IPSec ESP Header Modification Options | ||
| 13 | */ | ||
| 14 | #define PDBHMO_ESP_DECAP_SHIFT 12 | ||
| 15 | #define PDBHMO_ESP_ENCAP_SHIFT 4 | ||
| 16 | /* | ||
| 17 | * Encap and Decap - Decrement TTL (Hop Limit) - Based on the value of the | ||
| 18 | * Options Byte IP version (IPvsn) field: | ||
| 19 | * if IPv4, decrement the inner IP header TTL field (byte 8); | ||
| 20 | * if IPv6 decrement the inner IP header Hop Limit field (byte 7). | ||
| 21 | */ | ||
| 22 | #define PDBHMO_ESP_DECAP_DEC_TTL (0x02 << PDBHMO_ESP_DECAP_SHIFT) | ||
| 23 | #define PDBHMO_ESP_ENCAP_DEC_TTL (0x02 << PDBHMO_ESP_ENCAP_SHIFT) | ||
| 24 | /* | ||
| 25 | * Decap - DiffServ Copy - Copy the IPv4 TOS or IPv6 Traffic Class byte | ||
| 26 | * from the outer IP header to the inner IP header. | ||
| 27 | */ | ||
| 28 | #define PDBHMO_ESP_DIFFSERV (0x01 << PDBHMO_ESP_DECAP_SHIFT) | ||
| 29 | /* | ||
| 30 | * Encap- Copy DF bit -if an IPv4 tunnel mode outer IP header is coming from | ||
| 31 | * the PDB, copy the DF bit from the inner IP header to the outer IP header. | ||
| 32 | */ | ||
| 33 | #define PDBHMO_ESP_DFBIT (0x04 << PDBHMO_ESP_ENCAP_SHIFT) | ||
| 34 | |||
| 35 | /* | ||
| 36 | * PDB - IPSec ESP Encap/Decap Options | ||
| 37 | */ | ||
| 38 | #define PDBOPTS_ESP_ARSNONE 0x00 /* no antireplay window */ | ||
| 39 | #define PDBOPTS_ESP_ARS32 0x40 /* 32-entry antireplay window */ | ||
| 40 | #define PDBOPTS_ESP_ARS64 0xc0 /* 64-entry antireplay window */ | ||
| 41 | #define PDBOPTS_ESP_IVSRC 0x20 /* IV comes from internal random gen */ | ||
| 42 | #define PDBOPTS_ESP_ESN 0x10 /* extended sequence included */ | ||
| 43 | #define PDBOPTS_ESP_OUTFMT 0x08 /* output only decapsulation (decap) */ | ||
| 44 | #define PDBOPTS_ESP_IPHDRSRC 0x08 /* IP header comes from PDB (encap) */ | ||
| 45 | #define PDBOPTS_ESP_INCIPHDR 0x04 /* Prepend IP header to output frame */ | ||
| 46 | #define PDBOPTS_ESP_IPVSN 0x02 /* process IPv6 header */ | ||
| 47 | #define PDBOPTS_ESP_TUNNEL 0x01 /* tunnel mode next-header byte */ | ||
| 48 | #define PDBOPTS_ESP_IPV6 0x02 /* ip header version is V6 */ | ||
| 49 | #define PDBOPTS_ESP_DIFFSERV 0x40 /* copy TOS/TC from inner iphdr */ | ||
| 50 | #define PDBOPTS_ESP_UPDATE_CSUM 0x80 /* encap-update ip header checksum */ | ||
| 51 | #define PDBOPTS_ESP_VERIFY_CSUM 0x20 /* decap-validate ip header checksum */ | ||
| 52 | |||
| 53 | /* | ||
| 54 | * General IPSec encap/decap PDB definitions | ||
| 55 | */ | ||
| 56 | struct ipsec_encap_cbc { | ||
| 57 | u32 iv[4]; | ||
| 58 | }; | ||
| 59 | |||
| 60 | struct ipsec_encap_ctr { | ||
| 61 | u32 ctr_nonce; | ||
| 62 | u32 ctr_initial; | ||
| 63 | u32 iv[2]; | ||
| 64 | }; | ||
| 65 | |||
| 66 | struct ipsec_encap_ccm { | ||
| 67 | u32 salt; /* lower 24 bits */ | ||
| 68 | u8 b0_flags; | ||
| 69 | u8 ctr_flags; | ||
| 70 | u16 ctr_initial; | ||
| 71 | u32 iv[2]; | ||
| 72 | }; | ||
| 73 | |||
| 74 | struct ipsec_encap_gcm { | ||
| 75 | u32 salt; /* lower 24 bits */ | ||
| 76 | u32 rsvd1; | ||
| 77 | u32 iv[2]; | ||
| 78 | }; | ||
| 79 | |||
| 80 | struct ipsec_encap_pdb { | ||
| 81 | u8 hmo_rsvd; | ||
| 82 | u8 ip_nh; | ||
| 83 | u8 ip_nh_offset; | ||
| 84 | u8 options; | ||
| 85 | u32 seq_num_ext_hi; | ||
| 86 | u32 seq_num; | ||
| 87 | union { | ||
| 88 | struct ipsec_encap_cbc cbc; | ||
| 89 | struct ipsec_encap_ctr ctr; | ||
| 90 | struct ipsec_encap_ccm ccm; | ||
| 91 | struct ipsec_encap_gcm gcm; | ||
| 92 | }; | ||
| 93 | u32 spi; | ||
| 94 | u16 rsvd1; | ||
| 95 | u16 ip_hdr_len; | ||
| 96 | u32 ip_hdr[0]; /* optional IP Header content */ | ||
| 97 | }; | ||
| 98 | |||
| 99 | struct ipsec_decap_cbc { | ||
| 100 | u32 rsvd[2]; | ||
| 101 | }; | ||
| 102 | |||
| 103 | struct ipsec_decap_ctr { | ||
| 104 | u32 salt; | ||
| 105 | u32 ctr_initial; | ||
| 106 | }; | ||
| 107 | |||
| 108 | struct ipsec_decap_ccm { | ||
| 109 | u32 salt; | ||
| 110 | u8 iv_flags; | ||
| 111 | u8 ctr_flags; | ||
| 112 | u16 ctr_initial; | ||
| 113 | }; | ||
| 114 | |||
| 115 | struct ipsec_decap_gcm { | ||
| 116 | u32 salt; | ||
| 117 | u32 resvd; | ||
| 118 | }; | ||
| 119 | |||
| 120 | struct ipsec_decap_pdb { | ||
| 121 | u16 hmo_ip_hdr_len; | ||
| 122 | u8 ip_nh_offset; | ||
| 123 | u8 options; | ||
| 124 | union { | ||
| 125 | struct ipsec_decap_cbc cbc; | ||
| 126 | struct ipsec_decap_ctr ctr; | ||
| 127 | struct ipsec_decap_ccm ccm; | ||
| 128 | struct ipsec_decap_gcm gcm; | ||
| 129 | }; | ||
| 130 | u32 seq_num_ext_hi; | ||
| 131 | u32 seq_num; | ||
| 132 | u32 anti_replay[2]; | ||
| 133 | u32 end_index[0]; | ||
| 134 | }; | ||
| 135 | |||
| 136 | /* | ||
| 137 | * IPSec ESP Datapath Protocol Override Register (DPOVRD) | ||
| 138 | */ | ||
| 139 | struct ipsec_deco_dpovrd { | ||
| 140 | #define IPSEC_ENCAP_DECO_DPOVRD_USE 0x80 | ||
| 141 | u8 ovrd_ecn; | ||
| 142 | u8 ip_hdr_len; | ||
| 143 | u8 nh_offset; | ||
| 144 | u8 next_header; /* reserved if decap */ | ||
| 145 | }; | ||
| 146 | |||
| 147 | /* | ||
| 148 | * IEEE 802.11i WiFi Protocol Data Block | ||
| 149 | */ | ||
| 150 | #define WIFI_PDBOPTS_FCS 0x01 | ||
| 151 | #define WIFI_PDBOPTS_AR 0x40 | ||
| 152 | |||
| 153 | struct wifi_encap_pdb { | ||
| 154 | u16 mac_hdr_len; | ||
| 155 | u8 rsvd; | ||
| 156 | u8 options; | ||
| 157 | u8 iv_flags; | ||
| 158 | u8 pri; | ||
| 159 | u16 pn1; | ||
| 160 | u32 pn2; | ||
| 161 | u16 frm_ctrl_mask; | ||
| 162 | u16 seq_ctrl_mask; | ||
| 163 | u8 rsvd1[2]; | ||
| 164 | u8 cnst; | ||
| 165 | u8 key_id; | ||
| 166 | u8 ctr_flags; | ||
| 167 | u8 rsvd2; | ||
| 168 | u16 ctr_init; | ||
| 169 | }; | ||
| 170 | |||
| 171 | struct wifi_decap_pdb { | ||
| 172 | u16 mac_hdr_len; | ||
| 173 | u8 rsvd; | ||
| 174 | u8 options; | ||
| 175 | u8 iv_flags; | ||
| 176 | u8 pri; | ||
| 177 | u16 pn1; | ||
| 178 | u32 pn2; | ||
| 179 | u16 frm_ctrl_mask; | ||
| 180 | u16 seq_ctrl_mask; | ||
| 181 | u8 rsvd1[4]; | ||
| 182 | u8 ctr_flags; | ||
| 183 | u8 rsvd2; | ||
| 184 | u16 ctr_init; | ||
| 185 | }; | ||
| 186 | |||
| 187 | /* | ||
| 188 | * IEEE 802.16 WiMAX Protocol Data Block | ||
| 189 | */ | ||
| 190 | #define WIMAX_PDBOPTS_FCS 0x01 | ||
| 191 | #define WIMAX_PDBOPTS_AR 0x40 /* decap only */ | ||
| 192 | |||
| 193 | struct wimax_encap_pdb { | ||
| 194 | u8 rsvd[3]; | ||
| 195 | u8 options; | ||
| 196 | u32 nonce; | ||
| 197 | u8 b0_flags; | ||
| 198 | u8 ctr_flags; | ||
| 199 | u16 ctr_init; | ||
| 200 | /* begin DECO writeback region */ | ||
