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>
This commit is contained in:

committed by
Jeff Garzik

parent
a4c48a2691
commit
1f8bdae9ef
@@ -2816,6 +2816,7 @@ qeth_flush_buffers(struct qeth_qdio_out_q *queue, int under_int,
|
||||
struct qeth_qdio_out_buffer *buf;
|
||||
int rc;
|
||||
int i;
|
||||
unsigned int qdio_flags;
|
||||
|
||||
QETH_DBF_TEXT(trace, 6, "flushbuf");
|
||||
|
||||
@@ -2859,13 +2860,13 @@ qeth_flush_buffers(struct qeth_qdio_out_q *queue, int under_int,
|
||||
queue->card->perf_stats.outbound_do_qdio_start_time =
|
||||
qeth_get_micros();
|
||||
}
|
||||
qdio_flags = QDIO_FLAG_SYNC_OUTPUT;
|
||||
if (under_int)
|
||||
rc = do_QDIO(CARD_DDEV(queue->card),
|
||||
QDIO_FLAG_SYNC_OUTPUT | QDIO_FLAG_UNDER_INTERRUPT,
|
||||
queue->queue_no, index, count, NULL);
|
||||
else
|
||||
rc = do_QDIO(CARD_DDEV(queue->card), QDIO_FLAG_SYNC_OUTPUT,
|
||||
queue->queue_no, index, count, NULL);
|
||||
qdio_flags |= QDIO_FLAG_UNDER_INTERRUPT;
|
||||
if (atomic_read(&queue->set_pci_flags_count))
|
||||
qdio_flags |= QDIO_FLAG_PCI_OUT;
|
||||
rc = do_QDIO(CARD_DDEV(queue->card), qdio_flags,
|
||||
queue->queue_no, index, count, NULL);
|
||||
if (queue->card->options.performance_stats)
|
||||
queue->card->perf_stats.outbound_do_qdio_time +=
|
||||
qeth_get_micros() -
|
||||
@@ -8498,6 +8499,7 @@ __qeth_reboot_event_card(struct device *dev, void *data)
|
||||
card = (struct qeth_card *) dev->driver_data;
|
||||
qeth_clear_ip_list(card, 0, 0);
|
||||
qeth_qdio_clear_card(card, 0);
|
||||
qeth_clear_qdio_buffers(card);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user