From d151fb0718aa26f97ecc579a5f36366a0bd0a173 Mon Sep 17 00:00:00 2001 From: Frank Pavlic Date: Thu, 10 Nov 2005 13:50:58 +0100 Subject: [PATCH] --- yaml --- r: 13887 b: refs/heads/master c: d805d7c692e414c3adf01bb414a8c542ac2e67d1 h: refs/heads/master i: 13885: 15be8c0fb71134664d9c0090ae4bb685f8528996 13883: 8fe0a21840b1a8a172ea725fb314b46bc8d0033f 13879: 1b3a14e246718d9774e11069fbe93133dc90c998 13871: ef2080043656d6e4d5f08193abd9872efead3a55 13855: 08ac41bf17869f4a149f13343f832b4ca6955a06 13823: 203f78dc92c2a095eaf29ba80f6d3b8442cb654a v: v3 --- [refs] | 2 +- trunk/drivers/s390/net/qeth_main.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index faed09560fed..e374800dd2fb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6c88ad2ded1de1fe87e917b4a0a45873939c16e1 +refs/heads/master: d805d7c692e414c3adf01bb414a8c542ac2e67d1 diff --git a/trunk/drivers/s390/net/qeth_main.c b/trunk/drivers/s390/net/qeth_main.c index 0a5d758b531e..d6844b24a8aa 100644 --- a/trunk/drivers/s390/net/qeth_main.c +++ b/trunk/drivers/s390/net/qeth_main.c @@ -1,6 +1,6 @@ /* * - * linux/drivers/s390/net/qeth_main.c ($Revision: 1.236 $) + * linux/drivers/s390/net/qeth_main.c ($Revision: 1.238 $) * * Linux on zSeries OSA Express and HiperSockets support * @@ -12,7 +12,7 @@ * Frank Pavlic (pavlic@de.ibm.com) and * Thomas Spatzier * - * $Revision: 1.236 $ $Date: 2005/05/04 20:19:18 $ + * $Revision: 1.238 $ $Date: 2005/05/04 20:19:18 $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -72,7 +72,7 @@ #include "qeth_eddp.h" #include "qeth_tso.h" -#define VERSION_QETH_C "$Revision: 1.236 $" +#define VERSION_QETH_C "$Revision: 1.238 $" static const char *version = "qeth S/390 OSA-Express driver"; /** @@ -799,7 +799,7 @@ __qeth_delete_all_mc(struct qeth_card *card, unsigned long *flags) { struct qeth_ipaddr *addr, *tmp; int rc; - +again: list_for_each_entry_safe(addr, tmp, &card->ip_list, entry) { if (addr->is_multicast) { spin_unlock_irqrestore(&card->ip_lock, *flags); @@ -808,6 +808,7 @@ __qeth_delete_all_mc(struct qeth_card *card, unsigned long *flags) if (!rc) { list_del(&addr->entry); kfree(addr); + goto again; } } } @@ -4336,6 +4337,8 @@ qeth_do_send_packet(struct qeth_card *card, struct qeth_qdio_out_q *queue, out: if (flush_count) qeth_flush_buffers(queue, 0, start_index, flush_count); + else if (!atomic_read(&queue->set_pci_flags_count)) + atomic_swap(&queue->state, QETH_OUT_Q_LOCKED_FLUSH); /* * queue->state will go from LOCKED -> UNLOCKED or from * LOCKED_FLUSH -> LOCKED if output_handler wanted to 'notify' us