From: Czeslaw Zagorski <czeslawx.zagor...@intel.com>

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.zagor...@intel.com>
Tested-by: Andrew Bowers <andrewx.bow...@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirs...@intel.com>
---
 .../ethernet/intel/i40e/i40e_virtchnl_pf.c    | 39 ++++++++++---------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c 
b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 618781b3b7ac..7bc4e397d56d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -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,
-- 
2.21.0

Reply via email to