aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrishna Gudipati <kgudipat@brocade.com>2010-03-05 22:37:45 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-03-07 02:36:36 -0500
commitf58e9ebbf78bd36c6cf1ca651280d39efe73a7c0 (patch)
treeffec92bd31a0ebb288cd8a67550a18bad18d2db3
parent1c8a4c37494932acd59079b4fc8d8f69fb329c2a (diff)
[SCSI] bfa: New portlog entries for events (FIP/FLOGI/FDISC/LOGO).
Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r--drivers/scsi/bfa/bfa_fcport.c21
-rw-r--r--drivers/scsi/bfa/bfa_lps.c27
-rw-r--r--drivers/scsi/bfa/include/defs/bfa_defs_pport.h21
-rw-r--r--drivers/scsi/bfa/include/protocol/fc.h5
4 files changed, 66 insertions, 8 deletions
diff --git a/drivers/scsi/bfa/bfa_fcport.c b/drivers/scsi/bfa/bfa_fcport.c
index f392a7fa8c7f..a48413c230a5 100644
--- a/drivers/scsi/bfa/bfa_fcport.c
+++ b/drivers/scsi/bfa/bfa_fcport.c
@@ -326,6 +326,7 @@ static void
326bfa_fcport_sm_linkdown(struct bfa_fcport_s *fcport, 326bfa_fcport_sm_linkdown(struct bfa_fcport_s *fcport,
327 enum bfa_fcport_sm_event event) 327 enum bfa_fcport_sm_event event)
328{ 328{
329 struct bfi_pport_event_s *pevent = fcport->event_arg.i2hmsg.event;
329 bfa_trc(fcport->bfa, event); 330 bfa_trc(fcport->bfa, event);
330 331
331 switch (event) { 332 switch (event) {
@@ -335,6 +336,22 @@ bfa_fcport_sm_linkdown(struct bfa_fcport_s *fcport,
335 bfa_assert(fcport->event_cbfn); 336 bfa_assert(fcport->event_cbfn);
336 bfa_plog_str(fcport->bfa->plog, BFA_PL_MID_HAL, 337 bfa_plog_str(fcport->bfa->plog, BFA_PL_MID_HAL,
337 BFA_PL_EID_PORT_ST_CHANGE, 0, "Port Linkup"); 338 BFA_PL_EID_PORT_ST_CHANGE, 0, "Port Linkup");
339
340 if (!bfa_ioc_get_fcmode(&fcport->bfa->ioc)) {
341
342 bfa_trc(fcport->bfa, pevent->link_state.fcf.fipenabled);
343 bfa_trc(fcport->bfa, pevent->link_state.fcf.fipfailed);
344
345 if (pevent->link_state.fcf.fipfailed)
346 bfa_plog_str(fcport->bfa->plog, BFA_PL_MID_HAL,
347 BFA_PL_EID_FIP_FCF_DISC, 0,
348 "FIP FCF Discovery Failed");
349 else
350 bfa_plog_str(fcport->bfa->plog, BFA_PL_MID_HAL,
351 BFA_PL_EID_FIP_FCF_DISC, 0,
352 "FIP FCF Discovered");
353 }
354
338 bfa_fcport_callback(fcport, BFA_PPORT_LINKUP); 355 bfa_fcport_callback(fcport, BFA_PPORT_LINKUP);
339 bfa_fcport_aen_post(fcport, BFA_PORT_AEN_ONLINE); 356 bfa_fcport_aen_post(fcport, BFA_PORT_AEN_ONLINE);
340 /** 357 /**
@@ -1500,8 +1517,6 @@ bfa_port_stats_query(void *cbarg)
1500 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_GET_STATS_REQ, 1517 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_GET_STATS_REQ,
1501 bfa_lpuid(fcport->bfa)); 1518 bfa_lpuid(fcport->bfa));
1502 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT); 1519 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT);
1503
1504 return;
1505} 1520}
1506 1521
1507static void 1522static void
@@ -1526,7 +1541,6 @@ bfa_port_stats_clear(void *cbarg)
1526 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_CLEAR_STATS_REQ, 1541 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_CLEAR_STATS_REQ,
1527 bfa_lpuid(fcport->bfa)); 1542 bfa_lpuid(fcport->bfa));
1528 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT); 1543 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT);
1529 return;
1530} 1544}
1531 1545
1532static void 1546static void
@@ -1599,7 +1613,6 @@ bfa_port_qos_stats_clear(void *cbarg)
1599 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_CLEAR_QOS_STATS_REQ, 1613 bfi_h2i_set(msg->mh, BFI_MC_FC_PORT, BFI_PPORT_H2I_CLEAR_QOS_STATS_REQ,
1600 bfa_lpuid(fcport->bfa)); 1614 bfa_lpuid(fcport->bfa));
1601 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT); 1615 bfa_reqq_produce(fcport->bfa, BFA_REQQ_PORT);
1602 return;
1603} 1616}
1604 1617
1605static void 1618static void
diff --git a/drivers/scsi/bfa/bfa_lps.c b/drivers/scsi/bfa/bfa_lps.c
index 730616f6e671..d2d48a619c30 100644
--- a/drivers/scsi/bfa/bfa_lps.c
+++ b/drivers/scsi/bfa/bfa_lps.c
@@ -99,6 +99,12 @@ bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event)
99 bfa_sm_set_state(lps, bfa_lps_sm_login); 99 bfa_sm_set_state(lps, bfa_lps_sm_login);
100 bfa_lps_send_login(lps); 100 bfa_lps_send_login(lps);
101 } 101 }
102 if (lps->fdisc)
103 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
104 BFA_PL_EID_LOGIN, 0, "FDISC Request");
105 else
106 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
107 BFA_PL_EID_LOGIN, 0, "FLOGI Request");
102 break; 108 break;
103 109
104 case BFA_LPS_SM_LOGOUT: 110 case BFA_LPS_SM_LOGOUT:
@@ -136,10 +142,25 @@ bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event)
136 142
137 switch (event) { 143 switch (event) {
138 case BFA_LPS_SM_FWRSP: 144 case BFA_LPS_SM_FWRSP:
139 if (lps->status == BFA_STATUS_OK) 145 if (lps->status == BFA_STATUS_OK) {
140 bfa_sm_set_state(lps, bfa_lps_sm_online); 146 bfa_sm_set_state(lps, bfa_lps_sm_online);
141 else 147 if (lps->fdisc)
148 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
149 BFA_PL_EID_LOGIN, 0, "FDISC Accept");
150 else
151 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
152 BFA_PL_EID_LOGIN, 0, "FLOGI Accept");
153 } else {
142 bfa_sm_set_state(lps, bfa_lps_sm_init); 154 bfa_sm_set_state(lps, bfa_lps_sm_init);
155 if (lps->fdisc)
156 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
157 BFA_PL_EID_LOGIN, 0,
158 "FDISC Fail (RJT or timeout)");
159 else
160 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
161 BFA_PL_EID_LOGIN, 0,
162 "FLOGI Fail (RJT or timeout)");
163 }
143 bfa_lps_login_comp(lps); 164 bfa_lps_login_comp(lps);
144 break; 165 break;
145 166
@@ -202,6 +223,8 @@ bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event)
202 bfa_sm_set_state(lps, bfa_lps_sm_logout); 223 bfa_sm_set_state(lps, bfa_lps_sm_logout);
203 bfa_lps_send_logout(lps); 224 bfa_lps_send_logout(lps);
204 } 225 }
226 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
227 BFA_PL_EID_LOGO, 0, "Logout");
205 break; 228 break;
206 229
207 case BFA_LPS_SM_RX_CVL: 230 case BFA_LPS_SM_RX_CVL:
diff --git a/drivers/scsi/bfa/include/defs/bfa_defs_pport.h b/drivers/scsi/bfa/include/defs/bfa_defs_pport.h
index 88662a15a21b..164cfbef9b12 100644
--- a/drivers/scsi/bfa/include/defs/bfa_defs_pport.h
+++ b/drivers/scsi/bfa/include/defs/bfa_defs_pport.h
@@ -333,8 +333,7 @@ struct bfa_pport_fcpmap_s {
333}; 333};
334 334
335/** 335/**
336 * Port RNID info. 336 * Port RNI */
337 */
338struct bfa_pport_rnid_s { 337struct bfa_pport_rnid_s {
339 wwn_t wwn; 338 wwn_t wwn;
340 u32 unittype; 339 u32 unittype;
@@ -347,6 +346,23 @@ struct bfa_pport_rnid_s {
347 u16 topologydiscoveryflags; 346 u16 topologydiscoveryflags;
348}; 347};
349 348
349struct bfa_fcport_fcf_s {
350 wwn_t name; /* FCF name */
351 wwn_t fabric_name; /* Fabric Name */
352 u8 fipenabled; /* FIP enabled or not */
353 u8 fipfailed; /* FIP failed or not */
354 u8 resv[2];
355 u8 pri; /* FCF priority */
356 u8 version; /* FIP version used */
357 u8 available; /* Available for login */
358 u8 fka_disabled; /* FKA is disabled */
359 u8 maxsz_verified; /* FCoE max size verified */
360 u8 fc_map[3]; /* FC map */
361 u16 vlan; /* FCoE vlan tag/priority */
362 u32 fka_adv_per; /* FIP ka advert. period */
363 struct mac_s mac; /* FCF mac */
364};
365
350/** 366/**
351 * Link state information 367 * Link state information
352 */ 368 */
@@ -378,6 +394,7 @@ struct bfa_pport_link_s {
378 struct fc_alpabm_s alpabm; /* alpa bitmap */ 394 struct fc_alpabm_s alpabm; /* alpa bitmap */
379 } loop_info; 395 } loop_info;
380 } tl; 396 } tl;
397 struct bfa_fcport_fcf_s fcf; /*!< FCF information (for FCoE) */
381}; 398};
382 399
383#endif /* __BFA_DEFS_PPORT_H__ */ 400#endif /* __BFA_DEFS_PPORT_H__ */
diff --git a/drivers/scsi/bfa/include/protocol/fc.h b/drivers/scsi/bfa/include/protocol/fc.h
index 14969eecf6a9..8d1038035a76 100644
--- a/drivers/scsi/bfa/include/protocol/fc.h
+++ b/drivers/scsi/bfa/include/protocol/fc.h
@@ -50,6 +50,11 @@ struct fchs_s {
50 50
51 u32 ro; /* relative offset */ 51 u32 ro; /* relative offset */
52}; 52};
53
54#define FC_SOF_LEN 4
55#define FC_EOF_LEN 4
56#define FC_CRC_LEN 4
57
53/* 58/*
54 * Fibre Channel BB_E Header Structure 59 * Fibre Channel BB_E Header Structure
55 */ 60 */