aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ice/ice_lib.c
diff options
context:
space:
mode:
authorMd Fahad Iqbal Polash <md.fahad.iqbal.polash@intel.com>2018-09-19 20:23:17 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-10-02 10:17:18 -0400
commit492af0ab4f57136d19f0fa3a9c636f12ae70853c (patch)
treecc0a049680f4f3feedc0b10bd4855e8d656b031c /drivers/net/ethernet/intel/ice/ice_lib.c
parenteb0208ec42d319bc09fead0e1afe2bc0c28aeca0 (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.c32
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 */
1234int 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 */