ice: Disable sniffing VF traffic on PF
authorMichal Swiatkowski <michal.swiatkowski@intel.com>
Tue, 16 Apr 2019 17:21:27 +0000 (10:21 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 4 May 2019 21:44:47 +0000 (14:44 -0700)
Delete code that add default Tx rule on PF. With this rule PF can see
Tx VF traffic that should go outside. For traffic from VF to another
VF default Tx rule on PF doesn't apply because of lower priority than
VF mac rule.

With this change on PF in promisc mode we can see only Rx traffic that
doesn't match any other rule (mac etc.). We can't see Tx traffic from
other VSI.

Signed-off-by: Michal Swiatkowski <michal.swiatkowski@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_main.c

index aa832d9b245835c43565b74c3a72acb4d9ab9d0b..7843abf4d44df59309e9f33a887674a4782ad6bf 100644 (file)
@@ -317,42 +317,22 @@ static int ice_vsi_sync_fltr(struct ice_vsi *vsi)
            test_bit(ICE_VSI_FLAG_PROMISC_CHANGED, vsi->flags)) {
                clear_bit(ICE_VSI_FLAG_PROMISC_CHANGED, vsi->flags);
                if (vsi->current_netdev_flags & IFF_PROMISC) {
-                       /* Apply Tx filter rule to get traffic from VMs */
-                       status = ice_cfg_dflt_vsi(hw, vsi->idx, true,
-                                                 ICE_FLTR_TX);
-                       if (status) {
-                               netdev_err(netdev, "Error setting default VSI %i tx rule\n",
-                                          vsi->vsi_num);
-                               vsi->current_netdev_flags &= ~IFF_PROMISC;
-                               err = -EIO;
-                               goto out_promisc;
-                       }
                        /* Apply Rx filter rule to get traffic from wire */
                        status = ice_cfg_dflt_vsi(hw, vsi->idx, true,
                                                  ICE_FLTR_RX);
                        if (status) {
-                               netdev_err(netdev, "Error setting default VSI %i rx rule\n",
+                               netdev_err(netdev, "Error setting default VSI %i Rx rule\n",
                                           vsi->vsi_num);
                                vsi->current_netdev_flags &= ~IFF_PROMISC;
                                err = -EIO;
                                goto out_promisc;
                        }
                } else {
-                       /* Clear Tx filter rule to stop traffic from VMs */
-                       status = ice_cfg_dflt_vsi(hw, vsi->idx, false,
-                                                 ICE_FLTR_TX);
-                       if (status) {
-                               netdev_err(netdev, "Error clearing default VSI %i tx rule\n",
-                                          vsi->vsi_num);
-                               vsi->current_netdev_flags |= IFF_PROMISC;
-                               err = -EIO;
-                               goto out_promisc;
-                       }
                        /* Clear Rx filter to remove traffic from wire */
                        status = ice_cfg_dflt_vsi(hw, vsi->idx, false,
                                                  ICE_FLTR_RX);
                        if (status) {
-                               netdev_err(netdev, "Error clearing default VSI %i rx rule\n",
+                               netdev_err(netdev, "Error clearing default VSI %i Rx rule\n",
                                           vsi->vsi_num);
                                vsi->current_netdev_flags |= IFF_PROMISC;
                                err = -EIO;