* [PATCH RESEND 4/8] bfa: Fix for bcu or hcm faa query hang
2013-11-21 9:37 [PATCH RESEND 3/8] bfa: LUN discovery issue in direct attach mode vmohan
@ 2013-11-21 9:37 ` vmohan
2013-11-21 9:37 ` [PATCH RESEND 5/8] bfa: Observed auto D-port mode instead of manual vmohan
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: vmohan @ 2013-11-21 9:37 UTC (permalink / raw)
To: linux-scsi; +Cc: agurumur, james.bottomley
From: Vijaya Mohan Guvva <vmohan@brocade.com>
This patch set fixes the issue of brocade management utility hang
(bcu/HCM) when faa attributes are queried from multiple application
threads. Hang was due to race between the threads and completion handler
corruption.
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
---
drivers/scsi/bfa/bfa_core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c
index 520540a..e3f67b0 100644
--- a/drivers/scsi/bfa/bfa_core.c
+++ b/drivers/scsi/bfa/bfa_core.c
@@ -1367,10 +1367,6 @@ bfa_faa_query(struct bfa_s *bfa, struct bfa_faa_attr_s *attr,
struct bfa_iocfc_s *iocfc = &bfa->iocfc;
bfa_status_t status;
- iocfc->faa_args.faa_attr = attr;
- iocfc->faa_args.faa_cb.faa_cbfn = cbfn;
- iocfc->faa_args.faa_cb.faa_cbarg = cbarg;
-
status = bfa_faa_validate_request(bfa);
if (status != BFA_STATUS_OK)
return status;
@@ -1378,6 +1374,10 @@ bfa_faa_query(struct bfa_s *bfa, struct bfa_faa_attr_s *attr,
if (iocfc->faa_args.busy == BFA_TRUE)
return BFA_STATUS_DEVBUSY;
+ iocfc->faa_args.faa_attr = attr;
+ iocfc->faa_args.faa_cb.faa_cbfn = cbfn;
+ iocfc->faa_args.faa_cb.faa_cbarg = cbarg;
+
iocfc->faa_args.busy = BFA_TRUE;
memset(&faa_attr_req, 0, sizeof(struct bfi_faa_query_s));
bfi_h2i_set(faa_attr_req.mh, BFI_MC_IOCFC,
--
1.8.2.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND 5/8] bfa: Observed auto D-port mode instead of manual
2013-11-21 9:37 [PATCH RESEND 3/8] bfa: LUN discovery issue in direct attach mode vmohan
2013-11-21 9:37 ` [PATCH RESEND 4/8] bfa: Fix for bcu or hcm faa query hang vmohan
@ 2013-11-21 9:37 ` vmohan
2013-11-21 9:37 ` [PATCH RESEND 6/8] bfa: change FC_ELS_TOV to 20sec vmohan
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: vmohan @ 2013-11-21 9:37 UTC (permalink / raw)
To: linux-scsi; +Cc: agurumur, james.bottomley
From: Vijaya Mohan Guvva <vmohan@brocade.com>
Observed Auto mode in the HBA side while doing manual D-Port test on the
switch side. Mode is not passed to BFA from firmware when the test is
triggered by switch side. BFA just blindly using Auto mode.
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
---
drivers/scsi/bfa/bfa_svc.c | 2 +-
drivers/scsi/bfa/bfi.h | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/bfa/bfa_svc.c b/drivers/scsi/bfa/bfa_svc.c
index 6c41e57..625225f 100644
--- a/drivers/scsi/bfa/bfa_svc.c
+++ b/drivers/scsi/bfa/bfa_svc.c
@@ -6758,7 +6758,7 @@ bfa_dport_scn(struct bfa_dport_s *dport, struct bfi_diag_dport_scn_s *msg)
dport->rp_pwwn = msg->info.teststart.pwwn;
dport->rp_nwwn = msg->info.teststart.nwwn;
dport->lpcnt = cpu_to_be32(msg->info.teststart.numfrm);
- bfa_dport_result_start(dport, BFA_DPORT_OPMODE_AUTO);
+ bfa_dport_result_start(dport, msg->info.teststart.mode);
break;
case BFI_DPORT_SCN_SUBTESTSTART:
diff --git a/drivers/scsi/bfa/bfi.h b/drivers/scsi/bfa/bfi.h
index 7192e99..1d97a22 100644
--- a/drivers/scsi/bfa/bfi.h
+++ b/drivers/scsi/bfa/bfi.h
@@ -1144,7 +1144,8 @@ struct bfi_diag_dport_scn_teststart_s {
wwn_t pwwn; /* switch port wwn. 8 bytes */
wwn_t nwwn; /* switch node wwn. 8 bytes */
u8 type; /* bfa_diag_dport_test_type_e */
- u8 rsvd[3];
+ u8 mode; /* bfa_diag_dport_test_opmode */
+ u8 rsvd[2];
u32 numfrm; /* from switch uint in 1M */
};
--
1.8.2.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND 6/8] bfa: change FC_ELS_TOV to 20sec
2013-11-21 9:37 [PATCH RESEND 3/8] bfa: LUN discovery issue in direct attach mode vmohan
2013-11-21 9:37 ` [PATCH RESEND 4/8] bfa: Fix for bcu or hcm faa query hang vmohan
2013-11-21 9:37 ` [PATCH RESEND 5/8] bfa: Observed auto D-port mode instead of manual vmohan
@ 2013-11-21 9:37 ` vmohan
2013-11-21 9:37 ` [PATCH RESEND 7/8] bfa: Fix crash when symb name set for offline vport vmohan
2013-11-21 9:37 ` [PATCH RESEND 8/8] bfa: Driver version upgrade to 3.2.23.0 vmohan
4 siblings, 0 replies; 6+ messages in thread
From: vmohan @ 2013-11-21 9:37 UTC (permalink / raw)
To: linux-scsi; +Cc: agurumur, james.bottomley
From: Vijaya Mohan Guvva <vmohan@brocade.com>
As per the FCP specs, the timeout for issuing ABTS is 20 sec; not 21
sec. Hence setting the TOV to 20 sec.
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
---
drivers/scsi/bfa/bfa_fc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/bfa/bfa_fc.h b/drivers/scsi/bfa/bfa_fc.h
index 562ef73..64069a0 100644
--- a/drivers/scsi/bfa/bfa_fc.h
+++ b/drivers/scsi/bfa/bfa_fc.h
@@ -1026,7 +1026,7 @@ struct fc_alpabm_s {
#define FC_ED_TOV 2
#define FC_REC_TOV (FC_ED_TOV + 1)
#define FC_RA_TOV 10
-#define FC_ELS_TOV ((2 * FC_RA_TOV) + 1)
+#define FC_ELS_TOV (2 * FC_RA_TOV)
#define FC_FCCT_TOV (3 * FC_RA_TOV)
/*
--
1.8.2.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND 7/8] bfa: Fix crash when symb name set for offline vport
2013-11-21 9:37 [PATCH RESEND 3/8] bfa: LUN discovery issue in direct attach mode vmohan
` (2 preceding siblings ...)
2013-11-21 9:37 ` [PATCH RESEND 6/8] bfa: change FC_ELS_TOV to 20sec vmohan
@ 2013-11-21 9:37 ` vmohan
2013-11-21 9:37 ` [PATCH RESEND 8/8] bfa: Driver version upgrade to 3.2.23.0 vmohan
4 siblings, 0 replies; 6+ messages in thread
From: vmohan @ 2013-11-21 9:37 UTC (permalink / raw)
To: linux-scsi; +Cc: agurumur, james.bottomley
From: Vijaya Mohan Guvva <vmohan@brocade.com>
This patch fixes a crash when tried setting symbolic name for an offline
vport through sysfs. Crash is due to uninitialized pointer lport->ns,
which gets initialized only on linkup (port online).
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
---
drivers/scsi/bfa/bfa_fcs.h | 1 +
drivers/scsi/bfa/bfa_fcs_lport.c | 14 +++++++++++---
drivers/scsi/bfa/bfad_attr.c | 7 ++-----
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/scsi/bfa/bfa_fcs.h b/drivers/scsi/bfa/bfa_fcs.h
index 94d5d01..42bcb97 100644
--- a/drivers/scsi/bfa/bfa_fcs.h
+++ b/drivers/scsi/bfa/bfa_fcs.h
@@ -296,6 +296,7 @@ wwn_t bfa_fcs_lport_get_rport(struct bfa_fcs_lport_s *port, wwn_t wwn,
struct bfa_fcs_lport_s *bfa_fcs_lookup_port(struct bfa_fcs_s *fcs,
u16 vf_id, wwn_t lpwwn);
+void bfa_fcs_lport_set_symname(struct bfa_fcs_lport_s *port, char *symname);
void bfa_fcs_lport_get_info(struct bfa_fcs_lport_s *port,
struct bfa_lport_info_s *port_info);
void bfa_fcs_lport_get_attr(struct bfa_fcs_lport_s *port,
diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c
index 06bae2b..ff75ef8 100644
--- a/drivers/scsi/bfa/bfa_fcs_lport.c
+++ b/drivers/scsi/bfa/bfa_fcs_lport.c
@@ -1110,6 +1110,17 @@ bfa_fcs_lport_init(struct bfa_fcs_lport_s *lport,
bfa_sm_send_event(lport, BFA_FCS_PORT_SM_CREATE);
}
+void
+bfa_fcs_lport_set_symname(struct bfa_fcs_lport_s *port,
+ char *symname)
+{
+ strcpy(port->port_cfg.sym_name.symname, symname);
+
+ if (bfa_sm_cmp_state(port, bfa_fcs_lport_sm_online))
+ bfa_fcs_lport_ns_util_send_rspn_id(
+ BFA_FCS_GET_NS_FROM_PORT(port), NULL);
+}
+
/*
* fcs_lport_api
*/
@@ -5153,9 +5164,6 @@ bfa_fcs_lport_ns_util_send_rspn_id(void *cbarg, struct bfa_fcxp_s *fcxp_alloced)
u8 *psymbl = &symbl[0];
int len;
- if (!bfa_sm_cmp_state(port, bfa_fcs_lport_sm_online))
- return;
-
/* Avoid sending RSPN in the following states. */
if (bfa_sm_cmp_state(ns, bfa_fcs_lport_ns_sm_offline) ||
bfa_sm_cmp_state(ns, bfa_fcs_lport_ns_sm_plogi_sending) ||
diff --git a/drivers/scsi/bfa/bfad_attr.c b/drivers/scsi/bfa/bfad_attr.c
index e9a681d..40be670 100644
--- a/drivers/scsi/bfa/bfad_attr.c
+++ b/drivers/scsi/bfa/bfad_attr.c
@@ -593,11 +593,8 @@ bfad_im_vport_set_symbolic_name(struct fc_vport *fc_vport)
return;
spin_lock_irqsave(&bfad->bfad_lock, flags);
- if (strlen(sym_name) > 0) {
- strcpy(fcs_vport->lport.port_cfg.sym_name.symname, sym_name);
- bfa_fcs_lport_ns_util_send_rspn_id(
- BFA_FCS_GET_NS_FROM_PORT((&fcs_vport->lport)), NULL);
- }
+ if (strlen(sym_name) > 0)
+ bfa_fcs_lport_set_symname(&fcs_vport->lport, sym_name);
spin_unlock_irqrestore(&bfad->bfad_lock, flags);
}
--
1.8.2.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND 8/8] bfa: Driver version upgrade to 3.2.23.0
2013-11-21 9:37 [PATCH RESEND 3/8] bfa: LUN discovery issue in direct attach mode vmohan
` (3 preceding siblings ...)
2013-11-21 9:37 ` [PATCH RESEND 7/8] bfa: Fix crash when symb name set for offline vport vmohan
@ 2013-11-21 9:37 ` vmohan
4 siblings, 0 replies; 6+ messages in thread
From: vmohan @ 2013-11-21 9:37 UTC (permalink / raw)
To: linux-scsi; +Cc: agurumur, james.bottomley
From: Vijaya Mohan Guvva <vmohan@brocade.com>
Patch includes changes to upgrade bfa driver version to 3.2.23.0 and use
firmware version 3.2.3.0
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
---
drivers/scsi/bfa/bfad.c | 6 +++---
drivers/scsi/bfa/bfad_drv.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index bd17757..e85926c 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -63,9 +63,9 @@ int max_rport_logins = BFA_FCS_MAX_RPORT_LOGINS;
u32 bfi_image_cb_size, bfi_image_ct_size, bfi_image_ct2_size;
u32 *bfi_image_cb, *bfi_image_ct, *bfi_image_ct2;
-#define BFAD_FW_FILE_CB "cbfw-3.2.1.1.bin"
-#define BFAD_FW_FILE_CT "ctfw-3.2.1.1.bin"
-#define BFAD_FW_FILE_CT2 "ct2fw-3.2.1.1.bin"
+#define BFAD_FW_FILE_CB "cbfw-3.2.3.0.bin"
+#define BFAD_FW_FILE_CT "ctfw-3.2.3.0.bin"
+#define BFAD_FW_FILE_CT2 "ct2fw-3.2.3.0.bin"
static u32 *bfad_load_fwimg(struct pci_dev *pdev);
static void bfad_free_fwimg(void);
diff --git a/drivers/scsi/bfa/bfad_drv.h b/drivers/scsi/bfa/bfad_drv.h
index cf56d3d..8b97877 100644
--- a/drivers/scsi/bfa/bfad_drv.h
+++ b/drivers/scsi/bfa/bfad_drv.h
@@ -57,7 +57,7 @@
#ifdef BFA_DRIVER_VERSION
#define BFAD_DRIVER_VERSION BFA_DRIVER_VERSION
#else
-#define BFAD_DRIVER_VERSION "3.2.21.1"
+#define BFAD_DRIVER_VERSION "3.2.23.0"
#endif
#define BFAD_PROTO_NAME FCPI_NAME
--
1.8.2.1
^ permalink raw reply related [flat|nested] 6+ messages in thread