@@ -424,21 +424,35 @@ static enum mlxsw_reg_sfmr_op mlxsw_sp_sfmr_op(bool valid)
424
424
MLXSW_REG_SFMR_OP_DESTROY_FID ;
425
425
}
426
426
427
- static int mlxsw_sp_fid_op (const struct mlxsw_sp_fid * fid , bool valid )
427
+ static void mlxsw_sp_fid_pack (char * sfmr_pl ,
428
+ const struct mlxsw_sp_fid * fid ,
429
+ enum mlxsw_reg_sfmr_op op )
428
430
{
429
- struct mlxsw_sp * mlxsw_sp = fid -> fid_family -> mlxsw_sp ;
430
- char sfmr_pl [MLXSW_REG_SFMR_LEN ];
431
431
u16 smpe ;
432
432
433
433
smpe = fid -> fid_family -> smpe_index_valid ? fid -> fid_index : 0 ;
434
434
435
- mlxsw_reg_sfmr_pack (sfmr_pl , mlxsw_sp_sfmr_op ( valid ) , fid -> fid_index ,
435
+ mlxsw_reg_sfmr_pack (sfmr_pl , op , fid -> fid_index ,
436
436
fid -> fid_family -> smpe_index_valid , smpe );
437
+ }
438
+
439
+ static void mlxsw_sp_fid_pack_ctl (char * sfmr_pl ,
440
+ const struct mlxsw_sp_fid * fid ,
441
+ enum mlxsw_reg_sfmr_op op )
442
+ {
443
+ mlxsw_sp_fid_pack (sfmr_pl , fid , op );
437
444
mlxsw_reg_sfmr_fid_offset_set (sfmr_pl , fid -> fid_offset );
438
445
mlxsw_reg_sfmr_flood_rsp_set (sfmr_pl , fid -> fid_family -> flood_rsp );
439
446
mlxsw_reg_sfmr_flood_bridge_type_set (sfmr_pl ,
440
447
fid -> fid_family -> bridge_type );
448
+ }
449
+
450
+ static int mlxsw_sp_fid_op (const struct mlxsw_sp_fid * fid , bool valid )
451
+ {
452
+ struct mlxsw_sp * mlxsw_sp = fid -> fid_family -> mlxsw_sp ;
453
+ char sfmr_pl [MLXSW_REG_SFMR_LEN ];
441
454
455
+ mlxsw_sp_fid_pack_ctl (sfmr_pl , fid , mlxsw_sp_sfmr_op (valid ));
442
456
return mlxsw_reg_write (mlxsw_sp -> core , MLXSW_REG (sfmr ), sfmr_pl );
443
457
}
444
458
@@ -447,17 +461,8 @@ static int mlxsw_sp_fid_edit_op(const struct mlxsw_sp_fid *fid,
447
461
{
448
462
struct mlxsw_sp * mlxsw_sp = fid -> fid_family -> mlxsw_sp ;
449
463
char sfmr_pl [MLXSW_REG_SFMR_LEN ];
450
- u16 smpe ;
451
-
452
- smpe = fid -> fid_family -> smpe_index_valid ? fid -> fid_index : 0 ;
453
464
454
- mlxsw_reg_sfmr_pack (sfmr_pl , MLXSW_REG_SFMR_OP_CREATE_FID ,
455
- fid -> fid_index ,
456
- fid -> fid_family -> smpe_index_valid , smpe );
457
- mlxsw_reg_sfmr_fid_offset_set (sfmr_pl , fid -> fid_offset );
458
- mlxsw_reg_sfmr_flood_rsp_set (sfmr_pl , fid -> fid_family -> flood_rsp );
459
- mlxsw_reg_sfmr_flood_bridge_type_set (sfmr_pl ,
460
- fid -> fid_family -> bridge_type );
465
+ mlxsw_sp_fid_pack_ctl (sfmr_pl , fid , MLXSW_REG_SFMR_OP_CREATE_FID );
461
466
mlxsw_reg_sfmr_vv_set (sfmr_pl , fid -> vni_valid );
462
467
mlxsw_reg_sfmr_vni_set (sfmr_pl , be32_to_cpu (fid -> vni ));
463
468
mlxsw_reg_sfmr_vtfp_set (sfmr_pl , fid -> nve_flood_index_valid );
0 commit comments