On 20/05/2019 17:29, Jamal Hadi Salim wrote:
> On 2019-05-20 12:10 p.m., Edward Cree wrote:
>> # tc filter del dev $vfrep parent ffff: pref 49151
>> # tc -stats filter show dev $vfrep parent ffff:
>> filter protocol arp pref 49152 flower chain 0
>> filter protocol arp pref 49152 flower chain 0 handle 0x1
>> eth_type arp
>> skip_sw
>> in_hw in_hw_count 1
>> action order 1: vlan push id 100 protocol 802.1Q priority 0 pipe
>> index 1 ref 1 bind 1 installed 180 sec used 180 sec
>> Action statistics:
>> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
>> backlog 0b 0p requeues 0
>>
>> action order 2: mirred (Egress Mirror to device $pf) pipe
>> index 101 ref 1 bind 1 installed 180 sec used 169 sec
>> Action statistics:
>> Sent 256 bytes 4 pkt (dropped 0, overlimits 0 requeues 0)
>> Sent software 0 bytes 0 pkt
>> Sent hardware 256 bytes 4 pkt
>> backlog 0b 0p requeues 0
>>
>> action order 3: vlan pop pipe
>> index 2 ref 1 bind 1 installed 180 sec used 180 sec
>> Action statistics:
>> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
>> backlog 0b 0p requeues 0
>>
>> #
>>
>
> Hold on, did you intentionaly add that "protocol arp" there?
Yes; if you go back to my `tc filter add` commands, I had one matching
'protocol arp' and the other 'protocol ipv4', and the latter is the one
I then deleted. I'm not 100% sure why `tc filter show` prints it twice
('protocol' and 'eth_type'), though.
>> # tc -s actions get action mirred index 101
>> total acts 0
>>
>> action order 1: mirred (Egress Mirror to device $pf) pipe
>> index 101 ref 1 bind 1 installed 796 sec used 785 sec
>> Action statistics:
>> Sent 256 bytes 4 pkt (dropped 0, overlimits 0 requeues 0)
>> Sent software 0 bytes 0 pkt
>> Sent hardware 256 bytes 4 pkt
>> backlog 0b 0p requeues 0
>> #
>
> Assuming in this case you added by value the actions? Bind and ref
> are 1 each.
Yes, the mirreds were added by value.
> Possible an offload bug that was already in existence. Can you try the
> same steps but without offloading and see if you see the same behavior?
Running with 'skip_hw' instead of 'skip_sw', I *don't* see the same
behaviour.
-Ed