From: frank.blaschka@de.ibm.com
To: jgarzik@pobox.com
Cc: netdev@vger.kernel.org, linux-s390@vger.kernel.org,
Ursula Braun <braunu@de.ibm.com>
Subject: [patch 1/8] qeth: improve ip_list administration after deregister failures
Date: Tue, 01 Apr 2008 10:26:53 +0200 [thread overview]
Message-ID: <20080401082740.781438000@de.ibm.com> (raw)
In-Reply-To: 20080401082652.754871000@de.ibm.com
[-- Attachment #1: 01-qeth_ip_list.patch --]
[-- Type: text/plain, Size: 3836 bytes --]
From: Ursula Braun <braunu@de.ibm.com>
1. ip_list handling after deregister failure of multicast address:
If error code "MC Address not found" is returned do not re-add
multicast address to ip_list.
For other error codes readd multicast address at the end of
function qeth_delete_all_mc.
2. ip_list handling after deregister failure or normal ip address:
If error code "IP Address not found" is returned do not re-add
multicast address to ip list.
This is especially important in IP address takeover scenarios,
to enable re-takeover of a taken over IP address.
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
drivers/s390/net/qeth_core_mpc.c | 2 +-
drivers/s390/net/qeth_core_mpc.h | 2 +-
drivers/s390/net/qeth_l3_main.c | 14 +++++++++-----
3 files changed, 11 insertions(+), 7 deletions(-)
Index: git_davem-2.6.26/drivers/s390/net/qeth_l3_main.c
===================================================================
--- git_davem-2.6.26.orig/drivers/s390/net/qeth_l3_main.c 2008-03-26 09:21:08.000000000 +0100
+++ git_davem-2.6.26/drivers/s390/net/qeth_l3_main.c 2008-03-31 11:15:50.000000000 +0200
@@ -401,8 +401,11 @@
static void __qeth_l3_delete_all_mc(struct qeth_card *card,
unsigned long *flags)
{
+ struct list_head fail_list;
struct qeth_ipaddr *addr, *tmp;
int rc;
+
+ INIT_LIST_HEAD(&fail_list);
again:
list_for_each_entry_safe(addr, tmp, &card->ip_list, entry) {
if (addr->is_multicast) {
@@ -410,13 +413,14 @@
spin_unlock_irqrestore(&card->ip_lock, *flags);
rc = qeth_l3_deregister_addr_entry(card, addr);
spin_lock_irqsave(&card->ip_lock, *flags);
- if (!rc) {
+ if (!rc || (rc == IPA_RC_MC_ADDR_NOT_FOUND))
kfree(addr);
- goto again;
- } else
- list_add(&addr->entry, &card->ip_list);
+ else
+ list_add_tail(&addr->entry, &fail_list);
+ goto again;
}
}
+ list_splice(&fail_list, &card->ip_list);
}
static void qeth_l3_set_ip_addr_list(struct qeth_card *card)
@@ -467,7 +471,7 @@
spin_unlock_irqrestore(&card->ip_lock, flags);
rc = qeth_l3_deregister_addr_entry(card, addr);
spin_lock_irqsave(&card->ip_lock, flags);
- if (!rc)
+ if (!rc || (rc == IPA_RC_PRIMARY_ALREADY_DEFINED))
kfree(addr);
else
list_add_tail(&addr->entry, &card->ip_list);
Index: git_davem-2.6.26/drivers/s390/net/qeth_core_mpc.h
===================================================================
--- git_davem-2.6.26.orig/drivers/s390/net/qeth_core_mpc.h 2008-03-26 09:21:08.000000000 +0100
+++ git_davem-2.6.26/drivers/s390/net/qeth_core_mpc.h 2008-03-31 11:15:50.000000000 +0200
@@ -182,7 +182,7 @@
IPA_RC_SETIP_NO_STARTLAN = 0xe008,
IPA_RC_SETIP_ALREADY_RECEIVED = 0xe009,
IPA_RC_IP_ADDR_ALREADY_USED = 0xe00a,
- IPA_RC_MULTICAST_FULL = 0xe00b,
+ IPA_RC_MC_ADDR_NOT_FOUND = 0xe00b,
IPA_RC_SETIP_INVALID_VERSION = 0xe00d,
IPA_RC_UNSUPPORTED_SUBCMD = 0xe00e,
IPA_RC_ARP_ASSIST_NO_ENABLE = 0xe00f,
Index: git_davem-2.6.26/drivers/s390/net/qeth_core_mpc.c
===================================================================
--- git_davem-2.6.26.orig/drivers/s390/net/qeth_core_mpc.c 2008-03-26 09:21:08.000000000 +0100
+++ git_davem-2.6.26/drivers/s390/net/qeth_core_mpc.c 2008-03-31 11:15:50.000000000 +0200
@@ -195,7 +195,7 @@
{IPA_RC_SETIP_NO_STARTLAN, "Setip no startlan received"},
{IPA_RC_SETIP_ALREADY_RECEIVED, "Setip already received"},
{IPA_RC_IP_ADDR_ALREADY_USED, "IP address already in use on LAN"},
- {IPA_RC_MULTICAST_FULL, "No task available, multicast full"},
+ {IPA_RC_MC_ADDR_NOT_FOUND, "Multicast address not found"},
{IPA_RC_SETIP_INVALID_VERSION, "SETIP invalid IP version"},
{IPA_RC_UNSUPPORTED_SUBCMD, "Unsupported assist subcommand"},
{IPA_RC_ARP_ASSIST_NO_ENABLE, "Only partial success, no enable"},
--
next prev parent reply other threads:[~2008-04-01 8:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-01 8:26 [patch 0/8] s390: qeth bug fixes for 2.6.26 frank.blaschka
2008-04-01 8:26 ` frank.blaschka [this message]
2008-04-12 9:02 ` [patch 1/8] qeth: improve ip_list administration after deregister failures Jeff Garzik
2008-04-01 8:26 ` [patch 2/8] qeth: allow qdio queue element addresses > 2GB frank.blaschka
2008-04-01 8:26 ` [patch 3/8] qeth: set lan_online flag after a received STARTLAN frank.blaschka
2008-04-01 8:26 ` [patch 4/8] qeth: CCL-sequence numbers required for protocol ETH_P_802_2 only frank.blaschka
2008-04-01 8:26 ` [patch 6/8] qeth: improving debug message handling frank.blaschka
2008-04-01 8:26 ` [patch 7/8] qeth: core code should alloc headroom for LLC protocol frank.blaschka
2008-04-01 8:27 ` [patch 8/8] qeth: keep ip-address after LAN_OFFLINE failure frank.blaschka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080401082740.781438000@de.ibm.com \
--to=frank.blaschka@de.ibm.com \
--cc=braunu@de.ibm.com \
--cc=jgarzik@pobox.com \
--cc=linux-s390@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).