Hi fortville Experts,

Was trying to use VLAN Table (for filtering) in conjunction with MACVLAN table 
mentioned in "7.4.8.3 L2 Filtering Algorithm" (also cut n' pasted below)

My test scenario:
1. In SRIOV mode, gave one VF to VM. For that, I added the corresponding MAC 
into MACVLAN table with vlan=25
2. Added VLAN table with vlan=25. (For p.VPE=0 I used 
'i40e_aqc_opc_set_vsi_promiscuous_modes' opcode with vlan promiscuous.)

Now the packets are coming into this VM.

1. Now, I delete the vlan=25 entry in the VLAN table (expecting that packets 
stop coming in)
2. Packets are still coming in.

But I am confused with this behavior. According the algorithm below, Namely:
" EFilter = MFilter and (VFilter or p.VPE} and AddressType == Unicast;"

The packets should have stopped coming in. What am I missing?

Is there any global setting /register that I need to toggle for the VLAN table 
to be effective?

Is VSI setup needs additional flags? Not sure

thanks,
Shankar.

I40e Driver Version: 1.2.37

7.4.8.3 L2 Filtering Algorithm
The following pseudo code describes the algorithm used to determine if a packet 
passes the L2 filtering
element.
// Global parameters
// Define Lookup tables
MacVlan Table: Array of {MAC (MAC Address), VLAN (VLAN tag)}
Ethernet Controller XL710 - Internal Switch
728
Mac Table: Array of {MAC (MAC Address)}
VLAN table: Array of {VLAN (VLAN tag)}
HashMacVlan Table: Array of {HashMAC (Hash Values), VLAN (VLAN tag), 
AddressType}
HashMac Table: Array of {HashMAC (Hash Values) , AddressType}
EtherType Table : Array of {Etype (Ethertypes Values)}
MacEtherType Table: Array of {MAC (MAC Address), Etype (Ethertype value)}
// Define Virtual ports modes
Port.PUE // Promiscuous Unicast Enable
Port.PME // Promiscuous Multicast Enable
Port.BAM // Broadcast Enable
Port.VPE // Promiscuous VLAN enable
Port.MaxSize: Max Packet size
L2_function(Packet)
// Variables
MFilter: = False // MAC Filtering
VFilter: = False // VLAN Filtering
EFilter: = False // Exclusive Filtering
NEPMFilter = False // Non Exclusive Perfect MAC Filtering
NEPFilter = False // Non Exclusive Perfect Filtering
NEIPMFilter = False // Non Exclusive Imperfect MAC Filtering
NEIPFilter = False // Non Exclusive Imperfect Filtering
Pass = False // Final decision.
//Define packet parameters
DA = Packet.DA //Destination Address of the packet
VID = Packet.VLAN ID // Vlan tag of the packet
Etype = Packet.Ethertype // Ethertype of the packet
AddressType //Type of address of the DA. Can be Unicast, Multicast or Broadcast.
HDA = HashFunction(DA).
PSize: Packet size. This do not include any tag or other header removed by 
previous stages or to be added by following stages.

// Exclusive Filters
For Each entry e in MacVlan Table
If (DA == e.MAC and (VID == e.VLAN or (VID == NULL and e.VLAN == 0)) MFilter = 
True;
For Each entry e in Mac Table
If (DA == e.MAC) MFilter = True;
For Each entry e in Ethertype Table
If (Etype == e.Etype) MFilter = True;
For Each entry e in MacEthertype Table
If (DA == e.MAC and Etype == e.Etype) MFilter = True;
For Each entry e in Vlan Table
If (VID == e.VLAN or (VID == NULL and e.VLAN == 0)) VFilter = True;
// VLAN filters are ANDed with the previous filters unless promiscuous VLAN is 
enabled
EFilter = MFilter and (VFilter or p.VPE} and AddressType == Unicast;
// Non Exclusive Perfect Filters
If (AddressType == Unicast and p.PUE == 1) NEPMFilter = True;
If (AddressType == Multicast and (p.PME == 1 or MFilter)) NEPMFilter = True;
If (AddressType == Broadcast and (p.BAM == 1 or MFilter)) NEPMFilter = True;
// VLAN filters are ANDed with the previous filters unless promiscuous VLAN is 
enabled
NEPFilter = NEPMFilter and (VFilter or p.VPE};
// Non Exclusive Imperfect Filters
For Each entry e in HashMACVlan Table
If (HDA == e.HashMAC and (VID == e.VLAN or (VID == NULL and e.VLAN == 0)) and 
AddressType == e.AddressType) NEIPMFilter = True;
For Each entry e in HashMAC Table
If (HDA == e.HashMAC and AddressType == e.AddressType) NEIPMFilter = True;
// VLAN filters are ANDed with the previous filters unless promiscuous VLAN is 
enabled
NIEPFilter = NIEPMFilter and (VFilter or p.VPE};
// Packet size filtering is done at the queue level, so it is not part of the 
switch algorithm
Pass = (EFilter or NEPFilter or NEIPFilter)
Return Pass;
}

-----Original Message-----
From: Ronciak, John [mailto:john.ronc...@intel.com]
Sent: Tuesday, September 15, 2015 10:40 AM
To: Fujinaka, Todd <todd.fujin...@intel.com>; zheloba...@prosoftsystems.ru; 
e1000-devel@lists.sourceforge.net
Subject: Re: [E1000-devel] Intel 82551IL chips

As long as there is no copy and pasting from the Linux driver to the QNX driver 
it should not be a problem.  I'm not a lawyer but that's generally the case.  
That said, since the driver works after another a second reboot it's probably 
not related to the driver.  This is probably something that is related to the 
system during the PCI enumeration of devices.  Are all the other devices seen 
on a cold boot?  Is there an equivalent to 'lspci' in QNX?  If so what's it 
show on the first boot from power-off?  Are all the devices seen at that point 
or are some missing?

Cheers,
John

> -----Original Message-----
> From: Fujinaka, Todd [mailto:todd.fujin...@intel.com]
> Sent: Tuesday, September 15, 2015 9:43 AM
> To: zheloba...@prosoftsystems.ru<mailto:zheloba...@prosoftsystems.ru>; 
> e1000-devel@lists.sourceforge.net<mailto:e1000-devel@lists.sourceforge.net>
> Subject: Re: [E1000-devel] Intel 82551IL chips
>
> The 82551L has been EOLed for about nine years by my estimation. We
> don't have any further support for it.
>
> Also, it is probably a violation of the GPL to start with the Linux
> driver to work on the QNX driver. I would suggest trying the FreeBSD driver.
>
> Todd Fujinaka
> Software Application Engineer
> Networking Division (ND)
> Intel Corporation
> todd.fujin...@intel.com<mailto:todd.fujin...@intel.com>
> (503) 712-4565
>
> -----Original Message-----
> From: Желобанов Дмитрий Владимирович
> [mailto:zheloba...@prosoftsystems.ru]
> Sent: Tuesday, September 15, 2015 5:15 AM
> To: 
> e1000-devel@lists.sourceforge.net<mailto:e1000-devel@lists.sourceforge.net>
> Subject: [E1000-devel] Intel 82551IL chips
>
> Hello,
>
> We use chips 82551IL (did 0x1209 rev 0x10) in our embedded platforms.
> Our devices run QNX operation system. We faced with an issue:
> sometimes our devices don't receive Ethernet packets right after boot
> at all, only reboot helps to revive the devices. We think the root
> problem is in hardware- software communication with the Ethernet
> controller, or rather in QNX Ethernet driver.
> I looked in Linux driver (e100.c) and found, the driver uploads
> special firmware in chips like ours.
>
> So, could you give us a document which clarifies changes in
> d102e_ucode.bin firmware from the original on chip microcode?
>
> Желобанов Д.В.
> ООО <Прософт-Системы>, г. Екатеринбург.
>
>
> ----------------------------------------------------------------------
> -------- _______________________________________________
> E1000-devel mailing list
> E1000-devel@lists.sourceforge.net<mailto:E1000-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/e1000-devel
> To learn more about Intel&#174; Ethernet, visit
> http://communities.intel.com/community/wired

------------------------------------------------------------------------------
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net<mailto:E1000-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

------------------------------------------------------------------------------
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to