Very good job, Pasha! I've just a few comments but I really like
the current result.

On Wed, Oct 27, 2021 at 04:05:20PM +0300, Pavel Tikhomirov wrote:
>       NETIF_F_GRO_UDP_FWD_BIT,        /* Allow UDP GRO for forwarding */
> -     /* here goes NETIF_F_HW_MACSEC_BIT in ms, temporarily reverted */
> -                                     /* Offload MACsec operations */
> -     NETIF_F_VENET_BIT,              /* Device is venet device */

Should not we bring NETIF_F_HW_MACSEC_BIT back here?

> diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
> index 2b1d004d6a1f..dfd0a989c4ab 100644
> --- a/net/bridge/br_forward.c
> +++ b/net/bridge/br_forward.c
> @@ -33,7 +33,10 @@ static inline int should_deliver(const struct 
> net_bridge_port *p,
>  int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff 
> *skb)
>  {
>       skb_push(skb, ETH_HLEN);
> -     if (!(skb->dev->features & NETIF_F_VENET) &&
> +     if (
> +#ifdef CONFIG_VE
> +         !(skb->dev->ve_features & NETIF_F_VENET) &&
> +#endif
>           !is_skb_forwardable(skb->dev, skb))
>               goto drop;

Maybe instead of such ugly constructions we could do something like

#ifdef CONFIG_VE
        if (!(skb->dev->ve_features & NETIF_F_VENET))
                goto drop;
#endif

        if (!is_skb_forwardable(skb->dev, skb))
                goto drop;

after all the compiler will have to test both conditions so I don't think
we improve anything if merge them into one ugly if statement. What do you
think?

> @@ -11425,7 +11425,7 @@ netdev_features_t 
> netdev_increment_features(netdev_features_t all,
>               mask |= NETIF_F_CSUM_MASK;
>       mask |= NETIF_F_VLAN_CHALLENGED;
>  
> -     all |= one & (NETIF_F_ONE_FOR_ALL|NETIF_F_CSUM_MASK|NETIF_F_VIRTUAL) & 
> mask;
> +     all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask;
>       all &= one | ~NETIF_F_ALL_FOR_ALL;

This looks somehow suspicious, we no longer consider virtual bit here.
Are you sure it is expected?

> diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
> index bf4d8cdb9725..54964c5d3f1f 100644
> --- a/net/ipv4/fib_frontend.c
> +++ b/net/ipv4/fib_frontend.c
> @@ -378,7 +378,10 @@ static int __fib_validate_source(struct sk_buff *skb, 
> __be32 src, __be32 dst,
>       if (fib_lookup(net, &fl4, &res, 0))
>               goto last_resort;
>       if (res.type != RTN_UNICAST &&
> -         (!(dev->features & NETIF_F_VENET) ||
> +         (
> +#ifdef CONFIG_VE
> +          !(dev->ve_features & NETIF_F_VENET) ||
> +#endif
>            res.type != RTN_LOCAL || !IN_DEV_ACCEPT_LOCAL(idev)))
>               goto e_inval;

Meh :) But seems the only option)

> +++ b/net/ipv4/ipip.c
> @@ -384,7 +384,9 @@ static void ipip_tunnel_setup(struct net_device *dev)
>       netif_keep_dst(dev);
>  
>       dev->features           |= IPIP_FEATURES;
> -     dev->features           |= NETIF_F_VIRTUAL;
> +#ifdef CONFIG_VE
> +     dev->ve_features = NETIF_F_VIRTUAL;
> +#endif

Please align assignment to be similar with code around, ie

        dev->ve_features         = NETIF_F_VIRTUAL;

> @@ -1445,7 +1445,9 @@ static void ipip6_tunnel_setup(struct net_device *dev)
>       dev->addr_len           = 4;
>       dev->features           |= NETIF_F_LLTX;
>       dev->features           |= SIT_FEATURES;
> -     dev->features           |= NETIF_F_VIRTUAL;
> +#ifdef CONFIG_VE
> +     dev->ve_features = NETIF_F_VIRTUAL;
> +#endif

Same here.

> +++ b/net/netfilter/nf_nat_redirect.c
> @@ -60,7 +60,7 @@ nf_nat_redirect_ipv4(struct sk_buff *skb,
>                                * should use first nonloopback ifa in
>                                * the list.
>                                */
> -                             if (skb->dev->features & NETIF_F_VENET) {
> +                             if (skb->dev->ve_features & NETIF_F_VENET) {

#ifdef CONFIG_VE above?


        Cyrill
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to