@@ -664,11 +664,11 @@ int i40e_init_shared_code(struct i40e_hw *hw)
664
664
hw -> phy .get_link_info = true;
665
665
666
666
/* Determine port number and PF number*/
667
- port = ( rd32 ( hw , I40E_PFGEN_PORTNUM ) & I40E_PFGEN_PORTNUM_PORT_NUM_MASK )
668
- >> I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT ;
667
+ port = FIELD_GET ( I40E_PFGEN_PORTNUM_PORT_NUM_MASK ,
668
+ rd32 ( hw , I40E_PFGEN_PORTNUM )) ;
669
669
hw -> port = (u8 )port ;
670
- ari = ( rd32 ( hw , I40E_GLPCI_CAPSUP ) & I40E_GLPCI_CAPSUP_ARI_EN_MASK ) >>
671
- I40E_GLPCI_CAPSUP_ARI_EN_SHIFT ;
670
+ ari = FIELD_GET ( I40E_GLPCI_CAPSUP_ARI_EN_MASK ,
671
+ rd32 ( hw , I40E_GLPCI_CAPSUP )) ;
672
672
func_rid = rd32 (hw , I40E_PF_FUNC_RID );
673
673
if (ari )
674
674
hw -> pf_id = (u8 )(func_rid & 0xff );
@@ -986,9 +986,8 @@ int i40e_pf_reset(struct i40e_hw *hw)
986
986
* The grst delay value is in 100ms units, and we'll wait a
987
987
* couple counts longer to be sure we don't just miss the end.
988
988
*/
989
- grst_del = (rd32 (hw , I40E_GLGEN_RSTCTL ) &
990
- I40E_GLGEN_RSTCTL_GRSTDEL_MASK ) >>
991
- I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT ;
989
+ grst_del = FIELD_GET (I40E_GLGEN_RSTCTL_GRSTDEL_MASK ,
990
+ rd32 (hw , I40E_GLGEN_RSTCTL ));
992
991
993
992
/* It can take upto 15 secs for GRST steady state.
994
993
* Bump it to 16 secs max to be safe.
@@ -1080,26 +1079,20 @@ void i40e_clear_hw(struct i40e_hw *hw)
1080
1079
1081
1080
/* get number of interrupts, queues, and VFs */
1082
1081
val = rd32 (hw , I40E_GLPCI_CNF2 );
1083
- num_pf_int = (val & I40E_GLPCI_CNF2_MSI_X_PF_N_MASK ) >>
1084
- I40E_GLPCI_CNF2_MSI_X_PF_N_SHIFT ;
1085
- num_vf_int = (val & I40E_GLPCI_CNF2_MSI_X_VF_N_MASK ) >>
1086
- I40E_GLPCI_CNF2_MSI_X_VF_N_SHIFT ;
1082
+ num_pf_int = FIELD_GET (I40E_GLPCI_CNF2_MSI_X_PF_N_MASK , val );
1083
+ num_vf_int = FIELD_GET (I40E_GLPCI_CNF2_MSI_X_VF_N_MASK , val );
1087
1084
1088
1085
val = rd32 (hw , I40E_PFLAN_QALLOC );
1089
- base_queue = (val & I40E_PFLAN_QALLOC_FIRSTQ_MASK ) >>
1090
- I40E_PFLAN_QALLOC_FIRSTQ_SHIFT ;
1091
- j = (val & I40E_PFLAN_QALLOC_LASTQ_MASK ) >>
1092
- I40E_PFLAN_QALLOC_LASTQ_SHIFT ;
1086
+ base_queue = FIELD_GET (I40E_PFLAN_QALLOC_FIRSTQ_MASK , val );
1087
+ j = FIELD_GET (I40E_PFLAN_QALLOC_LASTQ_MASK , val );
1093
1088
if (val & I40E_PFLAN_QALLOC_VALID_MASK && j >= base_queue )
1094
1089
num_queues = (j - base_queue ) + 1 ;
1095
1090
else
1096
1091
num_queues = 0 ;
1097
1092
1098
1093
val = rd32 (hw , I40E_PF_VT_PFALLOC );
1099
- i = (val & I40E_PF_VT_PFALLOC_FIRSTVF_MASK ) >>
1100
- I40E_PF_VT_PFALLOC_FIRSTVF_SHIFT ;
1101
- j = (val & I40E_PF_VT_PFALLOC_LASTVF_MASK ) >>
1102
- I40E_PF_VT_PFALLOC_LASTVF_SHIFT ;
1094
+ i = FIELD_GET (I40E_PF_VT_PFALLOC_FIRSTVF_MASK , val );
1095
+ j = FIELD_GET (I40E_PF_VT_PFALLOC_LASTVF_MASK , val );
1103
1096
if (val & I40E_PF_VT_PFALLOC_VALID_MASK && j >= i )
1104
1097
num_vfs = (j - i ) + 1 ;
1105
1098
else
@@ -1194,8 +1187,7 @@ static u32 i40e_led_is_mine(struct i40e_hw *hw, int idx)
1194
1187
!hw -> func_caps .led [idx ])
1195
1188
return 0 ;
1196
1189
gpio_val = rd32 (hw , I40E_GLGEN_GPIO_CTL (idx ));
1197
- port = (gpio_val & I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK ) >>
1198
- I40E_GLGEN_GPIO_CTL_PRT_NUM_SHIFT ;
1190
+ port = FIELD_GET (I40E_GLGEN_GPIO_CTL_PRT_NUM_MASK , gpio_val );
1199
1191
1200
1192
/* if PRT_NUM_NA is 1 then this LED is not port specific, OR
1201
1193
* if it is not our port then ignore
@@ -1239,8 +1231,7 @@ u32 i40e_led_get(struct i40e_hw *hw)
1239
1231
if (!gpio_val )
1240
1232
continue ;
1241
1233
1242
- mode = (gpio_val & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK ) >>
1243
- I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT ;
1234
+ mode = FIELD_GET (I40E_GLGEN_GPIO_CTL_LED_MODE_MASK , gpio_val );
1244
1235
break ;
1245
1236
}
1246
1237
@@ -4190,8 +4181,7 @@ i40e_validate_filter_settings(struct i40e_hw *hw,
4190
4181
4191
4182
/* FCHSIZE + FCDSIZE should not be greater than PMFCOEFMAX */
4192
4183
val = rd32 (hw , I40E_GLHMC_FCOEFMAX );
4193
- fcoe_fmax = (val & I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_MASK )
4194
- >> I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_SHIFT ;
4184
+ fcoe_fmax = FIELD_GET (I40E_GLHMC_FCOEFMAX_PMFCOEFMAX_MASK , val );
4195
4185
if (fcoe_filt_size + fcoe_cntx_size > fcoe_fmax )
4196
4186
return - EINVAL ;
4197
4187
@@ -4646,8 +4636,7 @@ int i40e_read_phy_register_clause22(struct i40e_hw *hw,
4646
4636
"PHY: Can't write command to external PHY.\n" );
4647
4637
} else {
4648
4638
command = rd32 (hw , I40E_GLGEN_MSRWD (port_num ));
4649
- * value = (command & I40E_GLGEN_MSRWD_MDIRDDATA_MASK ) >>
4650
- I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT ;
4639
+ * value = FIELD_GET (I40E_GLGEN_MSRWD_MDIRDDATA_MASK , command );
4651
4640
}
4652
4641
4653
4642
return status ;
@@ -4756,8 +4745,7 @@ int i40e_read_phy_register_clause45(struct i40e_hw *hw,
4756
4745
4757
4746
if (!status ) {
4758
4747
command = rd32 (hw , I40E_GLGEN_MSRWD (port_num ));
4759
- * value = (command & I40E_GLGEN_MSRWD_MDIRDDATA_MASK ) >>
4760
- I40E_GLGEN_MSRWD_MDIRDDATA_SHIFT ;
4748
+ * value = FIELD_GET (I40E_GLGEN_MSRWD_MDIRDDATA_MASK , command );
4761
4749
} else {
4762
4750
i40e_debug (hw , I40E_DEBUG_PHY ,
4763
4751
"PHY: Can't read register value from external PHY.\n" );
@@ -5902,9 +5890,8 @@ i40e_aq_add_cloud_filters_bb(struct i40e_hw *hw, u16 seid,
5902
5890
u16 tnl_type ;
5903
5891
u32 ti ;
5904
5892
5905
- tnl_type = (le16_to_cpu (filters [i ].element .flags ) &
5906
- I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK ) >>
5907
- I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT ;
5893
+ tnl_type = le16_get_bits (filters [i ].element .flags ,
5894
+ I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK );
5908
5895
5909
5896
/* Due to hardware eccentricities, the VNI for Geneve is shifted
5910
5897
* one more byte further than normally used for Tenant ID in
@@ -5996,9 +5983,8 @@ i40e_aq_rem_cloud_filters_bb(struct i40e_hw *hw, u16 seid,
5996
5983
u16 tnl_type ;
5997
5984
u32 ti ;
5998
5985
5999
- tnl_type = (le16_to_cpu (filters [i ].element .flags ) &
6000
- I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK ) >>
6001
- I40E_AQC_ADD_CLOUD_TNL_TYPE_SHIFT ;
5986
+ tnl_type = le16_get_bits (filters [i ].element .flags ,
5987
+ I40E_AQC_ADD_CLOUD_TNL_TYPE_MASK );
6002
5988
6003
5989
/* Due to hardware eccentricities, the VNI for Geneve is shifted
6004
5990
* one more byte further than normally used for Tenant ID in
0 commit comments