diff options
author | Md Fahad Iqbal Polash <md.fahad.iqbal.polash@intel.com> | 2018-09-19 20:23:17 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2018-10-02 10:17:18 -0400 |
commit | 492af0ab4f57136d19f0fa3a9c636f12ae70853c (patch) | |
tree | cc0a049680f4f3feedc0b10bd4855e8d656b031c /drivers/net/ethernet/intel/ice/ice_lib.c | |
parent | eb0208ec42d319bc09fead0e1afe2bc0c28aeca0 (diff) |
ice: Implement ethtool hook for RSS switch
This patch implements ethtool hook for enabling/disabling
RSS. While disabling RSS, the LUT should be cleared. And
the LUT should be reconfigured while enabling RSS.
Signed-off-by: Md Fahad Iqbal Polash <md.fahad.iqbal.polash@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_lib.c')
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_lib.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c index 8f7ee77cb70b..98e8b7096e47 100644 --- a/drivers/net/ethernet/intel/ice/ice_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_lib.c | |||
@@ -1223,6 +1223,38 @@ static void ice_vsi_map_rings_to_vectors(struct ice_vsi *vsi) | |||
1223 | } | 1223 | } |
1224 | 1224 | ||
1225 | /** | 1225 | /** |
1226 | * ice_vsi_manage_rss_lut - disable/enable RSS | ||
1227 | * @vsi: the VSI being changed | ||
1228 | * @ena: boolean value indicating if this is an enable or disable request | ||
1229 | * | ||
1230 | * In the event of disable request for RSS, this function will zero out RSS | ||
1231 | * LUT, while in the event of enable request for RSS, it will reconfigure RSS | ||
1232 | * LUT. | ||
1233 | */ | ||
1234 | int ice_vsi_manage_rss_lut(struct ice_vsi *vsi, bool ena) | ||
1235 | { | ||
1236 | int err = 0; | ||
1237 | u8 *lut; | ||
1238 | |||
1239 | lut = devm_kzalloc(&vsi->back->pdev->dev, vsi->rss_table_size, | ||
1240 | GFP_KERNEL); | ||
1241 | if (!lut) | ||
1242 | return -ENOMEM; | ||
1243 | |||
1244 | if (ena) { | ||
1245 | if (vsi->rss_lut_user) | ||
1246 | memcpy(lut, vsi->rss_lut_user, vsi->rss_table_size); | ||
1247 | else | ||
1248 | ice_fill_rss_lut(lut, vsi->rss_table_size, | ||
1249 | vsi->rss_size); | ||
1250 | } | ||
1251 | |||
1252 | err = ice_set_rss(vsi, NULL, lut, vsi->rss_table_size); | ||
1253 | devm_kfree(&vsi->back->pdev->dev, lut); | ||
1254 | return err; | ||
1255 | } | ||
1256 | |||
1257 | /** | ||
1226 | * ice_vsi_cfg_rss_lut_key - Configure RSS params for a VSI | 1258 | * ice_vsi_cfg_rss_lut_key - Configure RSS params for a VSI |
1227 | * @vsi: VSI to be configured | 1259 | * @vsi: VSI to be configured |
1228 | */ | 1260 | */ |