aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2016-10-19 20:45:49 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-20 11:23:07 -0400
commit7ba5c003db59a6f738d87d92b68d4a91cdf22f60 (patch)
tree26ab3d17d37851252621eeef0ea7d332dfd0ed9a
parent5712bf9c5c30ade3204016147d7b04bece6952d9 (diff)
net/ncsi: Avoid if statements in ncsi_suspend_channel()
There are several if/else statements in the state machine implemented by switch/case in ncsi_suspend_channel() to avoid duplicated code. It makes the code a bit hard to be understood. This drops if/else statements in ncsi_suspend_channel() to improve the code readability as Joel Stanley suggested. Also, it becomes easy to add more states in the state machine without affecting current code. No logical changes introduced by this. Suggested-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ncsi/ncsi-manage.c78
1 files changed, 50 insertions, 28 deletions
diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c
index 5e509e547c2d..655d0d653926 100644
--- a/net/ncsi/ncsi-manage.c
+++ b/net/ncsi/ncsi-manage.c
@@ -540,42 +540,60 @@ static void ncsi_suspend_channel(struct ncsi_dev_priv *ndp)
540 nd->state = ncsi_dev_state_suspend_select; 540 nd->state = ncsi_dev_state_suspend_select;
541 /* Fall through */ 541 /* Fall through */
542 case ncsi_dev_state_suspend_select: 542 case ncsi_dev_state_suspend_select:
543 ndp->pending_req_num = 1;
544
545 nca.type = NCSI_PKT_CMD_SP;
546 nca.package = np->id;
547 nca.channel = NCSI_RESERVED_CHANNEL;
548 if (ndp->flags & NCSI_DEV_HWA)
549 nca.bytes[0] = 0;
550 else
551 nca.bytes[0] = 1;
552
553 nd->state = ncsi_dev_state_suspend_dcnt;
554 ret = ncsi_xmit_cmd(&nca);
555 if (ret)
556 goto error;
557
558 break;
543 case ncsi_dev_state_suspend_dcnt: 559 case ncsi_dev_state_suspend_dcnt:
560 ndp->pending_req_num = 1;
561
562 nca.type = NCSI_PKT_CMD_DCNT;
563 nca.package = np->id;
564 nca.channel = nc->id;
565
566 nd->state = ncsi_dev_state_suspend_dc;
567 ret = ncsi_xmit_cmd(&nca);
568 if (ret)
569 goto error;
570
571 break;
544 case ncsi_dev_state_suspend_dc: 572 case ncsi_dev_state_suspend_dc:
573 ndp->pending_req_num = 1;
574
575 nca.type = NCSI_PKT_CMD_DC;
576 nca.package = np->id;
577 nca.channel = nc->id;
578 nca.bytes[0] = 1;
579
580 nd->state = ncsi_dev_state_suspend_deselect;
581 ret = ncsi_xmit_cmd(&nca);
582 if (ret)
583 goto error;
584
585 break;
545 case ncsi_dev_state_suspend_deselect: 586 case ncsi_dev_state_suspend_deselect:
546 ndp->pending_req_num = 1; 587 ndp->pending_req_num = 1;
547 588
548 np = ndp->active_package; 589 nca.type = NCSI_PKT_CMD_DP;
549 nc = ndp->active_channel;
550 nca.package = np->id; 590 nca.package = np->id;
551 if (nd->state == ncsi_dev_state_suspend_select) { 591 nca.channel = NCSI_RESERVED_CHANNEL;
552 nca.type = NCSI_PKT_CMD_SP;
553 nca.channel = NCSI_RESERVED_CHANNEL;
554 if (ndp->flags & NCSI_DEV_HWA)
555 nca.bytes[0] = 0;
556 else
557 nca.bytes[0] = 1;
558 nd->state = ncsi_dev_state_suspend_dcnt;
559 } else if (nd->state == ncsi_dev_state_suspend_dcnt) {
560 nca.type = NCSI_PKT_CMD_DCNT;
561 nca.channel = nc->id;
562 nd->state = ncsi_dev_state_suspend_dc;
563 } else if (nd->state == ncsi_dev_state_suspend_dc) {
564 nca.type = NCSI_PKT_CMD_DC;
565 nca.channel = nc->id;
566 nca.bytes[0] = 1;
567 nd->state = ncsi_dev_state_suspend_deselect;
568 } else if (nd->state == ncsi_dev_state_suspend_deselect) {
569 nca.type = NCSI_PKT_CMD_DP;
570 nca.channel = NCSI_RESERVED_CHANNEL;
571 nd->state = ncsi_dev_state_suspend_done;
572 }
573 592
593 nd->state = ncsi_dev_state_suspend_done;
574 ret = ncsi_xmit_cmd(&nca); 594 ret = ncsi_xmit_cmd(&nca);
575 if (ret) { 595 if (ret)
576 nd->state = ncsi_dev_state_functional; 596 goto error;
577 return;
578 }
579 597
580 break; 598 break;
581 case ncsi_dev_state_suspend_done: 599 case ncsi_dev_state_suspend_done:
@@ -589,6 +607,10 @@ static void ncsi_suspend_channel(struct ncsi_dev_priv *ndp)
589 netdev_warn(nd->dev, "Wrong NCSI state 0x%x in suspend\n", 607 netdev_warn(nd->dev, "Wrong NCSI state 0x%x in suspend\n",
590 nd->state); 608 nd->state);
591 } 609 }
610
611 return;
612error:
613 nd->state = ncsi_dev_state_functional;
592} 614}
593 615
594static void ncsi_configure_channel(struct ncsi_dev_priv *ndp) 616static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)