RE: [Intel-wired-lan] [PATCH net v2 2/2] ixgbe: fix unexpected VLAN Rx in promisc mode on VF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@xxxxxxxxxx> On Behalf Of
> Olivier Matz
> Sent: Wednesday, April 6, 2022 11:53 AM
> To: netdev@xxxxxxxxxxxxxxx
> Cc: Paul Menzel <pmenzel@xxxxxxxxxxxxx>; intel-wired-lan@xxxxxxxxxx;
> stable@xxxxxxxxxxxxxxx; Jakub Kicinski <kuba@xxxxxxxxxx>; Nicolas Dichtel
> <nicolas.dichtel@xxxxxxxxx>; Paolo Abeni <pabeni@xxxxxxxxxx>; David S .
> Miller <davem@xxxxxxxxxxxxx>
> Subject: [Intel-wired-lan] [PATCH net v2 2/2] ixgbe: fix unexpected VLAN Rx in
> promisc mode on VF
> 
> When the promiscuous mode is enabled on a VF, the IXGBE_VMOLR_VPE bit
> (VLAN Promiscuous Enable) is set. This means that the VF will receive
> packets whose VLAN is not the same than the VLAN of the VF.
> 
> For instance, in this situation:
> 
> ┌────────┐    ┌────────┐    ┌────────┐
> │        │    │        │    │        │
> │        │    │        │    │        │
> │     VF0├────┤VF1  VF2├────┤VF3     │
> │        │    │        │    │        │
> └────────┘    └────────┘    └────────┘
>    VM1           VM2           VM3
> 
> vf 0:  vlan 1000
> vf 1:  vlan 1000
> vf 2:  vlan 1001
> vf 3:  vlan 1001
> 
> If we tcpdump on VF3, we see all the packets, even those transmitted on
> vlan 1000.
> 
> This behavior prevents to bridge VF1 and VF2 in VM2, because it will create a
> loop: packets transmitted on VF1 will be received by VF2 and vice-versa, and
> bridged again through the software bridge.
> 
> This patch remove the activation of VLAN Promiscuous when a VF enables
> the promiscuous mode. However, the IXGBE_VMOLR_UPE bit (Unicast
> Promiscuous) is kept, so that a VF receives all packets that has the same
> VLAN, whatever the destination MAC address.
> 
> Fixes: 8443c1a4b192 ("ixgbe, ixgbevf: Add new mbox API xcast mode")
> Cc: stable@xxxxxxxxxxxxxxx
> Cc: Nicolas Dichtel <nicolas.dichtel@xxxxxxxxx>
> Signed-off-by: Olivier Matz <olivier.matz@xxxxxxxxx>
> ---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> index 8d108a78941b..d4e63f0644c3 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
> @@ -1208,9 +1208,9 @@ static int ixgbe_update_vf_xcast_mode(struct

Tested-by: Konrad Jankowski <konrad0.jankowski@xxxxxxxxx>




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux