qeth: remove EDDP
[linux-block.git] / drivers / s390 / net / qeth_l2_main.c
index 7632d12088449edc32f9463941a6232a730747a9..9e628b322bd30c11fb67c9b437835f0880a8bea1 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/ip.h>
 
 #include "qeth_core.h"
-#include "qeth_core_offl.h"
 
 static int qeth_l2_set_offline(struct ccwgroup_device *);
 static int qeth_l2_stop(struct net_device *);
@@ -634,8 +633,6 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
        struct qeth_qdio_out_q *queue = card->qdio.out_qs
                [qeth_get_priority_queue(card, skb, ipv, cast_type)];
        int tx_bytes = skb->len;
-       enum qeth_large_send_types large_send = QETH_LARGE_SEND_NO;
-       struct qeth_eddp_context *ctx = NULL;
        int data_offset = -1;
        int elements_needed = 0;
        int hd_len = 0;
@@ -655,14 +652,10 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
        }
        netif_stop_queue(dev);
 
-       if (skb_is_gso(skb))
-               large_send = QETH_LARGE_SEND_EDDP;
-
        if (card->info.type == QETH_CARD_TYPE_OSN)
                hdr = (struct qeth_hdr *)skb->data;
        else {
-               if ((card->info.type == QETH_CARD_TYPE_IQD) && (!large_send) &&
-                   (skb_shinfo(skb)->nr_frags == 0)) {
+               if (card->info.type == QETH_CARD_TYPE_IQD) {
                        new_skb = skb;
                        data_offset = ETH_HLEN;
                        hd_len = ETH_HLEN;
@@ -689,62 +682,26 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
                }
        }
 
-       if (large_send == QETH_LARGE_SEND_EDDP) {
-               ctx = qeth_eddp_create_context(card, new_skb, hdr,
-                                               skb->sk->sk_protocol);
-               if (ctx == NULL) {
-                       QETH_DBF_MESSAGE(2, "could not create eddp context\n");
-                       goto tx_drop;
-               }
-       } else {
-               elements = qeth_get_elements_no(card, (void *)hdr, new_skb,
+       elements = qeth_get_elements_no(card, (void *)hdr, new_skb,
                                                elements_needed);
-               if (!elements) {
-                       if (data_offset >= 0)
-                               kmem_cache_free(qeth_core_header_cache, hdr);
-                       goto tx_drop;
-               }
-       }
-
-       if ((large_send == QETH_LARGE_SEND_NO) &&
-           (skb->ip_summed == CHECKSUM_PARTIAL)) {
-               qeth_tx_csum(new_skb);
-               if (card->options.performance_stats)
-                       card->perf_stats.tx_csum++;
+       if (!elements) {
+               if (data_offset >= 0)
+                       kmem_cache_free(qeth_core_header_cache, hdr);
+               goto tx_drop;
        }
 
        if (card->info.type != QETH_CARD_TYPE_IQD)
                rc = qeth_do_send_packet(card, queue, new_skb, hdr,
-                                        elements, ctx);
+                                        elements);
        else
                rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr,
-                                       elements, ctx, data_offset, hd_len);
+                                       elements, data_offset, hd_len);
        if (!rc) {
                card->stats.tx_packets++;
                card->stats.tx_bytes += tx_bytes;
                if (new_skb != skb)
                        dev_kfree_skb_any(skb);
-               if (card->options.performance_stats) {
-                       if (large_send != QETH_LARGE_SEND_NO) {
-                               card->perf_stats.large_send_bytes += tx_bytes;
-                               card->perf_stats.large_send_cnt++;
-                       }
-                       if (skb_shinfo(new_skb)->nr_frags > 0) {
-                               card->perf_stats.sg_skbs_sent++;
-                               /* nr_frags + skb->data */
-                               card->perf_stats.sg_frags_sent +=
-                                       skb_shinfo(new_skb)->nr_frags + 1;
-                       }
-               }
-
-               if (ctx != NULL) {
-                       qeth_eddp_put_context(ctx);
-                       dev_kfree_skb_any(new_skb);
-               }
        } else {
-               if (ctx != NULL)
-                       qeth_eddp_put_context(ctx);
-
                if (data_offset >= 0)
                        kmem_cache_free(qeth_core_header_cache, hdr);
 
@@ -881,30 +838,8 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev)
        return;
 }
 
-static int qeth_l2_ethtool_set_tso(struct net_device *dev, u32 data)
-{
-       struct qeth_card *card = dev->ml_priv;
-
-       if (data) {
-               if (card->options.large_send == QETH_LARGE_SEND_NO) {
-                       card->options.large_send = QETH_LARGE_SEND_EDDP;
-                       dev->features |= NETIF_F_TSO;
-               }
-       } else {
-               dev->features &= ~NETIF_F_TSO;
-               card->options.large_send = QETH_LARGE_SEND_NO;
-       }
-       return 0;
-}
-
 static struct ethtool_ops qeth_l2_ethtool_ops = {
        .get_link = ethtool_op_get_link,
-       .get_tx_csum = ethtool_op_get_tx_csum,
-       .set_tx_csum = ethtool_op_set_tx_hw_csum,
-       .get_sg = ethtool_op_get_sg,
-       .set_sg = ethtool_op_set_sg,
-       .get_tso = ethtool_op_get_tso,
-       .set_tso = qeth_l2_ethtool_set_tso,
        .get_strings = qeth_core_get_strings,
        .get_ethtool_stats = qeth_core_get_ethtool_stats,
        .get_stats_count = qeth_core_get_stats_count,