diff options
Diffstat (limited to 'drivers/s390/net')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index ef07e9cadfc1..86ec50ddae13 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -849,6 +849,22 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev) | |||
849 | return; | 849 | return; |
850 | } | 850 | } |
851 | 851 | ||
852 | static int qeth_l2_ethtool_set_tso(struct net_device *dev, u32 data) | ||
853 | { | ||
854 | struct qeth_card *card = netdev_priv(dev); | ||
855 | |||
856 | if (data) { | ||
857 | if (card->options.large_send == QETH_LARGE_SEND_NO) { | ||
858 | card->options.large_send = QETH_LARGE_SEND_EDDP; | ||
859 | dev->features |= NETIF_F_TSO; | ||
860 | } | ||
861 | } else { | ||
862 | dev->features &= ~NETIF_F_TSO; | ||
863 | card->options.large_send = QETH_LARGE_SEND_NO; | ||
864 | } | ||
865 | return 0; | ||
866 | } | ||
867 | |||
852 | static struct ethtool_ops qeth_l2_ethtool_ops = { | 868 | static struct ethtool_ops qeth_l2_ethtool_ops = { |
853 | .get_link = ethtool_op_get_link, | 869 | .get_link = ethtool_op_get_link, |
854 | .get_tx_csum = ethtool_op_get_tx_csum, | 870 | .get_tx_csum = ethtool_op_get_tx_csum, |
@@ -856,7 +872,7 @@ static struct ethtool_ops qeth_l2_ethtool_ops = { | |||
856 | .get_sg = ethtool_op_get_sg, | 872 | .get_sg = ethtool_op_get_sg, |
857 | .set_sg = ethtool_op_set_sg, | 873 | .set_sg = ethtool_op_set_sg, |
858 | .get_tso = ethtool_op_get_tso, | 874 | .get_tso = ethtool_op_get_tso, |
859 | .set_tso = ethtool_op_set_tso, | 875 | .set_tso = qeth_l2_ethtool_set_tso, |
860 | .get_strings = qeth_core_get_strings, | 876 | .get_strings = qeth_core_get_strings, |
861 | .get_ethtool_stats = qeth_core_get_ethtool_stats, | 877 | .get_ethtool_stats = qeth_core_get_ethtool_stats, |
862 | .get_stats_count = qeth_core_get_stats_count, | 878 | .get_stats_count = qeth_core_get_stats_count, |