On Fri, Dec 19, 2014 at 12:15 PM, Andy Zhou <az...@nicira.com> wrote: > It may be nice to check for inner protocol being set when executing > the set tunnel action. > > On Fri, Dec 19, 2014 at 11:10 AM, Jarno Rajahalme <jrajaha...@nicira.com> > wrote: >> LGTM, >> >> Acked-by: Jarno Rajahalme <jrajaha...@nicira.com> >> >> Jarno >>
Thanks for both reviews, I added a check on tunnel xmit to detect this case and pushed patch to master. >>> On Dec 19, 2014, at 10:50 AM, Pravin B Shelar <pshe...@nicira.com> wrote: >>> >>> Linux stack do not allow GSO for packet with multiple >>> encapsulations. Therefore there was check in MPLS action >>> validation to detect such case, But is it not really required >>> since we already have check in action execution. >>> Removing this check also fixes bug in action copy to no skip >>> multiple set actions. >>> >>> Signed-off-by: Pravin B Shelar <pshe...@nicira.com> >>> Reported-by: Srinivas Neginhal <snegi...@vmware.com> >>> Bug #1367702 >>> --- >>> datapath/flow_netlink.c | 13 ++----------- >>> 1 files changed, 2 insertions(+), 11 deletions(-) >>> >>> diff --git a/datapath/flow_netlink.c b/datapath/flow_netlink.c >>> index 4aae305..c611e71 100644 >>> --- a/datapath/flow_netlink.c >>> +++ b/datapath/flow_netlink.c >>> @@ -1764,7 +1764,6 @@ static int __ovs_nla_copy_actions(const struct nlattr >>> *attr, >>> __be16 eth_type, __be16 vlan_tci, bool log) >>> { >>> const struct nlattr *a; >>> - bool out_tnl_port = false; >>> int rem, err; >>> >>> if (depth >= SAMPLE_ACTION_DEPTH) >>> @@ -1807,7 +1806,6 @@ static int __ovs_nla_copy_actions(const struct nlattr >>> *attr, >>> case OVS_ACTION_ATTR_OUTPUT: >>> if (nla_get_u32(a) >= DP_MAX_PORTS) >>> return -EINVAL; >>> - out_tnl_port = false; >>> >>> break; >>> >>> @@ -1843,14 +1841,9 @@ static int __ovs_nla_copy_actions(const struct >>> nlattr *attr, >>> case OVS_ACTION_ATTR_PUSH_MPLS: { >>> const struct ovs_action_push_mpls *mpls = nla_data(a); >>> >>> - /* Networking stack do not allow simultaneous Tunnel >>> - * and MPLS GSO. >>> - */ >>> - if (out_tnl_port) >>> - return -EINVAL; >>> - >>> if (!eth_p_mpls(mpls->mpls_ethertype)) >>> return -EINVAL; >>> + >>> /* Prohibit push MPLS other than to a white list >>> * for packets that have a known tag order. >>> */ >>> @@ -1884,11 +1877,9 @@ static int __ovs_nla_copy_actions(const struct >>> nlattr *attr, >>> >>> case OVS_ACTION_ATTR_SET: >>> err = validate_set(a, key, sfa, >>> - &out_tnl_port, eth_type, log); >>> + &skip_copy, eth_type, log); >>> if (err) >>> return err; >>> - >>> - skip_copy = out_tnl_port; >>> break; >>> >>> case OVS_ACTION_ATTR_SAMPLE: >>> -- >>> 1.7.1 >>> >>> _______________________________________________ >>> dev mailing list >>> dev@openvswitch.org >>> http://openvswitch.org/mailman/listinfo/dev >> _______________________________________________ >> dev mailing list >> dev@openvswitch.org >> http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev