@@ -135,6 +135,14 @@ static struct mlx5_cmd_layout *get_inst(struct mlx5_cmd *cmd, int idx)
135
135
return cmd -> cmd_buf + (idx << cmd -> log_stride );
136
136
}
137
137
138
+ static int mlx5_calc_cmd_blocks (struct mlx5_cmd_msg * msg )
139
+ {
140
+ int size = msg -> len ;
141
+ int blen = size - min_t (int , sizeof (msg -> first .data ), size );
142
+
143
+ return DIV_ROUND_UP (blen , MLX5_CMD_DATA_BLOCK_SIZE );
144
+ }
145
+
138
146
static u8 xor8_buf (void * buf , size_t offset , int len )
139
147
{
140
148
u8 * ptr = buf ;
@@ -174,10 +182,7 @@ static void calc_block_sig(struct mlx5_cmd_prot_block *block)
174
182
static void calc_chain_sig (struct mlx5_cmd_msg * msg )
175
183
{
176
184
struct mlx5_cmd_mailbox * next = msg -> next ;
177
- int size = msg -> len ;
178
- int blen = size - min_t (int , sizeof (msg -> first .data ), size );
179
- int n = (blen + MLX5_CMD_DATA_BLOCK_SIZE - 1 )
180
- / MLX5_CMD_DATA_BLOCK_SIZE ;
185
+ int n = mlx5_calc_cmd_blocks (msg );
181
186
int i = 0 ;
182
187
183
188
for (i = 0 ; i < n && next ; i ++ ) {
@@ -220,12 +225,9 @@ static void free_cmd(struct mlx5_cmd_work_ent *ent)
220
225
static int verify_signature (struct mlx5_cmd_work_ent * ent )
221
226
{
222
227
struct mlx5_cmd_mailbox * next = ent -> out -> next ;
228
+ int n = mlx5_calc_cmd_blocks (ent -> out );
223
229
int err ;
224
230
u8 sig ;
225
- int size = ent -> out -> len ;
226
- int blen = size - min_t (int , sizeof (ent -> out -> first .data ), size );
227
- int n = (blen + MLX5_CMD_DATA_BLOCK_SIZE - 1 )
228
- / MLX5_CMD_DATA_BLOCK_SIZE ;
229
231
int i = 0 ;
230
232
231
233
sig = xor8_buf (ent -> lay , 0 , sizeof (* ent -> lay ));
@@ -1137,7 +1139,6 @@ static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev,
1137
1139
struct mlx5_cmd_mailbox * tmp , * head = NULL ;
1138
1140
struct mlx5_cmd_prot_block * block ;
1139
1141
struct mlx5_cmd_msg * msg ;
1140
- int blen ;
1141
1142
int err ;
1142
1143
int n ;
1143
1144
int i ;
@@ -1146,8 +1147,8 @@ static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev,
1146
1147
if (!msg )
1147
1148
return ERR_PTR (- ENOMEM );
1148
1149
1149
- blen = size - min_t ( int , sizeof ( msg -> first . data ), size ) ;
1150
- n = ( blen + MLX5_CMD_DATA_BLOCK_SIZE - 1 ) / MLX5_CMD_DATA_BLOCK_SIZE ;
1150
+ msg -> len = size ;
1151
+ n = mlx5_calc_cmd_blocks ( msg ) ;
1151
1152
1152
1153
for (i = 0 ; i < n ; i ++ ) {
1153
1154
tmp = alloc_cmd_box (dev , flags );
@@ -1165,7 +1166,6 @@ static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev,
1165
1166
head = tmp ;
1166
1167
}
1167
1168
msg -> next = head ;
1168
- msg -> len = size ;
1169
1169
return msg ;
1170
1170
1171
1171
err_alloc :
0 commit comments