Lines Matching defs:bfa

36 	if ((__itnim)->bfa->fcs)					\
39 bfa_cb_queue((__itnim)->bfa, &(__itnim)->hcb_qe, \
45 if ((__itnim)->bfa->fcs) \
48 bfa_cb_queue((__itnim)->bfa, &(__itnim)->hcb_qe, \
54 if ((__itnim)->bfa->fcs) \
57 bfa_cb_queue((__itnim)->bfa, &(__itnim)->hcb_qe, \
95 bfa_cb_queue((__tskim)->bfa, &(__tskim)->hcb_qe, __cbfn, (__tskim));\
261 struct bfa_s *bfa = fcp->bfa;
263 bfa_trc(bfa, cfg->drvcfg.path_tov);
264 bfa_trc(bfa, cfg->fwcfg.num_rports);
265 bfa_trc(bfa, cfg->fwcfg.num_ioim_reqs);
266 bfa_trc(bfa, cfg->fwcfg.num_tskim_reqs);
269 fcpim->bfa = bfa;
299 bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov)
301 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
309 bfa_fcpim_path_tov_get(struct bfa_s *bfa)
311 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
370 bfa_fcpim_port_iostats(struct bfa_s *bfa,
373 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
412 bfa_fcpim_profile_on(struct bfa_s *bfa, time64_t time)
415 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
431 bfa_fcpim_profile_off(struct bfa_s *bfa)
433 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
442 bfa_fcpim_qdepth_get(struct bfa_s *bfa)
444 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
459 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
460 bfa_trc(itnim->bfa, event);
470 bfa_sm_fault(itnim->bfa, event);
480 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
481 bfa_trc(itnim->bfa, event);
501 bfa_sm_fault(itnim->bfa, event);
511 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
512 bfa_trc(itnim->bfa, event);
538 bfa_sm_fault(itnim->bfa, event);
546 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
547 bfa_trc(itnim->bfa, event);
573 bfa_sm_fault(itnim->bfa, event);
584 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
585 bfa_trc(itnim->bfa, event);
601 bfa_sm_fault(itnim->bfa, event);
611 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
612 bfa_trc(itnim->bfa, event);
643 bfa_sm_fault(itnim->bfa, event);
653 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
654 bfa_trc(itnim->bfa, event);
674 bfa_sm_fault(itnim->bfa, event);
685 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
686 bfa_trc(itnim->bfa, event);
711 bfa_sm_fault(itnim->bfa, event);
722 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
723 bfa_trc(itnim->bfa, event);
739 bfa_sm_fault(itnim->bfa, event);
749 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
750 bfa_trc(itnim->bfa, event);
768 bfa_sm_fault(itnim->bfa, event);
776 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
777 bfa_trc(itnim->bfa, event);
796 bfa_sm_fault(itnim->bfa, event);
806 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
807 bfa_trc(itnim->bfa, event);
828 bfa_sm_fault(itnim->bfa, event);
836 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
837 bfa_trc(itnim->bfa, event);
861 bfa_sm_fault(itnim->bfa, event);
871 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
872 bfa_trc(itnim->bfa, event);
882 bfa_sm_fault(itnim->bfa, event);
890 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
891 bfa_trc(itnim->bfa, event);
906 bfa_sm_fault(itnim->bfa, event);
1057 struct bfa_s *bfa = fcpim->bfa;
1069 itnim->bfa = bfa;
1072 itnim->rport = BFA_RPORT_FROM_TAG(bfa, i);
1106 m = bfa_reqq_next(itnim->bfa, itnim->reqq);
1108 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait);
1113 bfa_fn_lpu(itnim->bfa));
1123 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh);
1135 m = bfa_reqq_next(itnim->bfa, itnim->reqq);
1137 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait);
1142 bfa_fn_lpu(itnim->bfa));
1149 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh);
1241 bfa_timer_start(itnim->bfa, &itnim->timer,
1280 struct bfa_fcpim_s *fcpim = BFA_FCPIM(itnim->bfa);
1304 bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
1306 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
1310 bfa_trc(bfa, m->mhdr.msg_id);
1339 bfa_trc(bfa, m->mhdr.msg_id);
1349 bfa_itnim_create(struct bfa_s *bfa, struct bfa_rport_s *rport, void *ditn)
1351 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
1354 bfa_itn_create(bfa, rport, bfa_itnim_isr);
1416 fcpim = BFA_FCPIM(itnim->bfa);
1424 bfa_io_profile_start_time(itnim->bfa);
1464 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1492 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1503 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1508 bfa_sm_fault(ioim->bfa, event);
1518 bfa_trc(ioim->bfa, ioim->iotag);
1519 bfa_trc(ioim->bfa, event);
1532 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe);
1533 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1540 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe);
1542 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1548 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe);
1550 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1555 bfa_sm_fault(ioim->bfa, event);
1569 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1576 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_comp,
1583 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_comp,
1596 bfa_reqq_wait(ioim->bfa, ioim->reqq,
1610 bfa_reqq_wait(ioim->bfa, ioim->reqq,
1618 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1627 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1636 bfa_sm_fault(ioim->bfa, event);
1666 bfa_reqq_wait(ioim->bfa, ioim->reqq,
1674 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe,
1683 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1688 bfa_sm_fault(ioim->bfa, event);
1698 bfa_trc(ioim->bfa, ioim->iotag);
1699 bfa_trc(ioim->bfa, event);
1710 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1717 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1724 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1737 bfa_reqq_wait(ioim->bfa, ioim->reqq,
1745 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1750 bfa_sm_fault(ioim->bfa, event);
1761 bfa_trc(ioim->bfa, ioim->iotag);
1762 bfa_trc(ioim->bfa, event);
1780 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
1786 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
1792 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
1799 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1811 bfa_sm_fault(ioim->bfa, event);
1821 bfa_trc(ioim->bfa, ioim->iotag);
1822 bfa_trc(ioim->bfa, event);
1834 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1841 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1850 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1855 bfa_sm_fault(ioim->bfa, event);
1865 bfa_trc(ioim->bfa, ioim->iotag);
1866 bfa_trc(ioim->bfa, event);
1885 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1893 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort,
1901 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1906 bfa_sm_fault(ioim->bfa, event);
1916 bfa_trc(ioim->bfa, ioim->iotag);
1917 bfa_trc(ioim->bfa, event);
1936 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
1943 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
1951 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed,
1956 bfa_sm_fault(ioim->bfa, event);
1961 * IO bfa callback is pending.
1980 bfa_sm_fault(ioim->bfa, event);
1985 * IO bfa callback is pending. IO resource cannot be freed.
1990 bfa_trc(ioim->bfa, ioim->iotag);
1991 bfa_trc(ioim->bfa, event);
2013 bfa_sm_fault(ioim->bfa, event);
2023 bfa_trc(ioim->bfa, ioim->iotag);
2024 bfa_trc(ioim->bfa, event);
2040 bfa_sm_fault(ioim->bfa, event);
2050 bfa_ioim_lm_init(struct bfa_s *bfa)
2055 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2058 lunm_list = bfa_get_lun_mask_list(bfa);
2076 bfa_cb_ioim_good_comp(ioim->bfa->bfad, ioim->dio);
2119 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, m->io_status,
2124 bfa_fcpim_lunmask_rp_update(struct bfa_s *bfa, wwn_t lp_wwn, wwn_t rp_wwn,
2130 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2133 lun_list = bfa_get_lun_mask_list(bfa);
2149 bfa_ioim_lm_set_ua(struct bfa_s *bfa)
2154 lunm_list = bfa_get_lun_mask_list(bfa);
2163 bfa_fcpim_lunmask_update(struct bfa_s *bfa, u32 update)
2167 bfa_trc(bfa, bfa_get_lun_mask_status(bfa));
2168 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2171 if (bfa_get_lun_mask_status(bfa) == update)
2174 lun_mask = bfa_get_lun_mask(bfa);
2177 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_ENABLED)
2178 bfa_ioim_lm_set_ua(bfa);
2180 return bfa_dconf_update(bfa);
2184 bfa_fcpim_lunmask_clear(struct bfa_s *bfa)
2189 bfa_trc(bfa, bfa_get_lun_mask_status(bfa));
2190 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2193 lunm_list = bfa_get_lun_mask_list(bfa);
2197 bfa_rport_unset_lunmask(bfa,
2198 BFA_RPORT_FROM_TAG(bfa, lunm_list[i].rp_tag));
2203 return bfa_dconf_update(bfa);
2207 bfa_fcpim_lunmask_query(struct bfa_s *bfa, void *buf)
2211 bfa_trc(bfa, bfa_get_lun_mask_status(bfa));
2212 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2215 lun_mask = bfa_get_lun_mask(bfa);
2221 bfa_fcpim_lunmask_add(struct bfa_s *bfa, u16 vf_id, wwn_t *pwwn,
2230 bfa_trc(bfa, bfa_get_lun_mask_status(bfa));
2231 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2234 port = bfa_fcs_lookup_port(&((struct bfad_s *)bfa->bfad)->bfa_fcs,
2243 lunm_list = bfa_get_lun_mask_list(bfa);
2259 lunm_list[free_index].lp_tag = bfa_lps_get_tag_from_pid(bfa,
2279 return bfa_dconf_update(bfa);
2283 bfa_fcpim_lunmask_delete(struct bfa_s *bfa, u16 vf_id, wwn_t *pwwn,
2291 if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_MINCFG)
2294 bfa_trc(bfa, bfa_get_lun_mask_status(bfa));
2295 bfa_trc(bfa, *pwwn);
2296 bfa_trc(bfa, rpwwn);
2297 bfa_trc(bfa, scsilun_to_int((struct scsi_lun *)&lun));
2301 &((struct bfad_s *)bfa->bfad)->bfa_fcs,
2307 lunm_list = bfa_get_lun_mask_list(bfa);
2321 return bfa_dconf_update(bfa);
2345 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, BFI_IOIM_STS_ABORTED,
2360 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, BFI_IOIM_STS_PATHTOV,
2374 bfa_cb_ioim_abort(ioim->bfa->bfad, ioim->dio);
2410 m = bfa_reqq_next(ioim->bfa, ioim->reqq);
2413 bfa_reqq_wait(ioim->bfa, ioim->reqq,
2512 bfi_h2i_set(m->mh, BFI_MC_IOIM_READ, 0, bfa_fn_lpu(ioim->bfa));
2517 bfi_h2i_set(m->mh, BFI_MC_IOIM_WRITE, 0, bfa_fn_lpu(ioim->bfa));
2526 bfi_h2i_set(m->mh, BFI_MC_IOIM_IO, 0, bfa_fn_lpu(ioim->bfa));
2530 bfi_h2i_set(m->mh, BFI_MC_IOIM_IO, 0, bfa_fn_lpu(ioim->bfa));
2535 bfa_reqq_produce(ioim->bfa, ioim->reqq, m->mh);
2557 if (bfa_sgpg_malloc(ioim->bfa, &ioim->sgpg_q, nsgpgs)
2559 bfa_sgpg_wait(ioim->bfa, &ioim->iosp->sgpg_wqe, nsgpgs);
2581 m = bfa_reqq_next(ioim->bfa, ioim->reqq);
2593 bfi_h2i_set(m->mh, BFI_MC_IOIM, msgop, bfa_fn_lpu(ioim->bfa));
2600 bfa_reqq_produce(ioim->bfa, ioim->reqq, m->mh);
2669 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim);
2715 ioim->bfa = fcpim->bfa;
2728 bfa_ioim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
2730 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
2741 bfa_trc(ioim->bfa, ioim->iotag);
2742 bfa_trc(ioim->bfa, rsp->io_status);
2743 bfa_trc(ioim->bfa, rsp->reuse_io_tag);
2789 bfa_trc(ioim->bfa, rsp->abort_tag);
2790 bfa_trc(ioim->bfa, ioim->abort_tag);
2813 bfa_ioim_good_comp_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
2815 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
2836 bfa_trc(ioim->bfa, ioim->iotag);
2846 bfa_trc(ioim->bfa, ioim->iotag);
2859 bfa_trc(ioim->bfa, ioim->iotag);
2870 bfa_trc(ioim->bfa, ioim->iotag);
2879 bfa_ioim_alloc(struct bfa_s *bfa, struct bfad_ioim_s *dio,
2882 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
2917 bfa_sgpg_mfree(ioim->bfa, &ioim->sgpg_q, ioim->nsgpgs);
2944 ioim->reqq = bfa_fcpim_ioredirect_enabled(ioim->bfa) ?
2957 bfa_trc(ioim->bfa, ioim->iotag);
2978 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
2999 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq,
3005 bfa_sm_fault(tskim->bfa, event);
3016 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3029 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq,
3041 bfa_sm_fault(tskim->bfa, event);
3052 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3074 bfa_sm_fault(tskim->bfa, event);
3081 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3103 bfa_sm_fault(tskim->bfa, event);
3113 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3138 bfa_sm_fault(tskim->bfa, event);
3150 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3169 bfa_sm_fault(tskim->bfa, event);
3179 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event);
3195 bfa_sm_fault(tskim->bfa, event);
3210 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, tskim->tsk_status);
3224 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk,
3334 m = bfa_reqq_next(tskim->bfa, itnim->reqq);
3342 bfa_fn_lpu(tskim->bfa));
3353 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh);
3369 m = bfa_reqq_next(tskim->bfa, itnim->reqq);
3377 bfa_fn_lpu(tskim->bfa));
3384 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh);
3459 tskim->bfa = fcpim->bfa;
3473 bfa_tskim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
3475 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
3502 bfa_tskim_alloc(struct bfa_s *bfa, struct bfad_tskim_s *dtsk)
3504 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
3551 bfa_tskim_res_recfg(struct bfa_s *bfa, u16 num_tskim_fw)
3553 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
3565 struct bfa_s *bfa)
3567 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3568 struct bfa_mem_kva_s *fcp_kva = BFA_MEM_FCP_KVA(bfa);
3622 bfa_fcp_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg,
3625 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3633 fcp->bfa = bfa;
3649 bfa_iocfc_set_snsbase(bfa, idx, fcp->snsbase[idx].pa);
3665 bfa_fcp_iocdisable(struct bfa_s *bfa)
3667 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3673 bfa_fcp_res_recfg(struct bfa_s *bfa, u16 num_ioim_fw, u16 max_ioim_fw)
3675 struct bfa_fcp_mod_s *mod = BFA_FCP_MOD(bfa);
3689 bfa_trc(bfa, mod->num_ioim_reqs);
3690 bfa_trc(bfa, num_ioim_fw);
3699 bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
3700 void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m))
3702 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3713 bfa_itn_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
3715 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3723 itn->isr(bfa, m);
3762 bfa_fcpim_get_throttle_cfg(struct bfa_s *bfa, u16 drv_cfg_param)
3765 struct bfa_fcp_mod_s *fcp = BFA_FCP_MOD(bfa);
3775 tmp = bfa_dconf_read_data_valid(bfa) ? bfa_fcpim_read_throttle(bfa) : 0;
3783 bfa_fcpim_write_throttle(struct bfa_s *bfa, u16 value)
3785 if (!bfa_dconf_get_min_cfg(bfa)) {
3786 BFA_DCONF_MOD(bfa)->dconf->throttle_cfg.value = value;
3787 BFA_DCONF_MOD(bfa)->dconf->throttle_cfg.is_valid = 1;
3795 bfa_fcpim_read_throttle(struct bfa_s *bfa)
3798 &(BFA_DCONF_MOD(bfa)->dconf->throttle_cfg);
3800 return ((!bfa_dconf_get_min_cfg(bfa)) ?
3805 bfa_fcpim_throttle_set(struct bfa_s *bfa, u16 value)
3808 if ((bfa_dconf_get_min_cfg(bfa) == BFA_TRUE) ||
3809 (!bfa_dconf_read_data_valid(bfa)))
3812 bfa_fcpim_write_throttle(bfa, value);
3814 return bfa_dconf_update(bfa);
3818 bfa_fcpim_throttle_get(struct bfa_s *bfa, void *buf)
3820 struct bfa_fcpim_s *fcpim = BFA_FCPIM(bfa);
3823 if ((bfa_dconf_get_min_cfg(bfa) == BFA_TRUE) ||
3824 (!bfa_dconf_read_data_valid(bfa)))
3830 throttle.cfg_value = bfa_fcpim_read_throttle(bfa);