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:26 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.