diff options
author | Frank Blaschka <frank.blaschka@de.ibm.com> | 2009-01-08 13:50:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-08 13:50:20 -0500 |
commit | cc883d16c3b7434c7da2c45b54a49c2a99e83db7 (patch) | |
tree | 12ad0db6989cdbcae745cb09a33e4e7ded7383c6 | |
parent | f52deb0e8408515ecf58c330c93fa99b8cb53cb4 (diff) |
vlan: add neigh_setup
In case the real device has a neigh_setup function, this
neigh_setup function should be used for the vlan device.
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/8021q/vlan_dev.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 89a3bbdfca3f..4a19acd3a32b 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -546,6 +546,18 @@ static int vlan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
546 | return err; | 546 | return err; |
547 | } | 547 | } |
548 | 548 | ||
549 | static int vlan_dev_neigh_setup(struct net_device *dev, struct neigh_parms *pa) | ||
550 | { | ||
551 | struct net_device *real_dev = vlan_dev_info(dev)->real_dev; | ||
552 | const struct net_device_ops *ops = real_dev->netdev_ops; | ||
553 | int err = 0; | ||
554 | |||
555 | if (netif_device_present(real_dev) && ops->ndo_neigh_setup) | ||
556 | err = ops->ndo_neigh_setup(dev, pa); | ||
557 | |||
558 | return err; | ||
559 | } | ||
560 | |||
549 | static void vlan_dev_change_rx_flags(struct net_device *dev, int change) | 561 | static void vlan_dev_change_rx_flags(struct net_device *dev, int change) |
550 | { | 562 | { |
551 | struct net_device *real_dev = vlan_dev_info(dev)->real_dev; | 563 | struct net_device *real_dev = vlan_dev_info(dev)->real_dev; |
@@ -713,6 +725,7 @@ static const struct net_device_ops vlan_netdev_ops = { | |||
713 | .ndo_set_multicast_list = vlan_dev_set_rx_mode, | 725 | .ndo_set_multicast_list = vlan_dev_set_rx_mode, |
714 | .ndo_change_rx_flags = vlan_dev_change_rx_flags, | 726 | .ndo_change_rx_flags = vlan_dev_change_rx_flags, |
715 | .ndo_do_ioctl = vlan_dev_ioctl, | 727 | .ndo_do_ioctl = vlan_dev_ioctl, |
728 | .ndo_neigh_setup = vlan_dev_neigh_setup, | ||
716 | }; | 729 | }; |
717 | 730 | ||
718 | static const struct net_device_ops vlan_netdev_accel_ops = { | 731 | static const struct net_device_ops vlan_netdev_accel_ops = { |
@@ -728,6 +741,7 @@ static const struct net_device_ops vlan_netdev_accel_ops = { | |||
728 | .ndo_set_multicast_list = vlan_dev_set_rx_mode, | 741 | .ndo_set_multicast_list = vlan_dev_set_rx_mode, |
729 | .ndo_change_rx_flags = vlan_dev_change_rx_flags, | 742 | .ndo_change_rx_flags = vlan_dev_change_rx_flags, |
730 | .ndo_do_ioctl = vlan_dev_ioctl, | 743 | .ndo_do_ioctl = vlan_dev_ioctl, |
744 | .ndo_neigh_setup = vlan_dev_neigh_setup, | ||
731 | }; | 745 | }; |
732 | 746 | ||
733 | void vlan_setup(struct net_device *dev) | 747 | void vlan_setup(struct net_device *dev) |