aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2007-09-15 17:41:06 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:51:17 -0400
commit88d3aafdae5c5e1d2dd9489a5c8a24e29d335f2e (patch)
tree272ce75c30a170420ac8bbfd679c3faed9f9d20a
parent09f75cd7bf13720738e6a196cc0107ce9a5bd5a0 (diff)
[ETHTOOL] Provide default behaviors for a few ethtool sub-ioctls
For the operations get-tx-csum get-sg get-tso get-ufo the default ethtool_op_xxx behavior is fine for all drivers, so we permit op==NULL to imply the default behavior. This provides a more uniform behavior across all drivers, eliminating ethtool(8) "ioctl not supported" errors on older drivers that had not been updated for the latest sub-ioctls. The ethtool_op_xxx() functions are left exported, in case anyone wishes to call them directly from a driver-private implementation -- a not-uncommon case. Should an ethtool_op_xxx() helper remain unused for a while, except by net/core/ethtool.c, we can un-export it at a later date. [ Resolved conflicts with set/get value ethtool patch... -DaveM ] Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/8139cp.c3
-rw-r--r--drivers/net/atl1/atl1_ethtool.c3
-rw-r--r--drivers/net/bnx2.c3
-rw-r--r--drivers/net/bonding/bond_main.c4
-rw-r--r--drivers/net/chelsio/cxgb2.c3
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c3
-rw-r--r--drivers/net/e1000/e1000_ethtool.c2
-rw-r--r--drivers/net/ehea/ehea_ethtool.c3
-rw-r--r--drivers/net/epic100.c2
-rw-r--r--drivers/net/fealnx.c2
-rw-r--r--drivers/net/fec_8xx/fec_main.c2
-rw-r--r--drivers/net/forcedeth.c3
-rw-r--r--drivers/net/fs_enet/fs_enet-main.c2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_core.c2
-rw-r--r--drivers/net/ibmveth.c6
-rw-r--r--drivers/net/ixgb/ixgb_ethtool.c2
-rw-r--r--drivers/net/loopback.c1
-rw-r--r--drivers/net/macvlan.c4
-rw-r--r--drivers/net/mv643xx_eth.c1
-rw-r--r--drivers/net/myri10ge/myri10ge.c3
-rw-r--r--drivers/net/ne2k-pci.c2
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c3
-rw-r--r--drivers/net/pcnet32.c3
-rw-r--r--drivers/net/r8169.c3
-rw-r--r--drivers/net/s2io.c3
-rw-r--r--drivers/net/sc92031.c4
-rw-r--r--drivers/net/skge.c2
-rw-r--r--drivers/net/sky2.c3
-rw-r--r--drivers/net/spider_net_ethtool.c1
-rw-r--r--drivers/net/tg3.c3
-rw-r--r--drivers/net/tulip/de2104x.c2
-rw-r--r--drivers/net/tulip/winbond-840.c2
-rw-r--r--drivers/net/typhoon.c3
-rw-r--r--drivers/net/ucc_geth_ethtool.c2
-rw-r--r--drivers/net/via-rhine.c2
-rw-r--r--drivers/net/xen-netfront.c3
-rw-r--r--net/bridge/br_device.c3
-rw-r--r--net/core/ethtool.c16
38 files changed, 13 insertions, 101 deletions
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index 30310ed9f75f..58fad1b2f72e 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -1572,11 +1572,8 @@ static const struct ethtool_ops cp_ethtool_ops = {
1572 .set_msglevel = cp_set_msglevel, 1572 .set_msglevel = cp_set_msglevel,
1573 .get_rx_csum = cp_get_rx_csum, 1573 .get_rx_csum = cp_get_rx_csum,
1574 .set_rx_csum = cp_set_rx_csum, 1574 .set_rx_csum = cp_set_rx_csum,
1575 .get_tx_csum = ethtool_op_get_tx_csum,
1576 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */ 1575 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */
1577 .get_sg = ethtool_op_get_sg,
1578 .set_sg = ethtool_op_set_sg, 1576 .set_sg = ethtool_op_set_sg,
1579 .get_tso = ethtool_op_get_tso,
1580 .set_tso = ethtool_op_set_tso, 1577 .set_tso = ethtool_op_set_tso,
1581 .get_regs = cp_get_regs, 1578 .get_regs = cp_get_regs,
1582 .get_wol = cp_get_wol, 1579 .get_wol = cp_get_wol,
diff --git a/drivers/net/atl1/atl1_ethtool.c b/drivers/net/atl1/atl1_ethtool.c
index 1f616c5c1473..53353b60a9c8 100644
--- a/drivers/net/atl1/atl1_ethtool.c
+++ b/drivers/net/atl1/atl1_ethtool.c
@@ -489,15 +489,12 @@ const struct ethtool_ops atl1_ethtool_ops = {
489 .get_pauseparam = atl1_get_pauseparam, 489 .get_pauseparam = atl1_get_pauseparam,
490 .set_pauseparam = atl1_set_pauseparam, 490 .set_pauseparam = atl1_set_pauseparam,
491 .get_rx_csum = atl1_get_rx_csum, 491 .get_rx_csum = atl1_get_rx_csum,
492 .get_tx_csum = ethtool_op_get_tx_csum,
493 .set_tx_csum = ethtool_op_set_tx_hw_csum, 492 .set_tx_csum = ethtool_op_set_tx_hw_csum,
494 .get_link = ethtool_op_get_link, 493 .get_link = ethtool_op_get_link,
495 .get_sg = ethtool_op_get_sg,
496 .set_sg = ethtool_op_set_sg, 494 .set_sg = ethtool_op_set_sg,
497 .get_strings = atl1_get_strings, 495 .get_strings = atl1_get_strings,
498 .nway_reset = atl1_nway_reset, 496 .nway_reset = atl1_nway_reset,
499 .get_ethtool_stats = atl1_get_ethtool_stats, 497 .get_ethtool_stats = atl1_get_ethtool_stats,
500 .get_stats_count = atl1_get_stats_count, 498 .get_stats_count = atl1_get_stats_count,
501 .get_tso = ethtool_op_get_tso,
502 .set_tso = ethtool_op_set_tso, 499 .set_tso = ethtool_op_set_tso,
503}; 500};
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index f1e7204f78c9..5ee805b3e0e6 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6257,11 +6257,8 @@ static const struct ethtool_ops bnx2_ethtool_ops = {
6257 .set_pauseparam = bnx2_set_pauseparam, 6257 .set_pauseparam = bnx2_set_pauseparam,
6258 .get_rx_csum = bnx2_get_rx_csum, 6258 .get_rx_csum = bnx2_get_rx_csum,
6259 .set_rx_csum = bnx2_set_rx_csum, 6259 .set_rx_csum = bnx2_set_rx_csum,
6260 .get_tx_csum = ethtool_op_get_tx_csum,
6261 .set_tx_csum = bnx2_set_tx_csum, 6260 .set_tx_csum = bnx2_set_tx_csum,
6262 .get_sg = ethtool_op_get_sg,
6263 .set_sg = ethtool_op_set_sg, 6261 .set_sg = ethtool_op_set_sg,
6264 .get_tso = ethtool_op_get_tso,
6265 .set_tso = bnx2_set_tso, 6262 .set_tso = bnx2_set_tso,
6266 .self_test_count = bnx2_self_test_count, 6263 .self_test_count = bnx2_self_test_count,
6267 .self_test = bnx2_self_test, 6264 .self_test = bnx2_self_test,
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 88ff72ac9b0a..ea58144c220e 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4202,10 +4202,6 @@ static void bond_ethtool_get_drvinfo(struct net_device *bond_dev,
4202} 4202}
4203 4203
4204static const struct ethtool_ops bond_ethtool_ops = { 4204static const struct ethtool_ops bond_ethtool_ops = {
4205 .get_tx_csum = ethtool_op_get_tx_csum,
4206 .get_tso = ethtool_op_get_tso,
4207 .get_ufo = ethtool_op_get_ufo,
4208 .get_sg = ethtool_op_get_sg,
4209 .get_drvinfo = bond_ethtool_get_drvinfo, 4205 .get_drvinfo = bond_ethtool_get_drvinfo,
4210}; 4206};
4211 4207
diff --git a/drivers/net/chelsio/cxgb2.c b/drivers/net/chelsio/cxgb2.c
index 884aa0cd0006..7029f13d008d 100644
--- a/drivers/net/chelsio/cxgb2.c
+++ b/drivers/net/chelsio/cxgb2.c
@@ -794,9 +794,7 @@ static const struct ethtool_ops t1_ethtool_ops = {
794 .set_pauseparam = set_pauseparam, 794 .set_pauseparam = set_pauseparam,
795 .get_rx_csum = get_rx_csum, 795 .get_rx_csum = get_rx_csum,
796 .set_rx_csum = set_rx_csum, 796 .set_rx_csum = set_rx_csum,
797 .get_tx_csum = ethtool_op_get_tx_csum,
798 .set_tx_csum = ethtool_op_set_tx_csum, 797 .set_tx_csum = ethtool_op_set_tx_csum,
799 .get_sg = ethtool_op_get_sg,
800 .set_sg = ethtool_op_set_sg, 798 .set_sg = ethtool_op_set_sg,
801 .get_link = ethtool_op_get_link, 799 .get_link = ethtool_op_get_link,
802 .get_strings = get_strings, 800 .get_strings = get_strings,
@@ -804,7 +802,6 @@ static const struct ethtool_ops t1_ethtool_ops = {
804 .get_ethtool_stats = get_stats, 802 .get_ethtool_stats = get_stats,
805 .get_regs_len = get_regs_len, 803 .get_regs_len = get_regs_len,
806 .get_regs = get_regs, 804 .get_regs = get_regs,
807 .get_tso = ethtool_op_get_tso,
808 .set_tso = set_tso, 805 .set_tso = set_tso,
809}; 806};
810 807
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index 19937498589d..04633ea55202 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -1634,9 +1634,7 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
1634 .set_pauseparam = set_pauseparam, 1634 .set_pauseparam = set_pauseparam,
1635 .get_rx_csum = get_rx_csum, 1635 .get_rx_csum = get_rx_csum,
1636 .set_rx_csum = set_rx_csum, 1636 .set_rx_csum = set_rx_csum,
1637 .get_tx_csum = ethtool_op_get_tx_csum,
1638 .set_tx_csum = ethtool_op_set_tx_csum, 1637 .set_tx_csum = ethtool_op_set_tx_csum,
1639 .get_sg = ethtool_op_get_sg,
1640 .set_sg = ethtool_op_set_sg, 1638 .set_sg = ethtool_op_set_sg,
1641 .get_link = ethtool_op_get_link, 1639 .get_link = ethtool_op_get_link,
1642 .get_strings = get_strings, 1640 .get_strings = get_strings,
@@ -1647,7 +1645,6 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
1647 .get_regs_len = get_regs_len, 1645 .get_regs_len = get_regs_len,
1648 .get_regs = get_regs, 1646 .get_regs = get_regs,
1649 .get_wol = get_wol, 1647 .get_wol = get_wol,
1650 .get_tso = ethtool_op_get_tso,
1651 .set_tso = ethtool_op_set_tso, 1648 .set_tso = ethtool_op_set_tso,
1652}; 1649};
1653 1650
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 76d16aaf05b6..e6c4a3bb9e4c 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -1965,9 +1965,7 @@ static const struct ethtool_ops e1000_ethtool_ops = {
1965 .set_rx_csum = e1000_set_rx_csum, 1965 .set_rx_csum = e1000_set_rx_csum,
1966 .get_tx_csum = e1000_get_tx_csum, 1966 .get_tx_csum = e1000_get_tx_csum,
1967 .set_tx_csum = e1000_set_tx_csum, 1967 .set_tx_csum = e1000_set_tx_csum,
1968 .get_sg = ethtool_op_get_sg,
1969 .set_sg = ethtool_op_set_sg, 1968 .set_sg = ethtool_op_set_sg,
1970 .get_tso = ethtool_op_get_tso,
1971 .set_tso = e1000_set_tso, 1969 .set_tso = e1000_set_tso,
1972 .self_test_count = e1000_diag_test_count, 1970 .self_test_count = e1000_diag_test_count,
1973 .self_test = e1000_diag_test, 1971 .self_test = e1000_diag_test,
diff --git a/drivers/net/ehea/ehea_ethtool.c b/drivers/net/ehea/ehea_ethtool.c
index 29ef7a98f8be..6498455bf97c 100644
--- a/drivers/net/ehea/ehea_ethtool.c
+++ b/drivers/net/ehea/ehea_ethtool.c
@@ -262,9 +262,6 @@ const struct ethtool_ops ehea_ethtool_ops = {
262 .get_msglevel = ehea_get_msglevel, 262 .get_msglevel = ehea_get_msglevel,
263 .set_msglevel = ehea_set_msglevel, 263 .set_msglevel = ehea_set_msglevel,
264 .get_link = ethtool_op_get_link, 264 .get_link = ethtool_op_get_link,
265 .get_tx_csum = ethtool_op_get_tx_csum,
266 .get_sg = ethtool_op_get_sg,
267 .get_tso = ethtool_op_get_tso,
268 .set_tso = ethtool_op_set_tso, 265 .set_tso = ethtool_op_set_tso,
269 .get_strings = ehea_get_strings, 266 .get_strings = ehea_get_strings,
270 .get_stats_count = ehea_get_stats_count, 267 .get_stats_count = ehea_get_stats_count,
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c
index 122ffd2f0822..5ac56f20003d 100644
--- a/drivers/net/epic100.c
+++ b/drivers/net/epic100.c
@@ -1494,8 +1494,6 @@ static const struct ethtool_ops netdev_ethtool_ops = {
1494 .get_link = netdev_get_link, 1494 .get_link = netdev_get_link,
1495 .get_msglevel = netdev_get_msglevel, 1495 .get_msglevel = netdev_get_msglevel,
1496 .set_msglevel = netdev_set_msglevel, 1496 .set_msglevel = netdev_set_msglevel,
1497 .get_sg = ethtool_op_get_sg,
1498 .get_tx_csum = ethtool_op_get_tx_csum,
1499 .begin = ethtool_begin, 1497 .begin = ethtool_begin,
1500 .complete = ethtool_complete 1498 .complete = ethtool_complete
1501}; 1499};
diff --git a/drivers/net/fealnx.c b/drivers/net/fealnx.c
index e9353072a96d..402b071d8d53 100644
--- a/drivers/net/fealnx.c
+++ b/drivers/net/fealnx.c
@@ -1891,8 +1891,6 @@ static const struct ethtool_ops netdev_ethtool_ops = {
1891 .get_link = netdev_get_link, 1891 .get_link = netdev_get_link,
1892 .get_msglevel = netdev_get_msglevel, 1892 .get_msglevel = netdev_get_msglevel,
1893 .set_msglevel = netdev_set_msglevel, 1893 .set_msglevel = netdev_set_msglevel,
1894 .get_sg = ethtool_op_get_sg,
1895 .get_tx_csum = ethtool_op_get_tx_csum,
1896}; 1894};
1897 1895
1898static int mii_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1896static int mii_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
diff --git a/drivers/net/fec_8xx/fec_main.c b/drivers/net/fec_8xx/fec_main.c
index 6f214ab12fff..8d2904fa5789 100644
--- a/drivers/net/fec_8xx/fec_main.c
+++ b/drivers/net/fec_8xx/fec_main.c
@@ -1041,9 +1041,7 @@ static const struct ethtool_ops fec_ethtool_ops = {
1041 .get_link = ethtool_op_get_link, 1041 .get_link = ethtool_op_get_link,
1042 .get_msglevel = fec_get_msglevel, 1042 .get_msglevel = fec_get_msglevel,
1043 .set_msglevel = fec_set_msglevel, 1043 .set_msglevel = fec_set_msglevel,
1044 .get_tx_csum = ethtool_op_get_tx_csum,
1045 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */ 1044 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */
1046 .get_sg = ethtool_op_get_sg,
1047 .set_sg = ethtool_op_set_sg, 1045 .set_sg = ethtool_op_set_sg,
1048 .get_regs = fec_get_regs, 1046 .get_regs = fec_get_regs,
1049}; 1047};
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 050a8f14eda8..be744573b1c2 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -4710,7 +4710,6 @@ static const struct ethtool_ops ops = {
4710 .get_regs_len = nv_get_regs_len, 4710 .get_regs_len = nv_get_regs_len,
4711 .get_regs = nv_get_regs, 4711 .get_regs = nv_get_regs,
4712 .nway_reset = nv_nway_reset, 4712 .nway_reset = nv_nway_reset,
4713 .get_tso = ethtool_op_get_tso,
4714 .set_tso = nv_set_tso, 4713 .set_tso = nv_set_tso,
4715 .get_ringparam = nv_get_ringparam, 4714 .get_ringparam = nv_get_ringparam,
4716 .set_ringparam = nv_set_ringparam, 4715 .set_ringparam = nv_set_ringparam,
@@ -4718,9 +4717,7 @@ static const struct ethtool_ops ops = {
4718 .set_pauseparam = nv_set_pauseparam, 4717 .set_pauseparam = nv_set_pauseparam,
4719 .get_rx_csum = nv_get_rx_csum, 4718 .get_rx_csum = nv_get_rx_csum,
4720 .set_rx_csum = nv_set_rx_csum, 4719 .set_rx_csum = nv_set_rx_csum,
4721 .get_tx_csum = ethtool_op_get_tx_csum,
4722 .set_tx_csum = nv_set_tx_csum, 4720 .set_tx_csum = nv_set_tx_csum,
4723 .get_sg = ethtool_op_get_sg,
4724 .set_sg = nv_set_sg, 4721 .set_sg = nv_set_sg,
4725 .get_strings = nv_get_strings, 4722 .get_strings = nv_get_strings,
4726 .get_stats_count = nv_get_stats_count, 4723 .get_stats_count = nv_get_stats_count,
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c
index f6789a8db8cd..f9079599dd22 100644
--- a/drivers/net/fs_enet/fs_enet-main.c
+++ b/drivers/net/fs_enet/fs_enet-main.c
@@ -907,9 +907,7 @@ static const struct ethtool_ops fs_ethtool_ops = {
907 .get_link = ethtool_op_get_link, 907 .get_link = ethtool_op_get_link,
908 .get_msglevel = fs_get_msglevel, 908 .get_msglevel = fs_get_msglevel,
909 .set_msglevel = fs_set_msglevel, 909 .set_msglevel = fs_set_msglevel,
910 .get_tx_csum = ethtool_op_get_tx_csum,
911 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */ 910 .set_tx_csum = ethtool_op_set_tx_csum, /* local! */
912 .get_sg = ethtool_op_get_sg,
913 .set_sg = ethtool_op_set_sg, 911 .set_sg = ethtool_op_set_sg,
914 .get_regs = fs_get_regs, 912 .get_regs = fs_get_regs,
915}; 913};
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index 354616b0b57b..d7da56b105cb 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -1900,8 +1900,6 @@ static const struct ethtool_ops emac_ethtool_ops = {
1900 .get_ethtool_stats = emac_ethtool_get_ethtool_stats, 1900 .get_ethtool_stats = emac_ethtool_get_ethtool_stats,
1901 1901
1902 .get_link = ethtool_op_get_link, 1902 .get_link = ethtool_op_get_link,
1903 .get_tx_csum = ethtool_op_get_tx_csum,
1904 .get_sg = ethtool_op_get_sg,
1905}; 1903};
1906 1904
1907static int emac_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) 1905static int emac_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index bdbf3dead4e2..0636883449fc 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -821,15 +821,11 @@ static const struct ethtool_ops netdev_ethtool_ops = {
821 .get_drvinfo = netdev_get_drvinfo, 821 .get_drvinfo = netdev_get_drvinfo,
822 .get_settings = netdev_get_settings, 822 .get_settings = netdev_get_settings,
823 .get_link = netdev_get_link, 823 .get_link = netdev_get_link,
824 .get_sg = ethtool_op_get_sg,
825 .get_tx_csum = ethtool_op_get_tx_csum,
826 .set_tx_csum = ibmveth_set_tx_csum, 824 .set_tx_csum = ibmveth_set_tx_csum,
827 .get_rx_csum = ibmveth_get_rx_csum, 825 .get_rx_csum = ibmveth_get_rx_csum,
828 .set_rx_csum = ibmveth_set_rx_csum, 826 .set_rx_csum = ibmveth_set_rx_csum,
829 .get_tso = ethtool_op_get_tso,
830 .get_ufo = ethtool_op_get_ufo,
831 .get_strings = ibmveth_get_strings, 827 .get_strings = ibmveth_get_strings,
832 .get_stats_count = ibmveth_get_stats_count, 828 .get_stats_count = ibmveth_get_stats_count,
833 .get_ethtool_stats = ibmveth_get_ethtool_stats, 829 .get_ethtool_stats = ibmveth_get_ethtool_stats,
834}; 830};
835 831
diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/ixgb/ixgb_ethtool.c
index 21d35bc53906..181b59dc1ac3 100644
--- a/drivers/net/ixgb/ixgb_ethtool.c
+++ b/drivers/net/ixgb/ixgb_ethtool.c
@@ -713,11 +713,9 @@ static const struct ethtool_ops ixgb_ethtool_ops = {
713 .set_rx_csum = ixgb_set_rx_csum, 713 .set_rx_csum = ixgb_set_rx_csum,
714 .get_tx_csum = ixgb_get_tx_csum, 714 .get_tx_csum = ixgb_get_tx_csum,
715 .set_tx_csum = ixgb_set_tx_csum, 715 .set_tx_csum = ixgb_set_tx_csum,
716 .get_sg = ethtool_op_get_sg,
717 .set_sg = ethtool_op_set_sg, 716 .set_sg = ethtool_op_set_sg,
718 .get_msglevel = ixgb_get_msglevel, 717 .get_msglevel = ixgb_get_msglevel,
719 .set_msglevel = ixgb_set_msglevel, 718 .set_msglevel = ixgb_set_msglevel,
720 .get_tso = ethtool_op_get_tso,
721 .set_tso = ixgb_set_tso, 719 .set_tso = ixgb_set_tso,
722 .get_strings = ixgb_get_strings, 720 .get_strings = ixgb_get_strings,
723 .phys_id = ixgb_phys_id, 721 .phys_id = ixgb_phys_id,
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index a328da72833c..0e2252fd71ab 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -192,7 +192,6 @@ static u32 always_on(struct net_device *dev)
192 192
193static const struct ethtool_ops loopback_ethtool_ops = { 193static const struct ethtool_ops loopback_ethtool_ops = {
194 .get_link = always_on, 194 .get_link = always_on,
195 .get_tso = ethtool_op_get_tso,
196 .set_tso = ethtool_op_set_tso, 195 .set_tso = ethtool_op_set_tso,
197 .get_tx_csum = always_on, 196 .get_tx_csum = always_on,
198 .get_sg = always_on, 197 .get_sg = always_on,
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 2de073da182c..2f6cdaa88729 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -282,10 +282,6 @@ static u32 macvlan_ethtool_get_rx_csum(struct net_device *dev)
282static const struct ethtool_ops macvlan_ethtool_ops = { 282static const struct ethtool_ops macvlan_ethtool_ops = {
283 .get_link = ethtool_op_get_link, 283 .get_link = ethtool_op_get_link,
284 .get_rx_csum = macvlan_ethtool_get_rx_csum, 284 .get_rx_csum = macvlan_ethtool_get_rx_csum,
285 .get_tx_csum = ethtool_op_get_tx_csum,
286 .get_tso = ethtool_op_get_tso,
287 .get_ufo = ethtool_op_get_ufo,
288 .get_sg = ethtool_op_get_sg,
289 .get_drvinfo = macvlan_ethtool_get_drvinfo, 285 .get_drvinfo = macvlan_ethtool_get_drvinfo,
290}; 286};
291 287
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index 35781616eb23..34df02cfdbe7 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -2735,7 +2735,6 @@ static const struct ethtool_ops mv643xx_ethtool_ops = {
2735 .set_settings = mv643xx_set_settings, 2735 .set_settings = mv643xx_set_settings,
2736 .get_drvinfo = mv643xx_get_drvinfo, 2736 .get_drvinfo = mv643xx_get_drvinfo,
2737 .get_link = mv643xx_eth_get_link, 2737 .get_link = mv643xx_eth_get_link,
2738 .get_sg = ethtool_op_get_sg,
2739 .set_sg = ethtool_op_set_sg, 2738 .set_sg = ethtool_op_set_sg,
2740 .get_stats_count = mv643xx_get_stats_count, 2739 .get_stats_count = mv643xx_get_stats_count,
2741 .get_ethtool_stats = mv643xx_get_ethtool_stats, 2740 .get_ethtool_stats = mv643xx_get_ethtool_stats,
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 6dc28b824935..2f8864e70ca9 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1499,11 +1499,8 @@ static const struct ethtool_ops myri10ge_ethtool_ops = {
1499 .get_ringparam = myri10ge_get_ringparam, 1499 .get_ringparam = myri10ge_get_ringparam,
1500 .get_rx_csum = myri10ge_get_rx_csum, 1500 .get_rx_csum = myri10ge_get_rx_csum,
1501 .set_rx_csum = myri10ge_set_rx_csum, 1501 .set_rx_csum = myri10ge_set_rx_csum,
1502 .get_tx_csum = ethtool_op_get_tx_csum,
1503 .set_tx_csum = ethtool_op_set_tx_hw_csum, 1502 .set_tx_csum = ethtool_op_set_tx_hw_csum,
1504 .get_sg = ethtool_op_get_sg,
1505 .set_sg = ethtool_op_set_sg, 1503 .set_sg = ethtool_op_set_sg,
1506 .get_tso = ethtool_op_get_tso,
1507 .set_tso = ethtool_op_set_tso, 1504 .set_tso = ethtool_op_set_tso,
1508 .get_link = ethtool_op_get_link, 1505 .get_link = ethtool_op_get_link,
1509 .get_strings = myri10ge_get_strings, 1506 .get_strings = myri10ge_get_strings,
diff --git a/drivers/net/ne2k-pci.c b/drivers/net/ne2k-pci.c
index 7ec362b2e3e5..a5879672903e 100644
--- a/drivers/net/ne2k-pci.c
+++ b/drivers/net/ne2k-pci.c
@@ -635,8 +635,6 @@ static void ne2k_pci_get_drvinfo(struct net_device *dev,
635 635
636static const struct ethtool_ops ne2k_pci_ethtool_ops = { 636static const struct ethtool_ops ne2k_pci_ethtool_ops = {
637 .get_drvinfo = ne2k_pci_get_drvinfo, 637 .get_drvinfo = ne2k_pci_get_drvinfo,
638 .get_tx_csum = ethtool_op_get_tx_csum,
639 .get_sg = ethtool_op_get_sg,
640}; 638};
641 639
642static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev) 640static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev)
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index a6138b474b4a..08c76b343663 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -744,11 +744,8 @@ struct ethtool_ops netxen_nic_ethtool_ops = {
744 .get_ringparam = netxen_nic_get_ringparam, 744 .get_ringparam = netxen_nic_get_ringparam,
745 .get_pauseparam = netxen_nic_get_pauseparam, 745 .get_pauseparam = netxen_nic_get_pauseparam,
746 .set_pauseparam = netxen_nic_set_pauseparam, 746 .set_pauseparam = netxen_nic_set_pauseparam,
747 .get_tx_csum = ethtool_op_get_tx_csum,
748 .set_tx_csum = ethtool_op_set_tx_csum, 747 .set_tx_csum = ethtool_op_set_tx_csum,
749 .get_sg = ethtool_op_get_sg,
750 .set_sg = ethtool_op_set_sg, 748 .set_sg = ethtool_op_set_sg,
751 .get_tso = ethtool_op_get_tso,
752 .set_tso = ethtool_op_set_tso, 749 .set_tso = ethtool_op_set_tso,
753 .self_test_count = netxen_nic_diag_test_count, 750 .self_test_count = netxen_nic_diag_test_count,
754 .self_test = netxen_nic_diag_test, 751 .self_test = netxen_nic_diag_test,
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index 724d90bd1feb..4840ddea71ac 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -1509,9 +1509,6 @@ static const struct ethtool_ops pcnet32_ethtool_ops = {
1509 .get_link = pcnet32_get_link, 1509 .get_link = pcnet32_get_link,
1510 .get_ringparam = pcnet32_get_ringparam, 1510 .get_ringparam = pcnet32_get_ringparam,
1511 .set_ringparam = pcnet32_set_ringparam, 1511 .set_ringparam = pcnet32_set_ringparam,
1512 .get_tx_csum = ethtool_op_get_tx_csum,
1513 .get_sg = ethtool_op_get_sg,
1514 .get_tso = ethtool_op_get_tso,
1515 .get_strings = pcnet32_get_strings, 1512 .get_strings = pcnet32_get_strings,
1516 .self_test_count = pcnet32_self_test_count, 1513 .self_test_count = pcnet32_self_test_count,
1517 .self_test = pcnet32_ethtool_test, 1514 .self_test = pcnet32_ethtool_test,
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index b8809a8ef204..06a1a6f2d17b 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1061,11 +1061,8 @@ static const struct ethtool_ops rtl8169_ethtool_ops = {
1061 .set_msglevel = rtl8169_set_msglevel, 1061 .set_msglevel = rtl8169_set_msglevel,
1062 .get_rx_csum = rtl8169_get_rx_csum, 1062 .get_rx_csum = rtl8169_get_rx_csum,
1063 .set_rx_csum = rtl8169_set_rx_csum, 1063 .set_rx_csum = rtl8169_set_rx_csum,
1064 .get_tx_csum = ethtool_op_get_tx_csum,
1065 .set_tx_csum = ethtool_op_set_tx_csum, 1064 .set_tx_csum = ethtool_op_set_tx_csum,
1066 .get_sg = ethtool_op_get_sg,
1067 .set_sg = ethtool_op_set_sg, 1065 .set_sg = ethtool_op_set_sg,
1068 .get_tso = ethtool_op_get_tso,
1069 .set_tso = ethtool_op_set_tso, 1066 .set_tso = ethtool_op_set_tso,
1070 .get_regs = rtl8169_get_regs, 1067 .get_regs = rtl8169_get_regs,
1071 .get_wol = rtl8169_get_wol, 1068 .get_wol = rtl8169_get_wol,
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index f77049b34e16..a285dd734a03 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -6326,13 +6326,10 @@ static const struct ethtool_ops netdev_ethtool_ops = {
6326 .set_pauseparam = s2io_ethtool_setpause_data, 6326 .set_pauseparam = s2io_ethtool_setpause_data,
6327 .get_rx_csum = s2io_ethtool_get_rx_csum, 6327 .get_rx_csum = s2io_ethtool_get_rx_csum,
6328 .set_rx_csum = s2io_ethtool_set_rx_csum, 6328 .set_rx_csum = s2io_ethtool_set_rx_csum,
6329 .get_tx_csum = ethtool_op_get_tx_csum,
6330 .set_tx_csum = s2io_ethtool_op_set_tx_csum, 6329 .set_tx_csum = s2io_ethtool_op_set_tx_csum,
6331 .get_sg = ethtool_op_get_sg,
6332 .set_sg = ethtool_op_set_sg, 6330 .set_sg = ethtool_op_set_sg,
6333 .get_tso = s2io_ethtool_op_get_tso, 6331 .get_tso = s2io_ethtool_op_get_tso,
6334 .set_tso = s2io_ethtool_op_set_tso, 6332 .set_tso = s2io_ethtool_op_set_tso,
6335 .get_ufo = ethtool_op_get_ufo,
6336 .set_ufo = ethtool_op_set_ufo, 6333 .set_ufo = ethtool_op_set_ufo,
6337 .self_test_count = s2io_ethtool_self_test_count, 6334 .self_test_count = s2io_ethtool_self_test_count,
6338 .self_test = s2io_ethtool_test, 6335 .self_test = s2io_ethtool_test,
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c
index 872cb1cc9c41..02c472ecbe55 100644
--- a/drivers/net/sc92031.c
+++ b/drivers/net/sc92031.c
@@ -1396,13 +1396,9 @@ static struct ethtool_ops sc92031_ethtool_ops = {
1396 .set_wol = sc92031_ethtool_set_wol, 1396 .set_wol = sc92031_ethtool_set_wol,
1397 .nway_reset = sc92031_ethtool_nway_reset, 1397 .nway_reset = sc92031_ethtool_nway_reset,
1398 .get_link = ethtool_op_get_link, 1398 .get_link = ethtool_op_get_link,
1399 .get_tx_csum = ethtool_op_get_tx_csum,
1400 .get_sg = ethtool_op_get_sg,
1401 .get_tso = ethtool_op_get_tso,
1402 .get_strings = sc92031_ethtool_get_strings, 1399 .get_strings = sc92031_ethtool_get_strings,
1403 .get_stats_count = sc92031_ethtool_get_stats_count, 1400 .get_stats_count = sc92031_ethtool_get_stats_count,
1404 .get_ethtool_stats = sc92031_ethtool_get_ethtool_stats, 1401 .get_ethtool_stats = sc92031_ethtool_get_ethtool_stats,
1405 .get_ufo = ethtool_op_get_ufo,
1406}; 1402};
1407 1403
1408static int __devinit sc92031_probe(struct pci_dev *pdev, 1404static int __devinit sc92031_probe(struct pci_dev *pdev,
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 47a144d000d5..cac499f84131 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -811,9 +811,7 @@ static const struct ethtool_ops skge_ethtool_ops = {
811 .set_pauseparam = skge_set_pauseparam, 811 .set_pauseparam = skge_set_pauseparam,
812 .get_coalesce = skge_get_coalesce, 812 .get_coalesce = skge_get_coalesce,
813 .set_coalesce = skge_set_coalesce, 813 .set_coalesce = skge_set_coalesce,
814 .get_sg = ethtool_op_get_sg,
815 .set_sg = skge_set_sg, 814 .set_sg = skge_set_sg,
816 .get_tx_csum = ethtool_op_get_tx_csum,
817 .set_tx_csum = skge_set_tx_csum, 815 .set_tx_csum = skge_set_tx_csum,
818 .get_rx_csum = skge_get_rx_csum, 816 .get_rx_csum = skge_get_rx_csum,
819 .set_rx_csum = skge_set_rx_csum, 817 .set_rx_csum = skge_set_rx_csum,
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 1b9e5f40ddee..b8c15f881eba 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3710,11 +3710,8 @@ static const struct ethtool_ops sky2_ethtool_ops = {
3710 .get_eeprom_len = sky2_get_eeprom_len, 3710 .get_eeprom_len = sky2_get_eeprom_len,
3711 .get_eeprom = sky2_get_eeprom, 3711 .get_eeprom = sky2_get_eeprom,
3712 .set_eeprom = sky2_set_eeprom, 3712 .set_eeprom = sky2_set_eeprom,
3713 .get_sg = ethtool_op_get_sg,
3714 .set_sg = ethtool_op_set_sg, 3713 .set_sg = ethtool_op_set_sg,
3715 .get_tx_csum = ethtool_op_get_tx_csum,
3716 .set_tx_csum = sky2_set_tx_csum, 3714 .set_tx_csum = sky2_set_tx_csum,
3717 .get_tso = ethtool_op_get_tso,
3718 .set_tso = sky2_set_tso, 3715 .set_tso = sky2_set_tso,
3719 .get_rx_csum = sky2_get_rx_csum, 3716 .get_rx_csum = sky2_get_rx_csum,
3720 .set_rx_csum = sky2_set_rx_csum, 3717 .set_rx_csum = sky2_set_rx_csum,
diff --git a/drivers/net/spider_net_ethtool.c b/drivers/net/spider_net_ethtool.c
index d940474e024a..1460d5006d1c 100644
--- a/drivers/net/spider_net_ethtool.c
+++ b/drivers/net/spider_net_ethtool.c
@@ -188,7 +188,6 @@ const struct ethtool_ops spider_net_ethtool_ops = {
188 .nway_reset = spider_net_ethtool_nway_reset, 188 .nway_reset = spider_net_ethtool_nway_reset,
189 .get_rx_csum = spider_net_ethtool_get_rx_csum, 189 .get_rx_csum = spider_net_ethtool_get_rx_csum,
190 .set_rx_csum = spider_net_ethtool_set_rx_csum, 190 .set_rx_csum = spider_net_ethtool_set_rx_csum,
191 .get_tx_csum = ethtool_op_get_tx_csum,
192 .set_tx_csum = ethtool_op_set_tx_csum, 191 .set_tx_csum = ethtool_op_set_tx_csum,
193 .get_ringparam = spider_net_ethtool_get_ringparam, 192 .get_ringparam = spider_net_ethtool_get_ringparam,
194 .get_strings = spider_net_get_strings, 193 .get_strings = spider_net_get_strings,
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 369a172a04aa..1b860e0817f6 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -9278,11 +9278,8 @@ static const struct ethtool_ops tg3_ethtool_ops = {
9278 .set_pauseparam = tg3_set_pauseparam, 9278 .set_pauseparam = tg3_set_pauseparam,
9279 .get_rx_csum = tg3_get_rx_csum, 9279 .get_rx_csum = tg3_get_rx_csum,
9280 .set_rx_csum = tg3_set_rx_csum, 9280 .set_rx_csum = tg3_set_rx_csum,
9281 .get_tx_csum = ethtool_op_get_tx_csum,
9282 .set_tx_csum = tg3_set_tx_csum, 9281 .set_tx_csum = tg3_set_tx_csum,
9283 .get_sg = ethtool_op_get_sg,
9284 .set_sg = ethtool_op_set_sg, 9282 .set_sg = ethtool_op_set_sg,
9285 .get_tso = ethtool_op_get_tso,
9286 .set_tso = tg3_set_tso, 9283 .set_tso = tg3_set_tso,
9287 .self_test_count = tg3_get_test_count, 9284 .self_test_count = tg3_get_test_count,
9288 .self_test = tg3_self_test, 9285 .self_test = tg3_self_test,
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index bd04e93908ef..ba3d0e5574a4 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -1670,8 +1670,6 @@ static void de_get_regs(struct net_device *dev, struct ethtool_regs *regs,
1670 1670
1671static const struct ethtool_ops de_ethtool_ops = { 1671static const struct ethtool_ops de_ethtool_ops = {
1672 .get_link = ethtool_op_get_link, 1672 .get_link = ethtool_op_get_link,
1673 .get_tx_csum = ethtool_op_get_tx_csum,
1674 .get_sg = ethtool_op_get_sg,
1675 .get_drvinfo = de_get_drvinfo, 1673 .get_drvinfo = de_get_drvinfo,
1676 .get_regs_len = de_get_regs_len, 1674 .get_regs_len = de_get_regs_len,
1677 .get_settings = de_get_settings, 1675 .get_settings = de_get_settings,
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
index 396f8455cd32..e00833fadc0b 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -1451,8 +1451,6 @@ static const struct ethtool_ops netdev_ethtool_ops = {
1451 .get_link = netdev_get_link, 1451 .get_link = netdev_get_link,
1452 .get_msglevel = netdev_get_msglevel, 1452 .get_msglevel = netdev_get_msglevel,
1453 .set_msglevel = netdev_set_msglevel, 1453 .set_msglevel = netdev_set_msglevel,
1454 .get_sg = ethtool_op_get_sg,
1455 .get_tx_csum = ethtool_op_get_tx_csum,
1456}; 1454};
1457 1455
1458static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1456static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
index 84d99fc77891..c6d8513ecad6 100644
--- a/drivers/net/typhoon.c
+++ b/drivers/net/typhoon.c
@@ -1236,11 +1236,8 @@ static const struct ethtool_ops typhoon_ethtool_ops = {
1236 .set_wol = typhoon_set_wol, 1236 .set_wol = typhoon_set_wol,
1237 .get_link = ethtool_op_get_link, 1237 .get_link = ethtool_op_get_link,
1238 .get_rx_csum = typhoon_get_rx_csum, 1238 .get_rx_csum = typhoon_get_rx_csum,
1239 .get_tx_csum = ethtool_op_get_tx_csum,
1240 .set_tx_csum = ethtool_op_set_tx_csum, 1239 .set_tx_csum = ethtool_op_set_tx_csum,
1241 .get_sg = ethtool_op_get_sg,
1242 .set_sg = ethtool_op_set_sg, 1240 .set_sg = ethtool_op_set_sg,
1243 .get_tso = ethtool_op_get_tso,
1244 .set_tso = ethtool_op_set_tso, 1241 .set_tso = ethtool_op_set_tso,
1245 .get_ringparam = typhoon_get_ringparam, 1242 .get_ringparam = typhoon_get_ringparam,
1246}; 1243};
diff --git a/drivers/net/ucc_geth_ethtool.c b/drivers/net/ucc_geth_ethtool.c
index 64bef7c12365..73aa677a4a3e 100644
--- a/drivers/net/ucc_geth_ethtool.c
+++ b/drivers/net/ucc_geth_ethtool.c
@@ -373,9 +373,7 @@ static const struct ethtool_ops uec_ethtool_ops = {
373 .set_ringparam = uec_set_ringparam, 373 .set_ringparam = uec_set_ringparam,
374 .get_pauseparam = uec_get_pauseparam, 374 .get_pauseparam = uec_get_pauseparam,
375 .set_pauseparam = uec_set_pauseparam, 375 .set_pauseparam = uec_set_pauseparam,
376 .get_sg = ethtool_op_get_sg,
377 .set_sg = ethtool_op_set_sg, 376 .set_sg = ethtool_op_set_sg,
378 .get_tso = ethtool_op_get_tso,
379 .get_stats_count = uec_get_stats_count, 377 .get_stats_count = uec_get_stats_count,
380 .get_strings = uec_get_strings, 378 .get_strings = uec_get_strings,
381 .get_ethtool_stats = uec_get_ethtool_stats, 379 .get_ethtool_stats = uec_get_ethtool_stats,
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 987f5b937e3c..d55c4fdff489 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -1813,8 +1813,6 @@ static const struct ethtool_ops netdev_ethtool_ops = {
1813 .set_msglevel = netdev_set_msglevel, 1813 .set_msglevel = netdev_set_msglevel,
1814 .get_wol = rhine_get_wol, 1814 .get_wol = rhine_get_wol,
1815 .set_wol = rhine_set_wol, 1815 .set_wol = rhine_set_wol,
1816 .get_sg = ethtool_op_get_sg,
1817 .get_tx_csum = ethtool_op_get_tx_csum,
1818}; 1816};
1819 1817
1820static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1818static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 78e344ae7051..f464b82c7d5f 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1617,11 +1617,8 @@ static void backend_changed(struct xenbus_device *dev,
1617 1617
1618static struct ethtool_ops xennet_ethtool_ops = 1618static struct ethtool_ops xennet_ethtool_ops =
1619{ 1619{
1620 .get_tx_csum = ethtool_op_get_tx_csum,
1621 .set_tx_csum = ethtool_op_set_tx_csum, 1620 .set_tx_csum = ethtool_op_set_tx_csum,
1622 .get_sg = ethtool_op_get_sg,
1623 .set_sg = xennet_set_sg, 1621 .set_sg = xennet_set_sg,
1624 .get_tso = ethtool_op_get_tso,
1625 .set_tso = xennet_set_tso, 1622 .set_tso = xennet_set_tso,
1626 .get_link = ethtool_op_get_link, 1623 .get_link = ethtool_op_get_link,
1627}; 1624};
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index f803e39eee28..c07bac5e3e10 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -150,11 +150,8 @@ static int br_set_tx_csum(struct net_device *dev, u32 data)
150static struct ethtool_ops br_ethtool_ops = { 150static struct ethtool_ops br_ethtool_ops = {
151 .get_drvinfo = br_getinfo, 151 .get_drvinfo = br_getinfo,
152 .get_link = ethtool_op_get_link, 152 .get_link = ethtool_op_get_link,
153 .get_sg = ethtool_op_get_sg,
154 .set_sg = br_set_sg, 153 .set_sg = br_set_sg,
155 .get_tx_csum = ethtool_op_get_tx_csum,
156 .set_tx_csum = br_set_tx_csum, 154 .set_tx_csum = br_set_tx_csum,
157 .get_tso = ethtool_op_get_tso,
158 .set_tso = br_set_tso, 155 .set_tso = br_set_tso,
159}; 156};
160 157
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 0d0b13cc1dd3..1163eb2256d0 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -893,21 +893,27 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
893 break; 893 break;
894 case ETHTOOL_GTXCSUM: 894 case ETHTOOL_GTXCSUM:
895 rc = ethtool_get_value(dev, useraddr, ethcmd, 895 rc = ethtool_get_value(dev, useraddr, ethcmd,
896 dev->ethtool_ops->get_tx_csum); 896 (dev->ethtool_ops->get_tx_csum ?
897 dev->ethtool_ops->get_tx_csum :
898 ethtool_op_get_tx_csum));
897 break; 899 break;
898 case ETHTOOL_STXCSUM: 900 case ETHTOOL_STXCSUM:
899 rc = ethtool_set_tx_csum(dev, useraddr); 901 rc = ethtool_set_tx_csum(dev, useraddr);
900 break; 902 break;
901 case ETHTOOL_GSG: 903 case ETHTOOL_GSG:
902 rc = ethtool_get_value(dev, useraddr, ethcmd, 904 rc = ethtool_get_value(dev, useraddr, ethcmd,
903 dev->ethtool_ops->get_sg); 905 (dev->ethtool_ops->get_sg ?
906 dev->ethtool_ops->get_sg :
907 ethtool_op_get_sg));
904 break; 908 break;
905 case ETHTOOL_SSG: 909 case ETHTOOL_SSG:
906 rc = ethtool_set_sg(dev, useraddr); 910 rc = ethtool_set_sg(dev, useraddr);
907 break; 911 break;
908 case ETHTOOL_GTSO: 912 case ETHTOOL_GTSO:
909 rc = ethtool_get_value(dev, useraddr, ethcmd, 913 rc = ethtool_get_value(dev, useraddr, ethcmd,
910 dev->ethtool_ops->get_tso); 914 (dev->ethtool_ops->get_tso ?
915 dev->ethtool_ops->get_tso :
916 ethtool_op_get_tso));
911 break; 917 break;
912 case ETHTOOL_STSO: 918 case ETHTOOL_STSO:
913 rc = ethtool_set_tso(dev, useraddr); 919 rc = ethtool_set_tso(dev, useraddr);
@@ -929,7 +935,9 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
929 break; 935 break;
930 case ETHTOOL_GUFO: 936 case ETHTOOL_GUFO:
931 rc = ethtool_get_value(dev, useraddr, ethcmd, 937 rc = ethtool_get_value(dev, useraddr, ethcmd,
932 dev->ethtool_ops->get_ufo); 938 (dev->ethtool_ops->get_ufo ?
939 dev->ethtool_ops->get_ufo :
940 ethtool_op_get_ufo));
933 break; 941 break;
934 case ETHTOOL_SUFO: 942 case ETHTOOL_SUFO:
935 rc = ethtool_set_ufo(dev, useraddr); 943 rc = ethtool_set_ufo(dev, useraddr);