H A D | bfa_ioc.c | 3295 struct bfa_ablk_s *ablk = (struct bfa_ablk_s *)cbarg; bfa_ablk_isr() local 3300 bfa_trc(ablk->ioc, msg->mh.msg_id); bfa_ablk_isr() 3305 memcpy(ablk->cfg, ablk->dma_addr.kva, bfa_ablk_isr() 3307 bfa_ablk_config_swap(ablk->cfg); bfa_ablk_isr() 3308 ablk->cfg = NULL; bfa_ablk_isr() 3315 ablk->ioc->port_mode_cfg = rsp->port_mode; bfa_ablk_isr() 3325 *(ablk->pcifn) = rsp->pcifn; bfa_ablk_isr() 3326 ablk->pcifn = NULL; bfa_ablk_isr() 3333 ablk->busy = BFA_FALSE; bfa_ablk_isr() 3334 if (ablk->cbfn) { bfa_ablk_isr() 3335 cbfn = ablk->cbfn; bfa_ablk_isr() 3336 ablk->cbfn = NULL; bfa_ablk_isr() 3337 cbfn(ablk->cbarg, rsp->status); bfa_ablk_isr() 3344 struct bfa_ablk_s *ablk = (struct bfa_ablk_s *)cbarg; bfa_ablk_notify() local 3346 bfa_trc(ablk->ioc, event); bfa_ablk_notify() 3350 WARN_ON(ablk->busy != BFA_FALSE); bfa_ablk_notify() 3356 ablk->pcifn = NULL; bfa_ablk_notify() 3357 if (ablk->busy) { bfa_ablk_notify() 3358 if (ablk->cbfn) bfa_ablk_notify() 3359 ablk->cbfn(ablk->cbarg, BFA_STATUS_FAILED); bfa_ablk_notify() 3360 ablk->cbfn = NULL; bfa_ablk_notify() 3361 ablk->busy = BFA_FALSE; bfa_ablk_notify() 3378 bfa_ablk_memclaim(struct bfa_ablk_s *ablk, u8 *dma_kva, u64 dma_pa) bfa_ablk_memclaim() argument 3380 ablk->dma_addr.kva = dma_kva; bfa_ablk_memclaim() 3381 ablk->dma_addr.pa = dma_pa; bfa_ablk_memclaim() 3385 bfa_ablk_attach(struct bfa_ablk_s *ablk, struct bfa_ioc_s *ioc) bfa_ablk_attach() argument 3387 ablk->ioc = ioc; bfa_ablk_attach() 3389 bfa_ioc_mbox_regisr(ablk->ioc, BFI_MC_ABLK, bfa_ablk_isr, ablk); bfa_ablk_attach() 3390 bfa_q_qe_init(&ablk->ioc_notify); bfa_ablk_attach() 3391 bfa_ioc_notify_init(&ablk->ioc_notify, bfa_ablk_notify, ablk); bfa_ablk_attach() 3392 list_add_tail(&ablk->ioc_notify.qe, &ablk->ioc->notify_q); bfa_ablk_attach() 3396 bfa_ablk_query(struct bfa_ablk_s *ablk, struct bfa_ablk_cfg_s *ablk_cfg, bfa_ablk_query() argument 3403 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_query() 3404 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_query() 3408 if (ablk->busy) { bfa_ablk_query() 3409 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_query() 3413 ablk->cfg = ablk_cfg; bfa_ablk_query() 3414 ablk->cbfn = cbfn; bfa_ablk_query() 3415 ablk->cbarg = cbarg; bfa_ablk_query() 3416 ablk->busy = BFA_TRUE; bfa_ablk_query() 3418 m = (struct bfi_ablk_h2i_query_s *)ablk->mb.msg; bfa_ablk_query() 3420 bfa_ioc_portid(ablk->ioc)); bfa_ablk_query() 3421 bfa_dma_be_addr_set(m->addr, ablk->dma_addr.pa); bfa_ablk_query() 3422 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_query() 3428 bfa_ablk_pf_create(struct bfa_ablk_s *ablk, u16 *pcifn, bfa_ablk_pf_create() argument 3435 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_pf_create() 3436 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_pf_create() 3440 if (ablk->busy) { bfa_ablk_pf_create() 3441 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_pf_create() 3445 ablk->pcifn = pcifn; bfa_ablk_pf_create() 3446 ablk->cbfn = cbfn; bfa_ablk_pf_create() 3447 ablk->cbarg = cbarg; bfa_ablk_pf_create() 3448 ablk->busy = BFA_TRUE; bfa_ablk_pf_create() 3450 m = (struct bfi_ablk_h2i_pf_req_s *)ablk->mb.msg; bfa_ablk_pf_create() 3452 bfa_ioc_portid(ablk->ioc)); bfa_ablk_pf_create() 3457 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_pf_create() 3463 bfa_ablk_pf_delete(struct bfa_ablk_s *ablk, int pcifn, bfa_ablk_pf_delete() argument 3468 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_pf_delete() 3469 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_pf_delete() 3473 if (ablk->busy) { bfa_ablk_pf_delete() 3474 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_pf_delete() 3478 ablk->cbfn = cbfn; bfa_ablk_pf_delete() 3479 ablk->cbarg = cbarg; bfa_ablk_pf_delete() 3480 ablk->busy = BFA_TRUE; bfa_ablk_pf_delete() 3482 m = (struct bfi_ablk_h2i_pf_req_s *)ablk->mb.msg; bfa_ablk_pf_delete() 3484 bfa_ioc_portid(ablk->ioc)); bfa_ablk_pf_delete() 3486 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_pf_delete() 3492 bfa_ablk_adapter_config(struct bfa_ablk_s *ablk, enum bfa_mode_s mode, bfa_ablk_adapter_config() argument 3497 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_adapter_config() 3498 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_adapter_config() 3502 if (ablk->busy) { bfa_ablk_adapter_config() 3503 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_adapter_config() 3507 ablk->cbfn = cbfn; bfa_ablk_adapter_config() 3508 ablk->cbarg = cbarg; bfa_ablk_adapter_config() 3509 ablk->busy = BFA_TRUE; bfa_ablk_adapter_config() 3511 m = (struct bfi_ablk_h2i_cfg_req_s *)ablk->mb.msg; bfa_ablk_adapter_config() 3513 bfa_ioc_portid(ablk->ioc)); bfa_ablk_adapter_config() 3517 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_adapter_config() 3523 bfa_ablk_port_config(struct bfa_ablk_s *ablk, int port, enum bfa_mode_s mode, bfa_ablk_port_config() argument 3528 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_port_config() 3529 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_port_config() 3533 if (ablk->busy) { bfa_ablk_port_config() 3534 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_port_config() 3538 ablk->cbfn = cbfn; bfa_ablk_port_config() 3539 ablk->cbarg = cbarg; bfa_ablk_port_config() 3540 ablk->busy = BFA_TRUE; bfa_ablk_port_config() 3542 m = (struct bfi_ablk_h2i_cfg_req_s *)ablk->mb.msg; bfa_ablk_port_config() 3544 bfa_ioc_portid(ablk->ioc)); bfa_ablk_port_config() 3549 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_port_config() 3555 bfa_ablk_pf_update(struct bfa_ablk_s *ablk, int pcifn, u16 bw_min, bfa_ablk_pf_update() argument 3560 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_pf_update() 3561 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_pf_update() 3565 if (ablk->busy) { bfa_ablk_pf_update() 3566 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_pf_update() 3570 ablk->cbfn = cbfn; bfa_ablk_pf_update() 3571 ablk->cbarg = cbarg; bfa_ablk_pf_update() 3572 ablk->busy = BFA_TRUE; bfa_ablk_pf_update() 3574 m = (struct bfi_ablk_h2i_pf_req_s *)ablk->mb.msg; bfa_ablk_pf_update() 3576 bfa_ioc_portid(ablk->ioc)); bfa_ablk_pf_update() 3580 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_pf_update() 3586 bfa_ablk_optrom_en(struct bfa_ablk_s *ablk, bfa_ablk_cbfn_t cbfn, void *cbarg) bfa_ablk_optrom_en() argument 3590 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_optrom_en() 3591 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_optrom_en() 3595 if (ablk->busy) { bfa_ablk_optrom_en() 3596 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_optrom_en() 3600 ablk->cbfn = cbfn; bfa_ablk_optrom_en() 3601 ablk->cbarg = cbarg; bfa_ablk_optrom_en() 3602 ablk->busy = BFA_TRUE; bfa_ablk_optrom_en() 3604 m = (struct bfi_ablk_h2i_optrom_s *)ablk->mb.msg; bfa_ablk_optrom_en() 3606 bfa_ioc_portid(ablk->ioc)); bfa_ablk_optrom_en() 3607 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_optrom_en() 3613 bfa_ablk_optrom_dis(struct bfa_ablk_s *ablk, bfa_ablk_cbfn_t cbfn, void *cbarg) bfa_ablk_optrom_dis() argument 3617 if (!bfa_ioc_is_operational(ablk->ioc)) { bfa_ablk_optrom_dis() 3618 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); bfa_ablk_optrom_dis() 3622 if (ablk->busy) { bfa_ablk_optrom_dis() 3623 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); bfa_ablk_optrom_dis() 3627 ablk->cbfn = cbfn; bfa_ablk_optrom_dis() 3628 ablk->cbarg = cbarg; bfa_ablk_optrom_dis() 3629 ablk->busy = BFA_TRUE; bfa_ablk_optrom_dis() 3631 m = (struct bfi_ablk_h2i_optrom_s *)ablk->mb.msg; bfa_ablk_optrom_dis() 3633 bfa_ioc_portid(ablk->ioc)); bfa_ablk_optrom_dis() 3634 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); bfa_ablk_optrom_dis()
|