diff options
author | Krishna Gudipati <kgudipat@brocade.com> | 2011-06-13 18:42:10 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-06-29 16:25:57 -0400 |
commit | d37779f8d98a1d7c5ba904982958167d988f01dd (patch) | |
tree | 8d73314ba2894c322494d3cfa06f3273b7ff1c35 /drivers/scsi/bfa | |
parent | 85ce928dbb87585042e7dfebe513f724eadebd5e (diff) |
[SCSI] bfa: Introduce IOC event notification mechanism.
Introduced a generic event notification callback function that
receives IOC_ENABLED, IOC_DISABLED, IOC_FAILED events and notifies the
modules registered for these events.
Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bfa')
-rw-r--r-- | drivers/scsi/bfa/bfa_core.c | 2 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfa_ioc.c | 53 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfa_ioc.h | 24 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfa_port.c | 47 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfa_port.h | 4 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfi.h | 16 |
6 files changed, 88 insertions, 58 deletions
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c index 91838c51fb76..8e496e16a2a8 100644 --- a/drivers/scsi/bfa/bfa_core.c +++ b/drivers/scsi/bfa/bfa_core.c | |||
@@ -821,7 +821,7 @@ bfa_iocfc_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, | |||
821 | if (pcidev->device_id == BFA_PCI_DEVICE_ID_CT_FC) | 821 | if (pcidev->device_id == BFA_PCI_DEVICE_ID_CT_FC) |
822 | bfa_ioc_set_fcmode(&bfa->ioc); | 822 | bfa_ioc_set_fcmode(&bfa->ioc); |
823 | 823 | ||
824 | bfa_ioc_pci_init(&bfa->ioc, pcidev, BFI_MC_IOCFC); | 824 | bfa_ioc_pci_init(&bfa->ioc, pcidev, BFI_PCIFN_CLASS_FC); |
825 | bfa_ioc_mbox_register(&bfa->ioc, bfa_mbox_isrs); | 825 | bfa_ioc_mbox_register(&bfa->ioc, bfa_mbox_isrs); |
826 | 826 | ||
827 | bfa_iocfc_init_mem(bfa, bfad, cfg, pcidev); | 827 | bfa_iocfc_init_mem(bfa, bfad, cfg, pcidev); |
diff --git a/drivers/scsi/bfa/bfa_ioc.c b/drivers/scsi/bfa/bfa_ioc.c index 6c7e0339dda4..d215168ab8b5 100644 --- a/drivers/scsi/bfa/bfa_ioc.c +++ b/drivers/scsi/bfa/bfa_ioc.c | |||
@@ -87,6 +87,8 @@ static void bfa_ioc_mbox_poll(struct bfa_ioc_s *ioc); | |||
87 | static void bfa_ioc_mbox_hbfail(struct bfa_ioc_s *ioc); | 87 | static void bfa_ioc_mbox_hbfail(struct bfa_ioc_s *ioc); |
88 | static void bfa_ioc_recover(struct bfa_ioc_s *ioc); | 88 | static void bfa_ioc_recover(struct bfa_ioc_s *ioc); |
89 | static void bfa_ioc_check_attr_wwns(struct bfa_ioc_s *ioc); | 89 | static void bfa_ioc_check_attr_wwns(struct bfa_ioc_s *ioc); |
90 | static void bfa_ioc_event_notify(struct bfa_ioc_s *ioc , | ||
91 | enum bfa_ioc_event_e event); | ||
90 | static void bfa_ioc_disable_comp(struct bfa_ioc_s *ioc); | 92 | static void bfa_ioc_disable_comp(struct bfa_ioc_s *ioc); |
91 | static void bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc); | 93 | static void bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc); |
92 | static void bfa_ioc_debug_save_ftrc(struct bfa_ioc_s *ioc); | 94 | static void bfa_ioc_debug_save_ftrc(struct bfa_ioc_s *ioc); |
@@ -391,6 +393,7 @@ bfa_ioc_sm_op_entry(struct bfa_ioc_s *ioc) | |||
391 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; | 393 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; |
392 | 394 | ||
393 | ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_OK); | 395 | ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_OK); |
396 | bfa_ioc_event_notify(ioc, BFA_IOC_E_ENABLED); | ||
394 | bfa_ioc_hb_monitor(ioc); | 397 | bfa_ioc_hb_monitor(ioc); |
395 | BFA_LOG(KERN_INFO, bfad, bfa_log_level, "IOC enabled\n"); | 398 | BFA_LOG(KERN_INFO, bfad, bfa_log_level, "IOC enabled\n"); |
396 | } | 399 | } |
@@ -1185,23 +1188,28 @@ bfa_iocpf_sm_fail(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
1185 | * BFA IOC private functions | 1188 | * BFA IOC private functions |
1186 | */ | 1189 | */ |
1187 | 1190 | ||
1191 | /* | ||
1192 | * Notify common modules registered for notification. | ||
1193 | */ | ||
1188 | static void | 1194 | static void |
1189 | bfa_ioc_disable_comp(struct bfa_ioc_s *ioc) | 1195 | bfa_ioc_event_notify(struct bfa_ioc_s *ioc, enum bfa_ioc_event_e event) |
1190 | { | 1196 | { |
1191 | struct list_head *qe; | 1197 | struct bfa_ioc_notify_s *notify; |
1192 | struct bfa_ioc_hbfail_notify_s *notify; | 1198 | struct list_head *qe; |
1193 | |||
1194 | ioc->cbfn->disable_cbfn(ioc->bfa); | ||
1195 | 1199 | ||
1196 | /* | 1200 | list_for_each(qe, &ioc->notify_q) { |
1197 | * Notify common modules registered for notification. | 1201 | notify = (struct bfa_ioc_notify_s *)qe; |
1198 | */ | 1202 | notify->cbfn(notify->cbarg, event); |
1199 | list_for_each(qe, &ioc->hb_notify_q) { | ||
1200 | notify = (struct bfa_ioc_hbfail_notify_s *) qe; | ||
1201 | notify->cbfn(notify->cbarg); | ||
1202 | } | 1203 | } |
1203 | } | 1204 | } |
1204 | 1205 | ||
1206 | static void | ||
1207 | bfa_ioc_disable_comp(struct bfa_ioc_s *ioc) | ||
1208 | { | ||
1209 | ioc->cbfn->disable_cbfn(ioc->bfa); | ||
1210 | bfa_ioc_event_notify(ioc, BFA_IOC_E_DISABLED); | ||
1211 | } | ||
1212 | |||
1205 | bfa_boolean_t | 1213 | bfa_boolean_t |
1206 | bfa_ioc_sem_get(void __iomem *sem_reg) | 1214 | bfa_ioc_sem_get(void __iomem *sem_reg) |
1207 | { | 1215 | { |
@@ -1508,7 +1516,7 @@ bfa_ioc_send_enable(struct bfa_ioc_s *ioc) | |||
1508 | 1516 | ||
1509 | bfi_h2i_set(enable_req.mh, BFI_MC_IOC, BFI_IOC_H2I_ENABLE_REQ, | 1517 | bfi_h2i_set(enable_req.mh, BFI_MC_IOC, BFI_IOC_H2I_ENABLE_REQ, |
1510 | bfa_ioc_portid(ioc)); | 1518 | bfa_ioc_portid(ioc)); |
1511 | enable_req.ioc_class = ioc->ioc_mc; | 1519 | enable_req.clscode = cpu_to_be16(ioc->clscode); |
1512 | do_gettimeofday(&tv); | 1520 | do_gettimeofday(&tv); |
1513 | enable_req.tv_sec = be32_to_cpu(tv.tv_sec); | 1521 | enable_req.tv_sec = be32_to_cpu(tv.tv_sec); |
1514 | bfa_ioc_mbox_send(ioc, &enable_req, sizeof(struct bfi_ioc_ctrl_req_s)); | 1522 | bfa_ioc_mbox_send(ioc, &enable_req, sizeof(struct bfi_ioc_ctrl_req_s)); |
@@ -1816,18 +1824,13 @@ bfa_ioc_smem_clr(struct bfa_ioc_s *ioc, u32 soff, u32 sz) | |||
1816 | static void | 1824 | static void |
1817 | bfa_ioc_fail_notify(struct bfa_ioc_s *ioc) | 1825 | bfa_ioc_fail_notify(struct bfa_ioc_s *ioc) |
1818 | { | 1826 | { |
1819 | struct list_head *qe; | ||
1820 | struct bfa_ioc_hbfail_notify_s *notify; | ||
1821 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; | 1827 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; |
1822 | 1828 | ||
1823 | /* | 1829 | /* |
1824 | * Notify driver and common modules registered for notification. | 1830 | * Notify driver and common modules registered for notification. |
1825 | */ | 1831 | */ |
1826 | ioc->cbfn->hbfail_cbfn(ioc->bfa); | 1832 | ioc->cbfn->hbfail_cbfn(ioc->bfa); |
1827 | list_for_each(qe, &ioc->hb_notify_q) { | 1833 | bfa_ioc_event_notify(ioc, BFA_IOC_E_FAILED); |
1828 | notify = (struct bfa_ioc_hbfail_notify_s *) qe; | ||
1829 | notify->cbfn(notify->cbarg); | ||
1830 | } | ||
1831 | 1834 | ||
1832 | bfa_ioc_debug_save_ftrc(ioc); | 1835 | bfa_ioc_debug_save_ftrc(ioc); |
1833 | 1836 | ||
@@ -2011,7 +2014,7 @@ bfa_ioc_attach(struct bfa_ioc_s *ioc, void *bfa, struct bfa_ioc_cbfn_s *cbfn, | |||
2011 | ioc->iocpf.ioc = ioc; | 2014 | ioc->iocpf.ioc = ioc; |
2012 | 2015 | ||
2013 | bfa_ioc_mbox_attach(ioc); | 2016 | bfa_ioc_mbox_attach(ioc); |
2014 | INIT_LIST_HEAD(&ioc->hb_notify_q); | 2017 | INIT_LIST_HEAD(&ioc->notify_q); |
2015 | 2018 | ||
2016 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); | 2019 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); |
2017 | bfa_fsm_send_event(ioc, IOC_E_RESET); | 2020 | bfa_fsm_send_event(ioc, IOC_E_RESET); |
@@ -2033,9 +2036,9 @@ bfa_ioc_detach(struct bfa_ioc_s *ioc) | |||
2033 | */ | 2036 | */ |
2034 | void | 2037 | void |
2035 | bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, | 2038 | bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, |
2036 | enum bfi_mclass mc) | 2039 | enum bfi_pcifn_class clscode) |
2037 | { | 2040 | { |
2038 | ioc->ioc_mc = mc; | 2041 | ioc->clscode = clscode; |
2039 | ioc->pcidev = *pcidev; | 2042 | ioc->pcidev = *pcidev; |
2040 | ioc->ctdev = bfa_asic_id_ct(ioc->pcidev.device_id); | 2043 | ioc->ctdev = bfa_asic_id_ct(ioc->pcidev.device_id); |
2041 | ioc->cna = ioc->ctdev && !ioc->fcmode; | 2044 | ioc->cna = ioc->ctdev && !ioc->fcmode; |
@@ -2318,12 +2321,10 @@ bfa_ioc_get_type(struct bfa_ioc_s *ioc) | |||
2318 | { | 2321 | { |
2319 | if (!ioc->ctdev || ioc->fcmode) | 2322 | if (!ioc->ctdev || ioc->fcmode) |
2320 | return BFA_IOC_TYPE_FC; | 2323 | return BFA_IOC_TYPE_FC; |
2321 | else if (ioc->ioc_mc == BFI_MC_IOCFC) | 2324 | else if (ioc->clscode == BFI_PCIFN_CLASS_FC) |
2322 | return BFA_IOC_TYPE_FCoE; | 2325 | return BFA_IOC_TYPE_FCoE; |
2323 | else if (ioc->ioc_mc == BFI_MC_LL) | ||
2324 | return BFA_IOC_TYPE_LL; | ||
2325 | else { | 2326 | else { |
2326 | WARN_ON(ioc->ioc_mc != BFI_MC_LL); | 2327 | WARN_ON(ioc->clscode != BFI_PCIFN_CLASS_ETH); |
2327 | return BFA_IOC_TYPE_LL; | 2328 | return BFA_IOC_TYPE_LL; |
2328 | } | 2329 | } |
2329 | } | 2330 | } |
@@ -2531,7 +2532,7 @@ bfa_ioc_send_fwsync(struct bfa_ioc_s *ioc) | |||
2531 | 2532 | ||
2532 | bfi_h2i_set(req->mh, BFI_MC_IOC, BFI_IOC_H2I_DBG_SYNC, | 2533 | bfi_h2i_set(req->mh, BFI_MC_IOC, BFI_IOC_H2I_DBG_SYNC, |
2533 | bfa_ioc_portid(ioc)); | 2534 | bfa_ioc_portid(ioc)); |
2534 | req->ioc_class = ioc->ioc_mc; | 2535 | req->clscode = cpu_to_be16(ioc->clscode); |
2535 | bfa_ioc_mbox_queue(ioc, &cmd); | 2536 | bfa_ioc_mbox_queue(ioc, &cmd); |
2536 | } | 2537 | } |
2537 | 2538 | ||
diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h index 62318d24f85e..ff8e21d579df 100644 --- a/drivers/scsi/bfa/bfa_ioc.h +++ b/drivers/scsi/bfa/bfa_ioc.h | |||
@@ -197,18 +197,26 @@ struct bfa_ioc_cbfn_s { | |||
197 | }; | 197 | }; |
198 | 198 | ||
199 | /* | 199 | /* |
200 | * Heartbeat failure notification queue element. | 200 | * IOC event notification mechanism. |
201 | */ | 201 | */ |
202 | struct bfa_ioc_hbfail_notify_s { | 202 | enum bfa_ioc_event_e { |
203 | BFA_IOC_E_ENABLED = 1, | ||
204 | BFA_IOC_E_DISABLED = 2, | ||
205 | BFA_IOC_E_FAILED = 3, | ||
206 | }; | ||
207 | |||
208 | typedef void (*bfa_ioc_notify_cbfn_t)(void *, enum bfa_ioc_event_e); | ||
209 | |||
210 | struct bfa_ioc_notify_s { | ||
203 | struct list_head qe; | 211 | struct list_head qe; |
204 | bfa_ioc_hbfail_cbfn_t cbfn; | 212 | bfa_ioc_notify_cbfn_t cbfn; |
205 | void *cbarg; | 213 | void *cbarg; |
206 | }; | 214 | }; |
207 | 215 | ||
208 | /* | 216 | /* |
209 | * Initialize a heartbeat failure notification structure | 217 | * Initialize a IOC event notification structure |
210 | */ | 218 | */ |
211 | #define bfa_ioc_hbfail_init(__notify, __cbfn, __cbarg) do { \ | 219 | #define bfa_ioc_notify_init(__notify, __cbfn, __cbarg) do { \ |
212 | (__notify)->cbfn = (__cbfn); \ | 220 | (__notify)->cbfn = (__cbfn); \ |
213 | (__notify)->cbarg = (__cbarg); \ | 221 | (__notify)->cbarg = (__cbarg); \ |
214 | } while (0) | 222 | } while (0) |
@@ -229,11 +237,11 @@ struct bfa_ioc_s { | |||
229 | struct bfa_timer_s sem_timer; | 237 | struct bfa_timer_s sem_timer; |
230 | struct bfa_timer_s hb_timer; | 238 | struct bfa_timer_s hb_timer; |
231 | u32 hb_count; | 239 | u32 hb_count; |
232 | struct list_head hb_notify_q; | 240 | struct list_head notify_q; |
233 | void *dbg_fwsave; | 241 | void *dbg_fwsave; |
234 | int dbg_fwsave_len; | 242 | int dbg_fwsave_len; |
235 | bfa_boolean_t dbg_fwsave_once; | 243 | bfa_boolean_t dbg_fwsave_once; |
236 | enum bfi_mclass ioc_mc; | 244 | enum bfi_pcifn_class clscode; |
237 | struct bfa_ioc_regs_s ioc_regs; | 245 | struct bfa_ioc_regs_s ioc_regs; |
238 | struct bfa_trc_mod_s *trcmod; | 246 | struct bfa_trc_mod_s *trcmod; |
239 | struct bfa_ioc_drv_stats_s stats; | 247 | struct bfa_ioc_drv_stats_s stats; |
@@ -334,7 +342,7 @@ void bfa_ioc_attach(struct bfa_ioc_s *ioc, void *bfa, | |||
334 | void bfa_ioc_auto_recover(bfa_boolean_t auto_recover); | 342 | void bfa_ioc_auto_recover(bfa_boolean_t auto_recover); |
335 | void bfa_ioc_detach(struct bfa_ioc_s *ioc); | 343 | void bfa_ioc_detach(struct bfa_ioc_s *ioc); |
336 | void bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, | 344 | void bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, |
337 | enum bfi_mclass mc); | 345 | enum bfi_pcifn_class clscode); |
338 | void bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa); | 346 | void bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa); |
339 | void bfa_ioc_enable(struct bfa_ioc_s *ioc); | 347 | void bfa_ioc_enable(struct bfa_ioc_s *ioc); |
340 | void bfa_ioc_disable(struct bfa_ioc_s *ioc); | 348 | void bfa_ioc_disable(struct bfa_ioc_s *ioc); |
diff --git a/drivers/scsi/bfa/bfa_port.c b/drivers/scsi/bfa/bfa_port.c index 3f8e9d6066ec..5ebdb6297b4c 100644 --- a/drivers/scsi/bfa/bfa_port.c +++ b/drivers/scsi/bfa/bfa_port.c | |||
@@ -387,32 +387,43 @@ bfa_port_clear_stats(struct bfa_port_s *port, bfa_port_stats_cbfn_t cbfn, | |||
387 | } | 387 | } |
388 | 388 | ||
389 | /* | 389 | /* |
390 | * bfa_port_hbfail() | 390 | * bfa_port_notify() |
391 | * | 391 | * |
392 | * Port module IOC event handler | ||
392 | * | 393 | * |
393 | * @param[in] Pointer to the Port module data structure. | 394 | * @param[in] Pointer to the Port module data structure. |
395 | * @param[in] IOC event structure | ||
394 | * | 396 | * |
395 | * @return void | 397 | * @return void |
396 | */ | 398 | */ |
397 | void | 399 | void |
398 | bfa_port_hbfail(void *arg) | 400 | bfa_port_notify(void *arg, enum bfa_ioc_event_e event) |
399 | { | 401 | { |
400 | struct bfa_port_s *port = (struct bfa_port_s *) arg; | 402 | struct bfa_port_s *port = (struct bfa_port_s *) arg; |
401 | 403 | ||
402 | /* Fail any pending get_stats/clear_stats requests */ | 404 | switch (event) { |
403 | if (port->stats_busy) { | 405 | case BFA_IOC_E_DISABLED: |
404 | if (port->stats_cbfn) | 406 | case BFA_IOC_E_FAILED: |
405 | port->stats_cbfn(port->stats_cbarg, BFA_STATUS_FAILED); | 407 | /* Fail any pending get_stats/clear_stats requests */ |
406 | port->stats_cbfn = NULL; | 408 | if (port->stats_busy) { |
407 | port->stats_busy = BFA_FALSE; | 409 | if (port->stats_cbfn) |
408 | } | 410 | port->stats_cbfn(port->stats_cbarg, |
409 | 411 | BFA_STATUS_FAILED); | |
410 | /* Clear any enable/disable is pending */ | 412 | port->stats_cbfn = NULL; |
411 | if (port->endis_pending) { | 413 | port->stats_busy = BFA_FALSE; |
412 | if (port->endis_cbfn) | 414 | } |
413 | port->endis_cbfn(port->endis_cbarg, BFA_STATUS_FAILED); | 415 | |
414 | port->endis_cbfn = NULL; | 416 | /* Clear any enable/disable is pending */ |
415 | port->endis_pending = BFA_FALSE; | 417 | if (port->endis_pending) { |
418 | if (port->endis_cbfn) | ||
419 | port->endis_cbfn(port->endis_cbarg, | ||
420 | BFA_STATUS_FAILED); | ||
421 | port->endis_cbfn = NULL; | ||
422 | port->endis_pending = BFA_FALSE; | ||
423 | } | ||
424 | break; | ||
425 | default: | ||
426 | break; | ||
416 | } | 427 | } |
417 | } | 428 | } |
418 | 429 | ||
@@ -447,8 +458,8 @@ bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, | |||
447 | port->endis_cbfn = NULL; | 458 | port->endis_cbfn = NULL; |
448 | 459 | ||
449 | bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port); | 460 | bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port); |
450 | bfa_ioc_hbfail_init(&port->hbfail, bfa_port_hbfail, port); | 461 | bfa_ioc_notify_init(&port->ioc_notify, bfa_port_notify, port); |
451 | list_add_tail(&port->hbfail.qe, &port->ioc->hb_notify_q); | 462 | list_add_tail(&port->ioc_notify.qe, &port->ioc->notify_q); |
452 | 463 | ||
453 | /* | 464 | /* |
454 | * initialize time stamp for stats reset | 465 | * initialize time stamp for stats reset |
diff --git a/drivers/scsi/bfa/bfa_port.h b/drivers/scsi/bfa/bfa_port.h index c4ee9db6b470..8b5617447dcd 100644 --- a/drivers/scsi/bfa/bfa_port.h +++ b/drivers/scsi/bfa/bfa_port.h | |||
@@ -43,12 +43,12 @@ struct bfa_port_s { | |||
43 | bfa_port_endis_cbfn_t endis_cbfn; | 43 | bfa_port_endis_cbfn_t endis_cbfn; |
44 | void *endis_cbarg; | 44 | void *endis_cbarg; |
45 | bfa_status_t endis_status; | 45 | bfa_status_t endis_status; |
46 | struct bfa_ioc_hbfail_notify_s hbfail; | 46 | struct bfa_ioc_notify_s ioc_notify; |
47 | }; | 47 | }; |
48 | 48 | ||
49 | void bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, | 49 | void bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, |
50 | void *dev, struct bfa_trc_mod_s *trcmod); | 50 | void *dev, struct bfa_trc_mod_s *trcmod); |
51 | void bfa_port_hbfail(void *arg); | 51 | void bfa_port_notify(void *arg, enum bfa_ioc_event_e event); |
52 | 52 | ||
53 | bfa_status_t bfa_port_get_stats(struct bfa_port_s *port, | 53 | bfa_status_t bfa_port_get_stats(struct bfa_port_s *port, |
54 | union bfa_port_stats_u *stats, | 54 | union bfa_port_stats_u *stats, |
diff --git a/drivers/scsi/bfa/bfi.h b/drivers/scsi/bfa/bfi.h index 6ef1ba50ecf9..d57522dd949b 100644 --- a/drivers/scsi/bfa/bfi.h +++ b/drivers/scsi/bfa/bfi.h | |||
@@ -43,13 +43,15 @@ struct bfi_mhdr_s { | |||
43 | u8 msg_id; /* msg opcode with in the class */ | 43 | u8 msg_id; /* msg opcode with in the class */ |
44 | union { | 44 | union { |
45 | struct { | 45 | struct { |
46 | u8 rsvd; | 46 | u8 qid; |
47 | u8 lpu_id; /* msg destination */ | 47 | u8 lpu_id; /* msg destination */ |
48 | } h2i; | 48 | } h2i; |
49 | u16 i2htok; /* token in msgs to host */ | 49 | u16 i2htok; /* token in msgs to host */ |
50 | } mtag; | 50 | } mtag; |
51 | }; | 51 | }; |
52 | 52 | ||
53 | #define bfi_mhdr_2_qid(_mh) (_mh)->mtag.h2i.qid | ||
54 | |||
53 | #define bfi_h2i_set(_mh, _mc, _op, _lpuid) do { \ | 55 | #define bfi_h2i_set(_mh, _mc, _op, _lpuid) do { \ |
54 | (_mh).msg_class = (_mc); \ | 56 | (_mh).msg_class = (_mc); \ |
55 | (_mh).msg_id = (_op); \ | 57 | (_mh).msg_id = (_op); \ |
@@ -157,6 +159,14 @@ struct bfi_mbmsg_s { | |||
157 | }; | 159 | }; |
158 | 160 | ||
159 | /* | 161 | /* |
162 | * Supported PCI function class codes (personality) | ||
163 | */ | ||
164 | enum bfi_pcifn_class { | ||
165 | BFI_PCIFN_CLASS_FC = 0x0c04, | ||
166 | BFI_PCIFN_CLASS_ETH = 0x0200, | ||
167 | }; | ||
168 | |||
169 | /* | ||
160 | * Message Classes | 170 | * Message Classes |
161 | */ | 171 | */ |
162 | enum bfi_mclass { | 172 | enum bfi_mclass { |
@@ -353,8 +363,8 @@ enum { | |||
353 | */ | 363 | */ |
354 | struct bfi_ioc_ctrl_req_s { | 364 | struct bfi_ioc_ctrl_req_s { |
355 | struct bfi_mhdr_s mh; | 365 | struct bfi_mhdr_s mh; |
356 | u8 ioc_class; | 366 | u16 clscode; |
357 | u8 rsvd[3]; | 367 | u16 rsvd; |
358 | u32 tv_sec; | 368 | u32 tv_sec; |
359 | }; | 369 | }; |
360 | #define bfi_ioc_enable_req_t struct bfi_ioc_ctrl_req_s; | 370 | #define bfi_ioc_enable_req_t struct bfi_ioc_ctrl_req_s; |