diff options
Diffstat (limited to 'drivers/net/vxlan.c')
-rw-r--r-- | drivers/net/vxlan.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 3b3fdf648ea7..656230e0d18c 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c | |||
@@ -505,7 +505,8 @@ static int vxlan_join_group(struct net_device *dev) | |||
505 | struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); | 505 | struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); |
506 | struct sock *sk = vn->sock->sk; | 506 | struct sock *sk = vn->sock->sk; |
507 | struct ip_mreqn mreq = { | 507 | struct ip_mreqn mreq = { |
508 | .imr_multiaddr.s_addr = vxlan->gaddr, | 508 | .imr_multiaddr.s_addr = vxlan->gaddr, |
509 | .imr_ifindex = vxlan->link, | ||
509 | }; | 510 | }; |
510 | int err; | 511 | int err; |
511 | 512 | ||
@@ -532,7 +533,8 @@ static int vxlan_leave_group(struct net_device *dev) | |||
532 | int err = 0; | 533 | int err = 0; |
533 | struct sock *sk = vn->sock->sk; | 534 | struct sock *sk = vn->sock->sk; |
534 | struct ip_mreqn mreq = { | 535 | struct ip_mreqn mreq = { |
535 | .imr_multiaddr.s_addr = vxlan->gaddr, | 536 | .imr_multiaddr.s_addr = vxlan->gaddr, |
537 | .imr_ifindex = vxlan->link, | ||
536 | }; | 538 | }; |
537 | 539 | ||
538 | /* Only leave group when last vxlan is done. */ | 540 | /* Only leave group when last vxlan is done. */ |
@@ -1189,6 +1191,7 @@ static void vxlan_setup(struct net_device *dev) | |||
1189 | 1191 | ||
1190 | dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; | 1192 | dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; |
1191 | dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; | 1193 | dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; |
1194 | dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; | ||
1192 | 1195 | ||
1193 | spin_lock_init(&vxlan->hash_lock); | 1196 | spin_lock_init(&vxlan->hash_lock); |
1194 | 1197 | ||