i40e: Remove unicast log when VF is leaving multicast mode.
authorCzeslaw Zagorski <czeslawx.zagorski@intel.com>
Tue, 2 Jul 2019 12:22:59 +0000 (08:22 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 5 Aug 2019 18:42:05 +0000 (11:42 -0700)
This patch removes unicast log when VF is leaving multicast mode.
Added check of vf->vf_states &
I40E_VF_STATE_MC_PROMISC/I40E_VF_STATE_UC_PROMISC.
Without this commit, leaving multicast mode logs "unset unicast"
in dmsg.

Signed-off-by: Czeslaw Zagorski <czeslawx.zagorski@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 6d0289e..4601f9e 100644 (file)
@@ -2043,30 +2043,33 @@ static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf, u8 *msg)
                alluni = true;
        aq_ret = i40e_config_vf_promiscuous_mode(vf, info->vsi_id, allmulti,
                                                 alluni);
-       if (!aq_ret) {
-               if (allmulti) {
+       if (aq_ret)
+               goto err_out;
+
+       if (allmulti) {
+               if (!test_and_set_bit(I40E_VF_STATE_MC_PROMISC,
+                                     &vf->vf_states))
                        dev_info(&pf->pdev->dev,
                                 "VF %d successfully set multicast promiscuous mode\n",
                                 vf->vf_id);
-                       set_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states);
-               } else {
-                       dev_info(&pf->pdev->dev,
-                                "VF %d successfully unset multicast promiscuous mode\n",
-                                vf->vf_id);
-                       clear_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states);
-               }
-               if (alluni) {
+       } else if (test_and_clear_bit(I40E_VF_STATE_MC_PROMISC,
+                                     &vf->vf_states))
+               dev_info(&pf->pdev->dev,
+                        "VF %d successfully unset multicast promiscuous mode\n",
+                        vf->vf_id);
+
+       if (alluni) {
+               if (!test_and_set_bit(I40E_VF_STATE_UC_PROMISC,
+                                     &vf->vf_states))
                        dev_info(&pf->pdev->dev,
                                 "VF %d successfully set unicast promiscuous mode\n",
                                 vf->vf_id);
-                       set_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states);
-               } else {
-                       dev_info(&pf->pdev->dev,
-                                "VF %d successfully unset unicast promiscuous mode\n",
-                                vf->vf_id);
-                       clear_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states);
-               }
-       }
+       } else if (test_and_clear_bit(I40E_VF_STATE_UC_PROMISC,
+                                     &vf->vf_states))
+               dev_info(&pf->pdev->dev,
+                        "VF %d successfully unset unicast promiscuous mode\n",
+                        vf->vf_id);
+
 err_out:
        /* send the response to the VF */
        return i40e_vc_send_resp_to_vf(vf,