On Mon, Nov 17, 2014 at 10:53 AM, Lori Jakab <loja...@cisco.com> wrote: > On 11/17/14 8:48 PM, Jesse Gross wrote: >> >> On Mon, Nov 17, 2014 at 10:46 AM, Lori Jakab <loja...@cisco.com> wrote: >>> >>> On 11/17/14 8:28 PM, Jesse Gross wrote: >>>> >>>> On Mon, Nov 17, 2014 at 9:24 AM, Lorand Jakab <loja...@cisco.com> wrote: >>>>> >>>>> diff --git a/datapath/flow.c b/datapath/flow.c >>>>> index 69b13b3..b01f7bd 100644 >>>>> --- a/datapath/flow.c >>>>> +++ b/datapath/flow.c >>>>> @@ -459,28 +459,31 @@ static int key_extract(struct sk_buff *skb, >>>>> struct >>>>> sw_flow_key *key) >>>>> >>>>> skb_reset_mac_header(skb); >>>>> >>>>> - /* Link layer. We are guaranteed to have at least the 14 byte >>>>> Ethernet >>>>> - * header in the linear data area. >>>>> - */ >>>>> - eth = eth_hdr(skb); >>>>> - ether_addr_copy(key->eth.src, eth->h_source); >>>>> - ether_addr_copy(key->eth.dst, eth->h_dest); >>>>> + /* Link layer. */ >>>>> + if (key->phy.is_layer3) { >>>>> + key->eth.tci = 0; >>>>> + key->eth.type = skb->protocol; >>>> >>>> Were you going to drop setting the TCI here? >>> >>> >>> Yes, but then I figured it out why I needed to set it: validation code is >>> relying on it in a few functions. >> >> That's fine if it is being used. But out of curiosity, where? > > I have to look it up, I know that without TCI being set to 0, L3 packets are > not matching against the rule installed in the datapath and have to take the > slow path again.
OK, my guess is that it is this line in ovs_nla_get_match(): /* Always match on tci. */ SW_FLOW_KEY_PUT(match, eth.tci, htons(0xffff), true); _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev