Lines Matching refs:bp
25 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_flash_update() local
28 if (!BNXT_PF(bp)) { in bnxt_dl_flash_update()
35 rc = bnxt_flash_package_from_fw_obj(bp->dev, params->fw, 0); in bnxt_dl_flash_update()
47 struct bnxt *bp = devlink_health_reporter_priv(reporter); in bnxt_fw_reporter_diagnose() local
51 if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)) in bnxt_fw_reporter_diagnose()
54 val = bnxt_fw_health_readl(bp, BNXT_FW_HEALTH_REG); in bnxt_fw_reporter_diagnose()
74 val = bnxt_fw_health_readl(bp, BNXT_FW_RESET_CNT_REG); in bnxt_fw_reporter_diagnose()
91 struct bnxt *bp = devlink_health_reporter_priv(reporter); in bnxt_fw_reset_recover() local
96 bnxt_fw_reset(bp); in bnxt_fw_reset_recover()
110 struct bnxt *bp = devlink_health_reporter_priv(reporter); in bnxt_fw_fatal_recover() local
117 bp->fw_health->fatal = true; in bnxt_fw_fatal_recover()
120 bnxt_fw_reset(bp); in bnxt_fw_fatal_recover()
122 bnxt_fw_exception(bp); in bnxt_fw_fatal_recover()
133 void bnxt_dl_fw_reporters_create(struct bnxt *bp) in bnxt_dl_fw_reporters_create() argument
135 struct bnxt_fw_health *health = bp->fw_health; in bnxt_dl_fw_reporters_create()
140 if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET) || health->fw_reset_reporter) in bnxt_dl_fw_reporters_create()
144 devlink_health_reporter_create(bp->dl, in bnxt_dl_fw_reporters_create()
146 0, bp); in bnxt_dl_fw_reporters_create()
148 netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n", in bnxt_dl_fw_reporters_create()
151 bp->fw_cap &= ~BNXT_FW_CAP_HOT_RESET; in bnxt_dl_fw_reporters_create()
155 if (!(bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY)) in bnxt_dl_fw_reporters_create()
160 devlink_health_reporter_create(bp->dl, in bnxt_dl_fw_reporters_create()
162 0, bp); in bnxt_dl_fw_reporters_create()
164 netdev_warn(bp->dev, "Failed to create FW health reporter, rc = %ld\n", in bnxt_dl_fw_reporters_create()
167 bp->fw_cap &= ~BNXT_FW_CAP_ERROR_RECOVERY; in bnxt_dl_fw_reporters_create()
176 devlink_health_reporter_create(bp->dl, in bnxt_dl_fw_reporters_create()
178 0, bp); in bnxt_dl_fw_reporters_create()
180 netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n", in bnxt_dl_fw_reporters_create()
183 bp->fw_cap &= ~BNXT_FW_CAP_ERROR_RECOVERY; in bnxt_dl_fw_reporters_create()
187 void bnxt_dl_fw_reporters_destroy(struct bnxt *bp, bool all) in bnxt_dl_fw_reporters_destroy() argument
189 struct bnxt_fw_health *health = bp->fw_health; in bnxt_dl_fw_reporters_destroy()
194 if ((all || !(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) && in bnxt_dl_fw_reporters_destroy()
200 if ((bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY) && !all) in bnxt_dl_fw_reporters_destroy()
214 void bnxt_devlink_health_report(struct bnxt *bp, unsigned long event) in bnxt_devlink_health_report() argument
216 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_devlink_health_report()
222 if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state)) { in bnxt_devlink_health_report()
250 void bnxt_dl_health_status_update(struct bnxt *bp, bool healthy) in bnxt_dl_health_status_update() argument
252 struct bnxt_fw_health *health = bp->fw_health; in bnxt_dl_health_status_update()
270 void bnxt_dl_health_recovery_done(struct bnxt *bp) in bnxt_dl_health_recovery_done() argument
272 struct bnxt_fw_health *hlth = bp->fw_health; in bnxt_dl_health_recovery_done()
355 static int bnxt_hwrm_get_nvm_cfg_ver(struct bnxt *bp, u32 *nvm_cfg_ver) in bnxt_hwrm_get_nvm_cfg_ver() argument
366 rc = hwrm_req_init(bp, req, HWRM_NVM_GET_VARIABLE); in bnxt_hwrm_get_nvm_cfg_ver()
370 data = hwrm_req_dma_slice(bp, req, sizeof(*data), &data_dma_addr); in bnxt_hwrm_get_nvm_cfg_ver()
377 if (!BNXT_CHIP_P5(bp)) { in bnxt_hwrm_get_nvm_cfg_ver()
384 hwrm_req_hold(bp, req); in bnxt_hwrm_get_nvm_cfg_ver()
392 rc = hwrm_req_send_silent(bp, req); in bnxt_hwrm_get_nvm_cfg_ver()
397 if (BNXT_CHIP_P5(bp)) { in bnxt_hwrm_get_nvm_cfg_ver()
406 hwrm_req_drop(bp, req); in bnxt_hwrm_get_nvm_cfg_ver()
410 static int bnxt_dl_info_put(struct bnxt *bp, struct devlink_info_req *req, in bnxt_dl_info_put() argument
417 if ((bp->flags & BNXT_FLAG_CHIP_P5) && in bnxt_dl_info_put()
439 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_info_get() local
452 if (BNXT_PF(bp) && (bp->flags & BNXT_FLAG_DSN_VALID)) { in bnxt_dl_info_get()
454 bp->dsn[7], bp->dsn[6], bp->dsn[5], bp->dsn[4], in bnxt_dl_info_get()
455 bp->dsn[3], bp->dsn[2], bp->dsn[1], bp->dsn[0]); in bnxt_dl_info_get()
461 if (strlen(bp->board_serialno)) { in bnxt_dl_info_get()
462 rc = devlink_info_board_serial_number_put(req, bp->board_serialno); in bnxt_dl_info_get()
467 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_FIXED, in bnxt_dl_info_get()
469 bp->board_partno); in bnxt_dl_info_get()
473 sprintf(buf, "%X", bp->chip_num); in bnxt_dl_info_get()
474 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_FIXED, in bnxt_dl_info_get()
479 ver_resp = &bp->ver_resp; in bnxt_dl_info_get()
481 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_FIXED, in bnxt_dl_info_get()
486 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
488 bp->nvm_cfg_ver); in bnxt_dl_info_get()
494 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
499 if (BNXT_PF(bp) && !bnxt_hwrm_get_nvm_cfg_ver(bp, &ver)) { in bnxt_dl_info_get()
502 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_STORED, in bnxt_dl_info_get()
534 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
539 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
541 bp->hwrm_ver_supp); in bnxt_dl_info_get()
545 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
550 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_RUNNING, in bnxt_dl_info_get()
555 rc = bnxt_hwrm_nvm_get_dev_info(bp, &nvm_dev_info); in bnxt_dl_info_get()
562 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_STORED, in bnxt_dl_info_get()
570 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_STORED, in bnxt_dl_info_get()
578 rc = bnxt_dl_info_put(bp, req, BNXT_VERSION_STORED, in bnxt_dl_info_get()
586 return bnxt_dl_info_put(bp, req, BNXT_VERSION_STORED, in bnxt_dl_info_get()
590 static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, in bnxt_hwrm_nvm_req() argument
601 if (BNXT_VF(bp)) { in bnxt_hwrm_nvm_req()
602 hwrm_req_drop(bp, req); in bnxt_hwrm_nvm_req()
614 hwrm_req_drop(bp, req); in bnxt_hwrm_nvm_req()
619 idx = bp->pf.port_id; in bnxt_hwrm_nvm_req()
621 idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID; in bnxt_hwrm_nvm_req()
623 data = hwrm_req_dma_slice(bp, req, sizeof(*data), &data_dma_addr); in bnxt_hwrm_nvm_req()
626 hwrm_req_drop(bp, req); in bnxt_hwrm_nvm_req()
637 resp = hwrm_req_hold(bp, req); in bnxt_hwrm_nvm_req()
641 rc = hwrm_req_send(bp, msg); in bnxt_hwrm_nvm_req()
643 rc = hwrm_req_send_silent(bp, msg); in bnxt_hwrm_nvm_req()
654 hwrm_req_drop(bp, req); in bnxt_hwrm_nvm_req()
656 netdev_err(bp->dev, "PF does not have admin privileges to modify NVM config\n"); in bnxt_hwrm_nvm_req()
663 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_nvm_param_get() local
667 rc = hwrm_req_init(bp, req, HWRM_NVM_GET_VARIABLE); in bnxt_dl_nvm_param_get()
671 rc = bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_get()
681 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_nvm_param_set() local
685 rc = hwrm_req_init(bp, req, HWRM_NVM_SET_VARIABLE); in bnxt_dl_nvm_param_set()
692 return bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_set()
742 static int bnxt_dl_params_register(struct bnxt *bp) in bnxt_dl_params_register() argument
746 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_register()
749 rc = devlink_params_register(bp->dl, bnxt_dl_params, in bnxt_dl_params_register()
752 netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n", in bnxt_dl_params_register()
756 rc = devlink_port_params_register(&bp->dl_port, bnxt_dl_port_params, in bnxt_dl_params_register()
759 netdev_err(bp->dev, "devlink_port_params_register failed\n"); in bnxt_dl_params_register()
760 devlink_params_unregister(bp->dl, bnxt_dl_params, in bnxt_dl_params_register()
764 devlink_params_publish(bp->dl); in bnxt_dl_params_register()
769 static void bnxt_dl_params_unregister(struct bnxt *bp) in bnxt_dl_params_unregister() argument
771 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_unregister()
774 devlink_params_unregister(bp->dl, bnxt_dl_params, in bnxt_dl_params_unregister()
776 devlink_port_params_unregister(&bp->dl_port, bnxt_dl_port_params, in bnxt_dl_params_unregister()
780 int bnxt_dl_register(struct bnxt *bp) in bnxt_dl_register() argument
788 if (BNXT_PF(bp)) in bnxt_dl_register()
793 dl = devlink_alloc(devlink_ops, sizeof(struct bnxt_dl), &bp->pdev->dev); in bnxt_dl_register()
795 netdev_warn(bp->dev, "devlink_alloc failed\n"); in bnxt_dl_register()
799 bp->dl = dl; in bnxt_dl_register()
801 bp_dl->bp = bp; in bnxt_dl_register()
804 if (pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV) && in bnxt_dl_register()
805 bp->hwrm_spec_code > 0x10803) in bnxt_dl_register()
806 bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY; in bnxt_dl_register()
810 netdev_warn(bp->dev, "devlink_register failed. rc=%d\n", rc); in bnxt_dl_register()
814 if (!BNXT_PF(bp)) in bnxt_dl_register()
818 attrs.phys.port_number = bp->pf.port_id; in bnxt_dl_register()
819 memcpy(attrs.switch_id.id, bp->dsn, sizeof(bp->dsn)); in bnxt_dl_register()
820 attrs.switch_id.id_len = sizeof(bp->dsn); in bnxt_dl_register()
821 devlink_port_attrs_set(&bp->dl_port, &attrs); in bnxt_dl_register()
822 rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); in bnxt_dl_register()
824 netdev_err(bp->dev, "devlink_port_register failed\n"); in bnxt_dl_register()
828 rc = bnxt_dl_params_register(bp); in bnxt_dl_register()
835 devlink_port_unregister(&bp->dl_port); in bnxt_dl_register()
843 void bnxt_dl_unregister(struct bnxt *bp) in bnxt_dl_unregister() argument
845 struct devlink *dl = bp->dl; in bnxt_dl_unregister()
847 if (BNXT_PF(bp)) { in bnxt_dl_unregister()
848 bnxt_dl_params_unregister(bp); in bnxt_dl_unregister()
849 devlink_port_unregister(&bp->dl_port); in bnxt_dl_unregister()