> -----Original Message-----
> From: Jesse Gross [mailto:[email protected]]
> Sent: Wednesday, September 09, 2015 10:41 PM
> To: Manish Chopra
> Cc: [email protected]; [email protected]; Yuval Mintz; Ashish Kumar
> Subject: Re: [OVS v2.4.0] - VXLAN UDP port configuration is not notified to L2
> driver/interface.
>
> On Wed, Sep 9, 2015 at 3:03 AM, Manish Chopra <[email protected]>
> wrote:
> > Hi,
> >
> > Detailed Description :
> >
> > I am trying to test VXLAN with OVS bridge with L2 driver. With OVS
> > release version [2.4.0] package VXLAN udp port configuration is not
> > notified to L2 driver
> >
> > via ndo_add_vxlan_port interface. Due to this hardware is not able to
> > do offload of features [like checksum etc.], Hence TCP/IP traffic with
> > encapsulated offload enabled on NIC is not working.
>
> You mean offloads aren't being performed and therefore things are slower than
> if it was done in hardware or traffic doesn't flow?
> Offloads should never be mandatory.
>
> What is the base kernel version?
Traffic doesn't flow at all. Our hardware is supportive for encap offloads only
when UDP port is configured on hardware.
We claim to support below features for encapsulation -
ndev->hw_enc_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM
If we remove these features from "ndev->hw_enc_features" then traffic works
fine.
Base kernel version is 3.10.0-229.el7.x86_64.
With earlier version of OVS, UDP port used to be arrived to the L2 driver
which used to configure given UDP port on hardware, hence traffic was working
fine with above features
enabled in " ndev->hw_enc_features ".
Using our driver with just VXLAN module works fine as VXLAN module layer always
notify UDP port to the driver. Please see below code snippet.
The only problem we see is with OVS environment and that too with latest OVS
released package.
/* Notify netdevs that UDP port started listening */
static void vxlan_notify_add_rx_port(struct vxlan_sock *vs)
{
struct net_device *dev;
struct sock *sk = vs->sock->sk;
struct net *net = sock_net(sk);
sa_family_t sa_family = vxlan_get_sk_family(vs);
__be16 port = inet_sk(sk)->inet_sport;
int err;
if (sa_family == AF_INET) {
err = udp_add_offload(&vs->udp_offloads);
if (err)
pr_warn("vxlan: udp_add_offload failed with status
%d\n", err);
}
rcu_read_lock();
for_each_netdev_rcu(net, dev) {
if (dev->netdev_ops->ndo_add_vxlan_port)
dev->netdev_ops->ndo_add_vxlan_port(dev, sa_family,
port);
}
rcu_read_unlock();
}
Thanks.
________________________________
This message and any attached documents contain information from the sending
company or its parent company(s), subsidiaries, divisions or branch offices
that may be confidential. If you are not the intended recipient, you may not
read, copy, distribute, or use this information. If you have received this
transmission in error, please notify the sender immediately by reply e-mail and
then delete this message.
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss