ice: Refactor ice_set/get_rss into LUT and key specific functions
[linux-2.6-microblaze.git] / drivers / net / ethernet / intel / ice / ice_main.c
index 8085f0a..9410af2 100644 (file)
@@ -6317,99 +6317,118 @@ const char *ice_stat_str(enum ice_status stat_err)
 }
 
 /**
- * ice_set_rss - Set RSS keys and lut
+ * ice_set_rss_lut - Set RSS LUT
  * @vsi: Pointer to VSI structure
- * @seed: RSS hash seed
  * @lut: Lookup table
  * @lut_size: Lookup table size
  *
  * Returns 0 on success, negative on failure
  */
-int ice_set_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size)
+int ice_set_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size)
 {
-       struct ice_pf *pf = vsi->back;
-       struct ice_hw *hw = &pf->hw;
+       struct ice_aq_get_set_rss_lut_params params = {};
+       struct ice_hw *hw = &vsi->back->hw;
        enum ice_status status;
-       struct device *dev;
 
-       dev = ice_pf_to_dev(pf);
-       if (seed) {
-               struct ice_aqc_get_set_rss_keys *buf =
-                                 (struct ice_aqc_get_set_rss_keys *)seed;
+       if (!lut)
+               return -EINVAL;
 
-               status = ice_aq_set_rss_key(hw, vsi->idx, buf);
+       params.vsi_handle = vsi->idx;
+       params.lut_size = lut_size;
+       params.lut_type = vsi->rss_lut_type;
+       params.lut = lut;
 
-               if (status) {
-                       dev_err(dev, "Cannot set RSS key, err %s aq_err %s\n",
-                               ice_stat_str(status),
-                               ice_aq_str(hw->adminq.sq_last_status));
-                       return -EIO;
-               }
+       status = ice_aq_set_rss_lut(hw, &params);
+       if (status) {
+               dev_err(ice_pf_to_dev(vsi->back), "Cannot set RSS lut, err %s aq_err %s\n",
+                       ice_stat_str(status),
+                       ice_aq_str(hw->adminq.sq_last_status));
+               return -EIO;
        }
 
-       if (lut) {
-               struct ice_aq_get_set_rss_lut_params set_params = {
-                       .vsi_handle = vsi->idx, .lut_size = lut_size,
-                       .lut_type = vsi->rss_lut_type, .lut = lut,
-                       .global_lut_id = 0
-               };
+       return 0;
+}
 
-               status = ice_aq_set_rss_lut(hw, &set_params);
-               if (status) {
-                       dev_err(dev, "Cannot set RSS lut, err %s aq_err %s\n",
-                               ice_stat_str(status),
-                               ice_aq_str(hw->adminq.sq_last_status));
-                       return -EIO;
-               }
+/**
+ * ice_set_rss_key - Set RSS key
+ * @vsi: Pointer to the VSI structure
+ * @seed: RSS hash seed
+ *
+ * Returns 0 on success, negative on failure
+ */
+int ice_set_rss_key(struct ice_vsi *vsi, u8 *seed)
+{
+       struct ice_hw *hw = &vsi->back->hw;
+       enum ice_status status;
+
+       if (!seed)
+               return -EINVAL;
+
+       status = ice_aq_set_rss_key(hw, vsi->idx, (struct ice_aqc_get_set_rss_keys *)seed);
+       if (status) {
+               dev_err(ice_pf_to_dev(vsi->back), "Cannot set RSS key, err %s aq_err %s\n",
+                       ice_stat_str(status),
+                       ice_aq_str(hw->adminq.sq_last_status));
+               return -EIO;
        }
 
        return 0;
 }
 
 /**
- * ice_get_rss - Get RSS keys and lut
+ * ice_get_rss_lut - Get RSS LUT
  * @vsi: Pointer to VSI structure
- * @seed: Buffer to store the keys
  * @lut: Buffer to store the lookup table entries
  * @lut_size: Size of buffer to store the lookup table entries
  *
  * Returns 0 on success, negative on failure
  */
-int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size)
+int ice_get_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size)
 {
-       struct ice_pf *pf = vsi->back;
-       struct ice_hw *hw = &pf->hw;
+       struct ice_aq_get_set_rss_lut_params params = {};
+       struct ice_hw *hw = &vsi->back->hw;
        enum ice_status status;
-       struct device *dev;
 
-       dev = ice_pf_to_dev(pf);
-       if (seed) {
-               struct ice_aqc_get_set_rss_keys *buf =
-                                 (struct ice_aqc_get_set_rss_keys *)seed;
+       if (!lut)
+               return -EINVAL;
 
-               status = ice_aq_get_rss_key(hw, vsi->idx, buf);
-               if (status) {
-                       dev_err(dev, "Cannot get RSS key, err %s aq_err %s\n",
-                               ice_stat_str(status),
-                               ice_aq_str(hw->adminq.sq_last_status));
-                       return -EIO;
-               }
+       params.vsi_handle = vsi->idx;
+       params.lut_size = lut_size;
+       params.lut_type = vsi->rss_lut_type;
+       params.lut = lut;
+
+       status = ice_aq_get_rss_lut(hw, &params);
+       if (status) {
+               dev_err(ice_pf_to_dev(vsi->back), "Cannot get RSS lut, err %s aq_err %s\n",
+                       ice_stat_str(status),
+                       ice_aq_str(hw->adminq.sq_last_status));
+               return -EIO;
        }
 
-       if (lut) {
-               struct ice_aq_get_set_rss_lut_params get_params = {
-                       .vsi_handle = vsi->idx, .lut_size = lut_size,
-                       .lut_type = vsi->rss_lut_type, .lut = lut,
-                       .global_lut_id = 0
-               };
+       return 0;
+}
 
-               status = ice_aq_get_rss_lut(hw, &get_params);
-               if (status) {
-                       dev_err(dev, "Cannot get RSS lut, err %s aq_err %s\n",
-                               ice_stat_str(status),
-                               ice_aq_str(hw->adminq.sq_last_status));
-                       return -EIO;
-               }
+/**
+ * ice_get_rss_key - Get RSS key
+ * @vsi: Pointer to VSI structure
+ * @seed: Buffer to store the key in
+ *
+ * Returns 0 on success, negative on failure
+ */
+int ice_get_rss_key(struct ice_vsi *vsi, u8 *seed)
+{
+       struct ice_hw *hw = &vsi->back->hw;
+       enum ice_status status;
+
+       if (!seed)
+               return -EINVAL;
+
+       status = ice_aq_get_rss_key(hw, vsi->idx, (struct ice_aqc_get_set_rss_keys *)seed);
+       if (status) {
+               dev_err(ice_pf_to_dev(vsi->back), "Cannot get RSS key, err %s aq_err %s\n",
+                       ice_stat_str(status),
+                       ice_aq_str(hw->adminq.sq_last_status));
+               return -EIO;
        }
 
        return 0;