diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2005-05-29 17:13:47 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-05-29 17:13:47 -0400 |
commit | d8a33ac435c43a1a404b2ec560ef1d1536710c36 (patch) | |
tree | 04359c09e0731e9c33a8c2dd80cc69404e0dde60 /net/core/ethtool.c | |
parent | 45b30105e7231b70bb855923dbca443ee3ba44c3 (diff) |
[BRIDGE]: features change notification
Resend of earlier patch (no changes) from Catalin used to provide
device feature change notification.
Signed-off-by: Catalin BOIE <catab at umbrella.ro>
Acked-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/ethtool.c')
-rw-r--r-- | net/core/ethtool.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index f05fde97c43..252bfc6f03f 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c | |||
@@ -682,6 +682,7 @@ int dev_ethtool(struct ifreq *ifr) | |||
682 | void __user *useraddr = ifr->ifr_data; | 682 | void __user *useraddr = ifr->ifr_data; |
683 | u32 ethcmd; | 683 | u32 ethcmd; |
684 | int rc; | 684 | int rc; |
685 | int old_features; | ||
685 | 686 | ||
686 | /* | 687 | /* |
687 | * XXX: This can be pushed down into the ethtool_* handlers that | 688 | * XXX: This can be pushed down into the ethtool_* handlers that |
@@ -703,6 +704,8 @@ int dev_ethtool(struct ifreq *ifr) | |||
703 | if ((rc = dev->ethtool_ops->begin(dev)) < 0) | 704 | if ((rc = dev->ethtool_ops->begin(dev)) < 0) |
704 | return rc; | 705 | return rc; |
705 | 706 | ||
707 | old_features = dev->features; | ||
708 | |||
706 | switch (ethcmd) { | 709 | switch (ethcmd) { |
707 | case ETHTOOL_GSET: | 710 | case ETHTOOL_GSET: |
708 | rc = ethtool_get_settings(dev, useraddr); | 711 | rc = ethtool_get_settings(dev, useraddr); |
@@ -712,7 +715,6 @@ int dev_ethtool(struct ifreq *ifr) | |||
712 | break; | 715 | break; |
713 | case ETHTOOL_GDRVINFO: | 716 | case ETHTOOL_GDRVINFO: |
714 | rc = ethtool_get_drvinfo(dev, useraddr); | 717 | rc = ethtool_get_drvinfo(dev, useraddr); |
715 | |||
716 | break; | 718 | break; |
717 | case ETHTOOL_GREGS: | 719 | case ETHTOOL_GREGS: |
718 | rc = ethtool_get_regs(dev, useraddr); | 720 | rc = ethtool_get_regs(dev, useraddr); |
@@ -801,6 +803,10 @@ int dev_ethtool(struct ifreq *ifr) | |||
801 | 803 | ||
802 | if(dev->ethtool_ops->complete) | 804 | if(dev->ethtool_ops->complete) |
803 | dev->ethtool_ops->complete(dev); | 805 | dev->ethtool_ops->complete(dev); |
806 | |||
807 | if (old_features != dev->features) | ||
808 | netdev_features_change(dev); | ||
809 | |||
804 | return rc; | 810 | return rc; |
805 | 811 | ||
806 | ioctl: | 812 | ioctl: |