fcnt = i40e_update_filter_state(num_add, list, add_head);
 
        if (fcnt != num_add) {
-               set_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
-               dev_warn(&vsi->back->pdev->dev,
-                        "Error %s adding RX filters on %s, promiscuous mode forced on\n",
-                        i40e_aq_str(hw, aq_err),
-                        vsi_name);
+               if (vsi->type == I40E_VSI_MAIN) {
+                       set_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
+                       dev_warn(&vsi->back->pdev->dev,
+                                "Error %s adding RX filters on %s, promiscuous mode forced on\n",
+                                i40e_aq_str(hw, aq_err), vsi_name);
+               } else if (vsi->type == I40E_VSI_SRIOV ||
+                          vsi->type == I40E_VSI_VMDQ1 ||
+                          vsi->type == I40E_VSI_VMDQ2) {
+                       dev_warn(&vsi->back->pdev->dev,
+                                "Error %s adding RX filters on %s, please set promiscuous on manually for %s\n",
+                                i40e_aq_str(hw, aq_err), vsi_name, vsi_name);
+               } else {
+                       dev_warn(&vsi->back->pdev->dev,
+                                "Error %s adding RX filters on %s, incorrect VSI type: %i.\n",
+                                i40e_aq_str(hw, aq_err), vsi_name, vsi->type);
+               }
        }
 }