netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: netdev@vger.kernel.org
Cc: joe@perches.com, davem@davemloft.net,
	Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: [PATCH v2 net-next 3/8] net/ncsi: Enforce failover on link monitor timeout
Date: Thu, 13 Apr 2017 17:48:16 +1000	[thread overview]
Message-ID: <1492069701-20772-4-git-send-email-gwshan@linux.vnet.ibm.com> (raw)
In-Reply-To: <1492069701-20772-1-git-send-email-gwshan@linux.vnet.ibm.com>

The NCSI channel has been configured to provide service if its link
monitor timer is enabled, regardless of its state (inactive or active).
So the timeout event on the link monitor indicates the out-of-service
on that channel, for which a failover is needed.

This sets NCSI_DEV_RESHUFFLE flag to enforce failover on link monitor
timeout, regardless the channel's original state (inactive or active).
Also, the link is put into "down" state to give the failing channel
lowest priority when selecting for the active channel. The state of
failing channel should be set to active in order for deinitialization
and failover to be done.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 net/ncsi/ncsi-manage.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c
index c71a3a5..13ad1f26 100644
--- a/net/ncsi/ncsi-manage.c
+++ b/net/ncsi/ncsi-manage.c
@@ -170,6 +170,7 @@ static void ncsi_channel_monitor(unsigned long data)
 	struct ncsi_channel *nc = (struct ncsi_channel *)data;
 	struct ncsi_package *np = nc->package;
 	struct ncsi_dev_priv *ndp = np->ndp;
+	struct ncsi_channel_mode *ncm;
 	struct ncsi_cmd_arg nca;
 	bool enabled, chained;
 	unsigned int monitor_state;
@@ -214,20 +215,21 @@ static void ncsi_channel_monitor(unsigned long data)
 	case NCSI_CHANNEL_MONITOR_WAIT ... NCSI_CHANNEL_MONITOR_WAIT_MAX:
 		break;
 	default:
-		if (!(ndp->flags & NCSI_DEV_HWA) &&
-		    state == NCSI_CHANNEL_ACTIVE) {
+		if (!(ndp->flags & NCSI_DEV_HWA)) {
 			ncsi_report_link(ndp, true);
 			ndp->flags |= NCSI_DEV_RESHUFFLE;
 		}
 
+		ncm = &nc->modes[NCSI_MODE_LINK];
 		spin_lock_irqsave(&nc->lock, flags);
 		nc->state = NCSI_CHANNEL_INVISIBLE;
+		ncm->data[2] &= ~0x1;
 		spin_unlock_irqrestore(&nc->lock, flags);
 
 		ncsi_stop_channel_monitor(nc);
 
 		spin_lock_irqsave(&ndp->lock, flags);
-		nc->state = NCSI_CHANNEL_INACTIVE;
+		nc->state = NCSI_CHANNEL_ACTIVE;
 		list_add_tail_rcu(&nc->link, &ndp->channel_queue);
 		spin_unlock_irqrestore(&ndp->lock, flags);
 		ncsi_process_next_channel(ndp);
-- 
2.7.4

  parent reply	other threads:[~2017-04-13  7:50 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-13  7:48 [PATCH v2 net-next 0/8] net/ncsi: Add debugging functionality Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 1/8] net/ncsi: Disable HWA mode when no channels are found Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 2/8] net/ncsi: Properly track channel monitor timer state Gavin Shan
2017-04-13  7:48 ` Gavin Shan [this message]
2017-04-13  7:48 ` [PATCH v2 net-next 4/8] net/ncsi: Add debugging infrastructurre Gavin Shan
2017-04-13 10:41   ` Joe Perches
2017-04-17 23:22     ` Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 5/8] net/ncsi: Dump NCSI packet statistics Gavin Shan
2017-04-13 10:50   ` Joe Perches
2017-04-17 23:23     ` Gavin Shan
2017-04-14  1:50   ` Jakub Kicinski
2017-04-18  0:14     ` Gavin Shan
2017-04-14  2:30   ` Joe Perches
2017-04-18  0:22     ` Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 6/8] net/ncsi: Support NCSI packet generation Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 7/8] net/ncsi: No error report on DP response to non-existing package Gavin Shan
2017-04-13  7:48 ` [PATCH v2 net-next 8/8] net/ncsi: Fix length of GVI response packet Gavin Shan

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=1492069701-20772-4-git-send-email-gwshan@linux.vnet.ibm.com \
    --to=gwshan@linux.vnet.ibm.com \
    --cc=davem@davemloft.net \
    --cc=joe@perches.com \
    --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).