summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorSedat Dilek <sedat.dilek@gmail.com>2019-02-15 07:19:20 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2019-02-19 18:58:38 -0500
commit8beb90aaf334a6efa3e924339926b5f93a234dbb (patch)
treece1a25ea13abea65776a42b5f2b0c689b10f63a3 /drivers/scsi
parentbcf3b67d16a4c8ffae0aa79de5853435e683945c (diff)
scsi: fcoe: make use of fip_mode enum complete
commit 1917d42d14b7 ("fcoe: use enum for fip_mode") introduces a separate enum for the fip_mode that shall be used during initialisation handling until it is passed to fcoe_ctrl_link_up to set the initial fip_state. That change was incomplete and gcc quietly converted in various places between the fip_mode and the fip_state enum values with implicit enum conversions, which fortunately cannot cause any issues in the actual code's execution. clang however warns about these implicit enum conversions in the scsi drivers. This commit consolidates the use of the two enums, guided by clang's enum-conversion warnings. This commit now completes the use of the fip_mode: It expects and uses fip_mode in {bnx2fc,fcoe}_interface_create and fcoe_ctlr_init, and it calls fcoe_ctrl_set_set() with the correct values in fcoe_ctlr_link_up(). It also breaks the association between FIP_MODE_AUTO and FIP_ST_AUTO to indicate these two enums are distinct. Link: https://github.com/ClangBuiltLinux/linux/issues/151 Fixes: 1917d42d14b7 ("fcoe: use enum for fip_mode") Reported-by: Dmitry Golovin <dima@golovin.in> Original-by: Lukas Bulwahn <lukas.bulwahn@gmail.com> CC: Lukas Bulwahn <lukas.bulwahn@gmail.com> CC: Nick Desaulniers <ndesaulniers@google.com> CC: Nathan Chancellor <natechancellor@gmail.com> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com> Suggested-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com> Signed-off-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_fcoe.c2
-rw-r--r--drivers/scsi/fcoe/fcoe.c2
-rw-r--r--drivers/scsi/fcoe/fcoe_ctlr.c7
-rw-r--r--drivers/scsi/fcoe/fcoe_transport.c2
-rw-r--r--drivers/scsi/qedf/qedf_main.c2
5 files changed, 9 insertions, 6 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
index 2e4e7159ebf9..a75e74ad1698 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
@@ -1438,7 +1438,7 @@ bind_err:
1438static struct bnx2fc_interface * 1438static struct bnx2fc_interface *
1439bnx2fc_interface_create(struct bnx2fc_hba *hba, 1439bnx2fc_interface_create(struct bnx2fc_hba *hba,
1440 struct net_device *netdev, 1440 struct net_device *netdev,
1441 enum fip_state fip_mode) 1441 enum fip_mode fip_mode)
1442{ 1442{
1443 struct fcoe_ctlr_device *ctlr_dev; 1443 struct fcoe_ctlr_device *ctlr_dev;
1444 struct bnx2fc_interface *interface; 1444 struct bnx2fc_interface *interface;
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index cd19be3f3405..8ba8862d3292 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -389,7 +389,7 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe,
389 * Returns: pointer to a struct fcoe_interface or NULL on error 389 * Returns: pointer to a struct fcoe_interface or NULL on error
390 */ 390 */
391static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev, 391static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev,
392 enum fip_state fip_mode) 392 enum fip_mode fip_mode)
393{ 393{
394 struct fcoe_ctlr_device *ctlr_dev; 394 struct fcoe_ctlr_device *ctlr_dev;
395 struct fcoe_ctlr *ctlr; 395 struct fcoe_ctlr *ctlr;
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
index 54da3166da8d..7dc4ffa24430 100644
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
@@ -147,7 +147,7 @@ static void fcoe_ctlr_map_dest(struct fcoe_ctlr *fip)
147 * fcoe_ctlr_init() - Initialize the FCoE Controller instance 147 * fcoe_ctlr_init() - Initialize the FCoE Controller instance
148 * @fip: The FCoE controller to initialize 148 * @fip: The FCoE controller to initialize
149 */ 149 */
150void fcoe_ctlr_init(struct fcoe_ctlr *fip, enum fip_state mode) 150void fcoe_ctlr_init(struct fcoe_ctlr *fip, enum fip_mode mode)
151{ 151{
152 fcoe_ctlr_set_state(fip, FIP_ST_LINK_WAIT); 152 fcoe_ctlr_set_state(fip, FIP_ST_LINK_WAIT);
153 fip->mode = mode; 153 fip->mode = mode;
@@ -454,7 +454,10 @@ void fcoe_ctlr_link_up(struct fcoe_ctlr *fip)
454 mutex_unlock(&fip->ctlr_mutex); 454 mutex_unlock(&fip->ctlr_mutex);
455 fc_linkup(fip->lp); 455 fc_linkup(fip->lp);
456 } else if (fip->state == FIP_ST_LINK_WAIT) { 456 } else if (fip->state == FIP_ST_LINK_WAIT) {
457 fcoe_ctlr_set_state(fip, fip->mode); 457 if (fip->mode == FIP_MODE_NON_FIP)
458 fcoe_ctlr_set_state(fip, FIP_ST_NON_FIP);
459 else
460 fcoe_ctlr_set_state(fip, FIP_ST_AUTO);
458 switch (fip->mode) { 461 switch (fip->mode) {
459 default: 462 default:
460 LIBFCOE_FIP_DBG(fip, "invalid mode %d\n", fip->mode); 463 LIBFCOE_FIP_DBG(fip, "invalid mode %d\n", fip->mode);
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index 6d3949b687ef..29fe3426f9f2 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -872,7 +872,7 @@ static int fcoe_transport_create(const char *buffer,
872 int rc = -ENODEV; 872 int rc = -ENODEV;
873 struct net_device *netdev = NULL; 873 struct net_device *netdev = NULL;
874 struct fcoe_transport *ft = NULL; 874 struct fcoe_transport *ft = NULL;
875 enum fip_state fip_mode = (enum fip_state)(long)kp->arg; 875 enum fip_mode fip_mode = (enum fip_mode)kp->arg;
876 876
877 mutex_lock(&ft_mutex); 877 mutex_lock(&ft_mutex);
878 878
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c
index edcaf4b0cb0b..d43342b327ac 100644
--- a/drivers/scsi/qedf/qedf_main.c
+++ b/drivers/scsi/qedf/qedf_main.c
@@ -1417,7 +1417,7 @@ static struct libfc_function_template qedf_lport_template = {
1417 1417
1418static void qedf_fcoe_ctlr_setup(struct qedf_ctx *qedf) 1418static void qedf_fcoe_ctlr_setup(struct qedf_ctx *qedf)
1419{ 1419{
1420 fcoe_ctlr_init(&qedf->ctlr, FIP_ST_AUTO); 1420 fcoe_ctlr_init(&qedf->ctlr, FIP_MODE_AUTO);
1421 1421
1422 qedf->ctlr.send = qedf_fip_send; 1422 qedf->ctlr.send = qedf_fip_send;
1423 qedf->ctlr.get_src_addr = qedf_get_src_mac; 1423 qedf->ctlr.get_src_addr = qedf_get_src_mac;