ice: Refactor promiscuous functions
[platform/kernel/linux-starfive.git] / drivers / net / ethernet / intel / ice / ice_main.c
index a3ce54a..07a243d 100644 (file)
@@ -237,32 +237,45 @@ static bool ice_vsi_fltr_changed(struct ice_vsi *vsi)
 }
 
 /**
- * ice_cfg_promisc - Enable or disable promiscuous mode for a given PF
+ * ice_set_promisc - Enable promiscuous mode for a given PF
  * @vsi: the VSI being configured
  * @promisc_m: mask of promiscuous config bits
- * @set_promisc: enable or disable promisc flag request
  *
  */
-static int ice_cfg_promisc(struct ice_vsi *vsi, u8 promisc_m, bool set_promisc)
+static int ice_set_promisc(struct ice_vsi *vsi, u8 promisc_m)
 {
-       struct ice_hw *hw = &vsi->back->hw;
-       enum ice_status status = 0;
+       enum ice_status status;
 
        if (vsi->type != ICE_VSI_PF)
                return 0;
 
-       if (vsi->num_vlan > 1) {
-               status = ice_set_vlan_vsi_promisc(hw, vsi->idx, promisc_m,
-                                                 set_promisc);
-       } else {
-               if (set_promisc)
-                       status = ice_set_vsi_promisc(hw, vsi->idx, promisc_m,
-                                                    0);
-               else
-                       status = ice_clear_vsi_promisc(hw, vsi->idx, promisc_m,
-                                                      0);
-       }
+       if (vsi->num_vlan > 1)
+               status = ice_fltr_set_vlan_vsi_promisc(&vsi->back->hw, vsi, promisc_m);
+       else
+               status = ice_fltr_set_vsi_promisc(&vsi->back->hw, vsi->idx, promisc_m, 0);
+       if (status)
+               return -EIO;
+
+       return 0;
+}
 
+/**
+ * ice_clear_promisc - Disable promiscuous mode for a given PF
+ * @vsi: the VSI being configured
+ * @promisc_m: mask of promiscuous config bits
+ *
+ */
+static int ice_clear_promisc(struct ice_vsi *vsi, u8 promisc_m)
+{
+       enum ice_status status;
+
+       if (vsi->type != ICE_VSI_PF)
+               return 0;
+
+       if (vsi->num_vlan > 1)
+               status = ice_fltr_clear_vlan_vsi_promisc(&vsi->back->hw, vsi, promisc_m);
+       else
+               status = ice_fltr_clear_vsi_promisc(&vsi->back->hw, vsi->idx, promisc_m, 0);
        if (status)
                return -EIO;
 
@@ -358,7 +371,7 @@ static int ice_vsi_sync_fltr(struct ice_vsi *vsi)
                        else
                                promisc_m = ICE_MCAST_PROMISC_BITS;
 
-                       err = ice_cfg_promisc(vsi, promisc_m, true);
+                       err = ice_set_promisc(vsi, promisc_m);
                        if (err) {
                                netdev_err(netdev, "Error setting Multicast promiscuous mode on VSI %i\n",
                                           vsi->vsi_num);
@@ -372,7 +385,7 @@ static int ice_vsi_sync_fltr(struct ice_vsi *vsi)
                        else
                                promisc_m = ICE_MCAST_PROMISC_BITS;
 
-                       err = ice_cfg_promisc(vsi, promisc_m, false);
+                       err = ice_clear_promisc(vsi, promisc_m);
                        if (err) {
                                netdev_err(netdev, "Error clearing Multicast promiscuous mode on VSI %i\n",
                                           vsi->vsi_num);