aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net
diff options
context:
space:
mode:
authorUrsula Braun <braunu@de.ibm.com>2007-05-02 09:18:07 -0400
committerJeff Garzik <jeff@garzik.org>2007-05-08 01:16:23 -0400
commit1f8bdae9ef8e1ed2b208cdbaadb91061ede30212 (patch)
tree4b2da76796701c4142878ea189e2fad2adcc897c /drivers/s390/net
parenta4c48a2691189cec0359ac13b41726d3005ef2f5 (diff)
s390: free skbs in finite amount of time in qeth
Free sent skbs in some finite amount of time. Affected are asynchronous queue of Hipersockets devices and the output queues of all eth-devices respectively. Signed-off-by: Ursula Braun <braunu@de.ibm.com> Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r--drivers/s390/net/qeth_main.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 032483513027..134f08c200d2 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -2816,6 +2816,7 @@ qeth_flush_buffers(struct qeth_qdio_out_q *queue, int under_int,
2816 struct qeth_qdio_out_buffer *buf; 2816 struct qeth_qdio_out_buffer *buf;
2817 int rc; 2817 int rc;
2818 int i; 2818 int i;
2819 unsigned int qdio_flags;
2819 2820
2820 QETH_DBF_TEXT(trace, 6, "flushbuf"); 2821 QETH_DBF_TEXT(trace, 6, "flushbuf");
2821 2822
@@ -2859,13 +2860,13 @@ qeth_flush_buffers(struct qeth_qdio_out_q *queue, int under_int,
2859 queue->card->perf_stats.outbound_do_qdio_start_time = 2860 queue->card->perf_stats.outbound_do_qdio_start_time =
2860 qeth_get_micros(); 2861 qeth_get_micros();
2861 } 2862 }
2863 qdio_flags = QDIO_FLAG_SYNC_OUTPUT;
2862 if (under_int) 2864 if (under_int)
2863 rc = do_QDIO(CARD_DDEV(queue->card), 2865 qdio_flags |= QDIO_FLAG_UNDER_INTERRUPT;
2864 QDIO_FLAG_SYNC_OUTPUT | QDIO_FLAG_UNDER_INTERRUPT, 2866 if (atomic_read(&queue->set_pci_flags_count))
2865 queue->queue_no, index, count, NULL); 2867 qdio_flags |= QDIO_FLAG_PCI_OUT;
2866 else 2868 rc = do_QDIO(CARD_DDEV(queue->card), qdio_flags,
2867 rc = do_QDIO(CARD_DDEV(queue->card), QDIO_FLAG_SYNC_OUTPUT, 2869 queue->queue_no, index, count, NULL);
2868 queue->queue_no, index, count, NULL);
2869 if (queue->card->options.performance_stats) 2870 if (queue->card->options.performance_stats)
2870 queue->card->perf_stats.outbound_do_qdio_time += 2871 queue->card->perf_stats.outbound_do_qdio_time +=
2871 qeth_get_micros() - 2872 qeth_get_micros() -
@@ -8498,6 +8499,7 @@ __qeth_reboot_event_card(struct device *dev, void *data)
8498 card = (struct qeth_card *) dev->driver_data; 8499 card = (struct qeth_card *) dev->driver_data;
8499 qeth_clear_ip_list(card, 0, 0); 8500 qeth_clear_ip_list(card, 0, 0);
8500 qeth_qdio_clear_card(card, 0); 8501 qeth_qdio_clear_card(card, 0);
8502 qeth_clear_qdio_buffers(card);
8501 return 0; 8503 return 0;
8502} 8504}
8503 8505