On Tue, May 8, 2012 at 6:27 PM, Pravin B Shelar <[email protected]> wrote:
> Use DSCP bits from ToS set on tunnel.
>
> Signed-off-by: Pravin B Shelar <[email protected]>
>
> Bug #8822
I received a white space warning when applying this:
Applying: datapath: Fix Tunnel options ToS
/home/jesse/openvswitch/.git/rebase-apply/patch:15: space before tab in indent.
* router expect RT_TOS bits only. */
warning: 1 line adds whitespace errors.
> diff --git a/datapath/tunnel.c b/datapath/tunnel.c
> index c2133bb..74d99d9 100644
> --- a/datapath/tunnel.c
> +++ b/datapath/tunnel.c
> @@ -1032,7 +1035,6 @@ static struct rtable *find_route(struct vport *vport,
> struct tnl_cache *cur_cache = rcu_dereference(tnl_vport->cache);
>
> *cache = NULL;
> - tos = RT_TOS(tos);
>
> if (likely(tos == mutable->tos &&
> check_cache_valid(cur_cache, mutable))) {
I think we want to push down the RT_TOS call in a different way. The
goal of the checks for tos == mutable->tos is to ensure that any
inherited value can't affect the routing table lookup. However, since
not all bits can have an effect we probably just want to do
RT_TOS(mutable->tos) for the comparison.
One other thing that I noticed is that we don't really want to do
lookups using ECN bits even thought there is overlap. I think we can
avoid this by moving the ECN encapsulation after the routing table
lookup.
> @@ -1402,7 +1403,8 @@ static int tnl_set_config(struct net *net, struct
> nlattr *options,
>
> if (a[OVS_TUNNEL_ATTR_TOS]) {
> mutable->tos = nla_get_u8(a[OVS_TUNNEL_ATTR_TOS]);
> - if (mutable->tos != RT_TOS(mutable->tos))
> + /* Check if ECN bits are zero. */
> + if (!INET_ECN_is_not_ect(mutable->tos))
This might be easier to read as just mutable->tos & INET_ECN_MASK to
avoid the double negative.
> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> index b9b7b97..25d5fce 100644
> --- a/vswitchd/vswitch.xml
> +++ b/vswitchd/vswitch.xml
> @@ -1258,7 +1258,8 @@
>
> <column name="options" key="tos">
> Optional. The value of the ToS bits to be set on the encapsulating
> - packet. It may also be the word <code>inherit</code>, in which case
> + packet. ToS is interpreted as DSCP and ECN bits, ECN part must be
> + zero. It may also be the word \fBinherit\fR, in which case
This isn't a man page, so I think it should continue to use the XML
tags for inherit.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev