88
88
struct atmel_aes_caps {
89
89
bool has_dualbuff ;
90
90
bool has_cfb64 ;
91
- bool has_ctr32 ;
92
91
bool has_gcm ;
93
92
bool has_xts ;
94
93
bool has_authenc ;
@@ -1018,8 +1017,9 @@ static int atmel_aes_ctr_transfer(struct atmel_aes_dev *dd)
1018
1017
struct atmel_aes_ctr_ctx * ctx = atmel_aes_ctr_ctx_cast (dd -> ctx );
1019
1018
struct skcipher_request * req = skcipher_request_cast (dd -> areq );
1020
1019
struct scatterlist * src , * dst ;
1021
- u32 ctr , blocks ;
1022
1020
size_t datalen ;
1021
+ u32 ctr ;
1022
+ u16 blocks , start , end ;
1023
1023
bool use_dma , fragmented = false;
1024
1024
1025
1025
/* Check for transfer completion. */
@@ -1031,27 +1031,17 @@ static int atmel_aes_ctr_transfer(struct atmel_aes_dev *dd)
1031
1031
datalen = req -> cryptlen - ctx -> offset ;
1032
1032
blocks = DIV_ROUND_UP (datalen , AES_BLOCK_SIZE );
1033
1033
ctr = be32_to_cpu (ctx -> iv [3 ]);
1034
- if (dd -> caps .has_ctr32 ) {
1035
- /* Check 32bit counter overflow. */
1036
- u32 start = ctr ;
1037
- u32 end = start + blocks - 1 ;
1038
-
1039
- if (end < start ) {
1040
- ctr |= 0xffffffff ;
1041
- datalen = AES_BLOCK_SIZE * - start ;
1042
- fragmented = true;
1043
- }
1044
- } else {
1045
- /* Check 16bit counter overflow. */
1046
- u16 start = ctr & 0xffff ;
1047
- u16 end = start + (u16 )blocks - 1 ;
1048
-
1049
- if (blocks >> 16 || end < start ) {
1050
- ctr |= 0xffff ;
1051
- datalen = AES_BLOCK_SIZE * (0x10000 - start );
1052
- fragmented = true;
1053
- }
1034
+
1035
+ /* Check 16bit counter overflow. */
1036
+ start = ctr & 0xffff ;
1037
+ end = start + blocks - 1 ;
1038
+
1039
+ if (blocks >> 16 || end < start ) {
1040
+ ctr |= 0xffff ;
1041
+ datalen = AES_BLOCK_SIZE * (0x10000 - start );
1042
+ fragmented = true;
1054
1043
}
1044
+
1055
1045
use_dma = (datalen >= ATMEL_AES_DMA_THRESHOLD );
1056
1046
1057
1047
/* Jump to offset. */
@@ -2521,7 +2511,6 @@ static void atmel_aes_get_cap(struct atmel_aes_dev *dd)
2521
2511
{
2522
2512
dd -> caps .has_dualbuff = 0 ;
2523
2513
dd -> caps .has_cfb64 = 0 ;
2524
- dd -> caps .has_ctr32 = 0 ;
2525
2514
dd -> caps .has_gcm = 0 ;
2526
2515
dd -> caps .has_xts = 0 ;
2527
2516
dd -> caps .has_authenc = 0 ;
@@ -2532,7 +2521,6 @@ static void atmel_aes_get_cap(struct atmel_aes_dev *dd)
2532
2521
case 0x500 :
2533
2522
dd -> caps .has_dualbuff = 1 ;
2534
2523
dd -> caps .has_cfb64 = 1 ;
2535
- dd -> caps .has_ctr32 = 1 ;
2536
2524
dd -> caps .has_gcm = 1 ;
2537
2525
dd -> caps .has_xts = 1 ;
2538
2526
dd -> caps .has_authenc = 1 ;
@@ -2541,7 +2529,6 @@ static void atmel_aes_get_cap(struct atmel_aes_dev *dd)
2541
2529
case 0x200 :
2542
2530
dd -> caps .has_dualbuff = 1 ;
2543
2531
dd -> caps .has_cfb64 = 1 ;
2544
- dd -> caps .has_ctr32 = 1 ;
2545
2532
dd -> caps .has_gcm = 1 ;
2546
2533
dd -> caps .max_burst_size = 4 ;
2547
2534
break ;
0 commit comments