Lines Matching +full:software +full:- +full:dl
1 /* Broadcom NetXtreme-C/E network driver.
5 * This program is free software; you can redistribute it and/or modify
7 * the Free Software Foundation.
27 if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state) || in __bnxt_fw_recover()
28 test_bit(BNXT_STATE_FW_NON_FATAL_COND, &bp->state)) in __bnxt_fw_recover()
35 bnxt_dl_flash_update(struct devlink *dl, in bnxt_dl_flash_update() argument
39 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_flash_update()
45 return -EPERM; in bnxt_dl_flash_update()
48 devlink_flash_update_status_notify(dl, "Preparing to flash", NULL, 0, 0); in bnxt_dl_flash_update()
49 rc = bnxt_flash_package_from_fw_obj(bp->dev, params->fw, 0, extack); in bnxt_dl_flash_update()
51 devlink_flash_update_status_notify(dl, "Flashing done", NULL, 0, 0); in bnxt_dl_flash_update()
53 devlink_flash_update_status_notify(dl, "Flashing failed", NULL, 0, 0); in bnxt_dl_flash_update()
62 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_hwrm_remote_dev_reset_set()
63 return -EOPNOTSUPP; in bnxt_hwrm_remote_dev_reset_set()
69 req->fid = cpu_to_le16(0xffff); in bnxt_hwrm_remote_dev_reset_set()
70 req->enables = cpu_to_le32(FUNC_CFG_REQ_ENABLES_HOT_RESET_IF_SUPPORT); in bnxt_hwrm_remote_dev_reset_set()
72 req->flags = cpu_to_le32(FUNC_CFG_REQ_FLAGS_HOT_RESET_IF_EN_DIS); in bnxt_hwrm_remote_dev_reset_set()
105 struct bnxt_fw_health *h = bp->fw_health; in bnxt_fw_diagnose()
108 if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)) { in bnxt_fw_diagnose()
113 if (!h->status_reliable) { in bnxt_fw_diagnose()
118 mutex_lock(&h->lock); in bnxt_fw_diagnose()
122 } else if (h->severity || fw_status != BNXT_FW_STATUS_HEALTHY) { in bnxt_fw_diagnose()
123 if (!h->severity) { in bnxt_fw_diagnose()
124 h->severity = SEVERITY_FATAL; in bnxt_fw_diagnose()
125 h->remedy = REMEDY_POWER_CYCLE_DEVICE; in bnxt_fw_diagnose()
126 h->diagnoses++; in bnxt_fw_diagnose()
127 devlink_health_report(h->fw_reporter, in bnxt_fw_diagnose()
137 bnxt_health_severity_str(h->severity)); in bnxt_fw_diagnose()
139 if (h->severity) { in bnxt_fw_diagnose()
141 bnxt_health_remedy_str(h->remedy)); in bnxt_fw_diagnose()
142 if (h->remedy == REMEDY_DEVLINK_RECOVER) in bnxt_fw_diagnose()
147 mutex_unlock(&h->lock); in bnxt_fw_diagnose()
148 if (!h->resets_reliable) in bnxt_fw_diagnose()
153 devlink_fmsg_u32_pair_put(fmsg, "Arrests", h->arrests); in bnxt_fw_diagnose()
154 devlink_fmsg_u32_pair_put(fmsg, "Survivals", h->survivals); in bnxt_fw_diagnose()
155 devlink_fmsg_u32_pair_put(fmsg, "Discoveries", h->discoveries); in bnxt_fw_diagnose()
156 devlink_fmsg_u32_pair_put(fmsg, "Fatalities", h->fatalities); in bnxt_fw_diagnose()
157 devlink_fmsg_u32_pair_put(fmsg, "Diagnoses", h->diagnoses); in bnxt_fw_diagnose()
172 return -EOPNOTSUPP; in bnxt_fw_dump()
176 return -EIO; in bnxt_fw_dump()
180 return -ENOMEM; in bnxt_fw_dump()
200 if (bp->fw_health->severity == SEVERITY_FATAL) in bnxt_fw_recover()
201 return -ENODEV; in bnxt_fw_recover()
203 set_bit(BNXT_STATE_RECOVER, &bp->state); in bnxt_fw_recover()
206 return -EINPROGRESS; in bnxt_fw_recover()
222 reporter = devlink_health_reporter_create(bp->dl, ops, 0, bp); in __bnxt_dl_reporter_create()
224 netdev_warn(bp->dev, "Failed to create %s health reporter, rc = %ld\n", in __bnxt_dl_reporter_create()
225 ops->name, PTR_ERR(reporter)); in __bnxt_dl_reporter_create()
234 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_fw_reporters_create()
236 if (fw_health && !fw_health->fw_reporter) in bnxt_dl_fw_reporters_create()
237 fw_health->fw_reporter = __bnxt_dl_reporter_create(bp, &bnxt_dl_fw_reporter_ops); in bnxt_dl_fw_reporters_create()
242 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_fw_reporters_destroy()
244 if (fw_health && fw_health->fw_reporter) { in bnxt_dl_fw_reporters_destroy()
245 devlink_health_reporter_destroy(fw_health->fw_reporter); in bnxt_dl_fw_reporters_destroy()
246 fw_health->fw_reporter = NULL; in bnxt_dl_fw_reporters_destroy()
252 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_devlink_health_fw_report()
258 if (!fw_health->fw_reporter) { in bnxt_devlink_health_fw_report()
263 mutex_lock(&fw_health->lock); in bnxt_devlink_health_fw_report()
264 fw_health->severity = SEVERITY_RECOVERABLE; in bnxt_devlink_health_fw_report()
265 fw_health->remedy = REMEDY_DEVLINK_RECOVER; in bnxt_devlink_health_fw_report()
266 mutex_unlock(&fw_health->lock); in bnxt_devlink_health_fw_report()
267 rc = devlink_health_report(fw_health->fw_reporter, "FW error reported", in bnxt_devlink_health_fw_report()
269 if (rc == -ECANCELED) in bnxt_devlink_health_fw_report()
275 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_health_fw_status_update()
278 mutex_lock(&fw_health->lock); in bnxt_dl_health_fw_status_update()
280 fw_health->severity = SEVERITY_NORMAL; in bnxt_dl_health_fw_status_update()
283 fw_health->severity = SEVERITY_FATAL; in bnxt_dl_health_fw_status_update()
284 fw_health->remedy = REMEDY_POWER_CYCLE_DEVICE; in bnxt_dl_health_fw_status_update()
287 mutex_unlock(&fw_health->lock); in bnxt_dl_health_fw_status_update()
288 devlink_health_reporter_state_update(fw_health->fw_reporter, state); in bnxt_dl_health_fw_status_update()
293 struct bnxt_dl *dl = devlink_priv(bp->dl); in bnxt_dl_health_fw_recovery_done() local
295 devlink_health_reporter_recovery_done(bp->fw_health->fw_reporter); in bnxt_dl_health_fw_recovery_done()
296 bnxt_hwrm_remote_dev_reset_set(bp, dl->remote_reset); in bnxt_dl_health_fw_recovery_done()
299 static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
306 int err = ((struct hwrm_err_output *)resp)->cmd_err; in bnxt_dl_livepatch_report_err()
310 netdev_err(bp->dev, "Illegal live patch opcode"); in bnxt_dl_livepatch_report_err()
336 netdev_err(bp->dev, "Unexpected live patch error: %d\n", err); in bnxt_dl_livepatch_report_err()
365 if (~bp->fw_cap & BNXT_FW_CAP_LIVEPATCH) { in bnxt_dl_livepatch_activate()
367 return -EOPNOTSUPP; in bnxt_dl_livepatch_activate()
380 patch_req->loadtype = FW_LIVEPATCH_REQ_LOADTYPE_NVM_INSTALL; in bnxt_dl_livepatch_activate()
384 query_req->fw_target = target; in bnxt_dl_livepatch_activate()
391 flags = le16_to_cpu(query_resp->status_flags); in bnxt_dl_livepatch_activate()
403 patch_req->opcode = FW_LIVEPATCH_REQ_OPCODE_ACTIVATE; in bnxt_dl_livepatch_activate()
405 patch_req->opcode = FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE; in bnxt_dl_livepatch_activate()
407 patch_req->fw_target = target; in bnxt_dl_livepatch_activate()
419 rc = -EEXIST; in bnxt_dl_livepatch_activate()
422 rc = -ENOENT; in bnxt_dl_livepatch_activate()
430 static int bnxt_dl_reload_down(struct devlink *dl, bool netns_change, in bnxt_dl_reload_down() argument
435 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_reload_down()
447 return -EOPNOTSUPP; in bnxt_dl_reload_down()
449 if (bp->dev->reg_state == NETREG_UNREGISTERED) { in bnxt_dl_reload_down()
452 return -ENODEV; in bnxt_dl_reload_down()
454 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
460 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
461 dev_close(bp->dev); in bnxt_dl_reload_down()
472 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET) { in bnxt_dl_reload_down()
474 return -EOPNOTSUPP; in bnxt_dl_reload_down()
479 return -EPERM; in bnxt_dl_reload_down()
482 if (bp->dev->reg_state == NETREG_UNREGISTERED) { in bnxt_dl_reload_down()
484 return -ENODEV; in bnxt_dl_reload_down()
486 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
487 set_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_down()
488 rc = bnxt_hwrm_firmware_reset(bp->dev, in bnxt_dl_reload_down()
495 clear_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_down()
501 rc = -EOPNOTSUPP; in bnxt_dl_reload_down()
507 static int bnxt_dl_reload_up(struct devlink *dl, enum devlink_reload_action action, in bnxt_dl_reload_up() argument
511 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_reload_up()
519 if (netif_running(bp->dev)) in bnxt_dl_reload_up()
533 if (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY) in bnxt_dl_reload_up()
534 timeout = start + bp->fw_health->normal_func_wait_dsecs * HZ / 10; in bnxt_dl_reload_up()
535 if (!netif_running(bp->dev)) in bnxt_dl_reload_up()
539 while (test_bit(BNXT_STATE_FW_ACTIVATE, &bp->state)) { in bnxt_dl_reload_up()
542 rc = -ETIMEDOUT; in bnxt_dl_reload_up()
545 if (test_bit(BNXT_STATE_ABORT_ERR, &bp->state)) { in bnxt_dl_reload_up()
547 rc = -ENODEV; in bnxt_dl_reload_up()
555 clear_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_up()
559 return -EOPNOTSUPP; in bnxt_dl_reload_up()
564 if (netif_running(bp->dev)) { in bnxt_dl_reload_up()
565 mutex_lock(&bp->link_lock); in bnxt_dl_reload_up()
567 mutex_unlock(&bp->link_lock); in bnxt_dl_reload_up()
570 } else if (netif_running(bp->dev)) { in bnxt_dl_reload_up()
571 dev_close(bp->dev); in bnxt_dl_reload_up()
586 if (bnxt_find_nvram_item(bp->dev, BNX_DIR_TYPE_VPD, in bnxt_nvm_test()
599 if (bnxt_get_nvram_item(bp->dev, index, 0, datalen, buf)) { in bnxt_nvm_test()
604 if (bnxt_flash_nvram(bp->dev, BNX_DIR_TYPE_VPD, BNX_DIR_ORDINAL_FIRST, in bnxt_nvm_test()
617 static bool bnxt_dl_selftest_check(struct devlink *dl, unsigned int id, in bnxt_dl_selftest_check() argument
623 static enum devlink_selftest_status bnxt_dl_selftest_run(struct devlink *dl, in bnxt_dl_selftest_run() argument
627 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_selftest_run()
685 dst->val8 = src->vbool; in bnxt_copy_to_nvm_data()
689 val32 = src->vu32; in bnxt_copy_to_nvm_data()
691 val32 = (u32)src->vu16; in bnxt_copy_to_nvm_data()
693 val32 = (u32)src->vu8; in bnxt_copy_to_nvm_data()
694 dst->val32 = cpu_to_le32(val32); in bnxt_copy_to_nvm_data()
704 dst->vbool = src->val8; in bnxt_copy_from_nvm_data()
707 val32 = le32_to_cpu(src->val32); in bnxt_copy_from_nvm_data()
709 dst->vu32 = val32; in bnxt_copy_from_nvm_data()
711 dst->vu16 = (u16)val32; in bnxt_copy_from_nvm_data()
713 dst->vu8 = (u8)val32; in bnxt_copy_from_nvm_data()
733 rc = -ENOMEM; in bnxt_hwrm_get_nvm_cfg_ver()
746 req->dest_data_addr = cpu_to_le64(data_dma_addr); in bnxt_hwrm_get_nvm_cfg_ver()
747 req->data_len = cpu_to_le16(bits); in bnxt_hwrm_get_nvm_cfg_ver()
748 req->option_num = cpu_to_le16(NVM_OFF_NVM_CFG_VER); in bnxt_hwrm_get_nvm_cfg_ver()
749 req->dimensions = cpu_to_le16(dim); in bnxt_hwrm_get_nvm_cfg_ver()
752 req->index_0 = cpu_to_le16(i--); in bnxt_hwrm_get_nvm_cfg_ver()
778 if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) && in bnxt_dl_info_put()
806 if (~bp->fw_cap & BNXT_FW_CAP_LIVEPATCH) in bnxt_dl_livepatch_info_put()
814 query->fw_target = FW_LIVEPATCH_QUERY_REQ_FW_TARGET_SECURE_FW; in bnxt_dl_livepatch_info_put()
816 query->fw_target = FW_LIVEPATCH_QUERY_REQ_FW_TARGET_COMMON_FW; in bnxt_dl_livepatch_info_put()
825 flags = le16_to_cpu(resp->status_flags); in bnxt_dl_livepatch_info_put()
827 resp->active_ver[sizeof(resp->active_ver) - 1] = '\0'; in bnxt_dl_livepatch_info_put()
828 rc = devlink_info_version_running_put(req, key, resp->active_ver); in bnxt_dl_livepatch_info_put()
834 resp->install_ver[sizeof(resp->install_ver) - 1] = '\0'; in bnxt_dl_livepatch_info_put()
835 rc = devlink_info_version_stored_put(req, key, resp->install_ver); in bnxt_dl_livepatch_info_put()
847 static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req, in bnxt_dl_info_get() argument
851 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_info_get()
860 if (BNXT_PF(bp) && (bp->flags & BNXT_FLAG_DSN_VALID)) { in bnxt_dl_info_get()
861 sprintf(buf, "%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X", in bnxt_dl_info_get()
862 bp->dsn[7], bp->dsn[6], bp->dsn[5], bp->dsn[4], in bnxt_dl_info_get()
863 bp->dsn[3], bp->dsn[2], bp->dsn[1], bp->dsn[0]); in bnxt_dl_info_get()
869 if (strlen(bp->board_serialno)) { in bnxt_dl_info_get()
870 rc = devlink_info_board_serial_number_put(req, bp->board_serialno); in bnxt_dl_info_get()
877 bp->board_partno); in bnxt_dl_info_get()
881 sprintf(buf, "%X", bp->chip_num); in bnxt_dl_info_get()
887 ver_resp = &bp->ver_resp; in bnxt_dl_info_get()
888 sprintf(buf, "%c%d", 'A' + ver_resp->chip_rev, ver_resp->chip_metal); in bnxt_dl_info_get()
896 bp->nvm_cfg_ver); in bnxt_dl_info_get()
901 strncat(buf, ver_resp->active_pkg_name, HWRM_FW_VER_STR_LEN); in bnxt_dl_info_get()
917 if (ver_resp->flags & VER_GET_RESP_FLAGS_EXT_VER_AVAIL) { in bnxt_dl_info_get()
919 ver_resp->hwrm_fw_major, ver_resp->hwrm_fw_minor, in bnxt_dl_info_get()
920 ver_resp->hwrm_fw_build, ver_resp->hwrm_fw_patch); in bnxt_dl_info_get()
923 ver_resp->mgmt_fw_major, ver_resp->mgmt_fw_minor, in bnxt_dl_info_get()
924 ver_resp->mgmt_fw_build, ver_resp->mgmt_fw_patch); in bnxt_dl_info_get()
927 ver_resp->roce_fw_major, ver_resp->roce_fw_minor, in bnxt_dl_info_get()
928 ver_resp->roce_fw_build, ver_resp->roce_fw_patch); in bnxt_dl_info_get()
931 ver_resp->hwrm_fw_maj_8b, ver_resp->hwrm_fw_min_8b, in bnxt_dl_info_get()
932 ver_resp->hwrm_fw_bld_8b, ver_resp->hwrm_fw_rsvd_8b); in bnxt_dl_info_get()
935 ver_resp->mgmt_fw_maj_8b, ver_resp->mgmt_fw_min_8b, in bnxt_dl_info_get()
936 ver_resp->mgmt_fw_bld_8b, ver_resp->mgmt_fw_rsvd_8b); in bnxt_dl_info_get()
939 ver_resp->roce_fw_maj_8b, ver_resp->roce_fw_min_8b, in bnxt_dl_info_get()
940 ver_resp->roce_fw_bld_8b, ver_resp->roce_fw_rsvd_8b); in bnxt_dl_info_get()
949 bp->hwrm_ver_supp); in bnxt_dl_info_get()
966 if (!bnxt_get_pkginfo(bp->dev, buf, sizeof(buf))) in bnxt_dl_info_get()
1026 return -EPERM; in bnxt_hwrm_nvm_req()
1038 return -EOPNOTSUPP; in bnxt_hwrm_nvm_req()
1042 idx = bp->pf.port_id; in bnxt_hwrm_nvm_req()
1044 idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID; in bnxt_hwrm_nvm_req()
1050 return -ENOMEM; in bnxt_hwrm_nvm_req()
1053 req->dest_data_addr = cpu_to_le64(data_dma_addr); in bnxt_hwrm_nvm_req()
1054 req->data_len = cpu_to_le16(nvm_param.nvm_num_bits); in bnxt_hwrm_nvm_req()
1055 req->option_num = cpu_to_le16(nvm_param.offset); in bnxt_hwrm_nvm_req()
1056 req->index_0 = cpu_to_le16(idx); in bnxt_hwrm_nvm_req()
1058 req->dimensions = cpu_to_le16(1); in bnxt_hwrm_nvm_req()
1061 if (req->req_type == cpu_to_le16(HWRM_NVM_SET_VARIABLE)) { in bnxt_hwrm_nvm_req()
1072 if (resp->cmd_err == in bnxt_hwrm_nvm_req()
1074 rc = -EOPNOTSUPP; in bnxt_hwrm_nvm_req()
1078 if (rc == -EACCES) in bnxt_hwrm_nvm_req()
1079 netdev_err(bp->dev, "PF does not have admin privileges to modify NVM config\n"); in bnxt_hwrm_nvm_req()
1083 static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id, in bnxt_dl_nvm_param_get() argument
1086 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_nvm_param_get()
1094 rc = bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_get()
1096 ctx->val.vbool = !ctx->val.vbool; in bnxt_dl_nvm_param_get()
1101 static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id, in bnxt_dl_nvm_param_set() argument
1105 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_dl_nvm_param_set()
1114 ctx->val.vbool = !ctx->val.vbool; in bnxt_dl_nvm_param_set()
1116 return bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_set()
1119 static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, in bnxt_dl_msix_validate() argument
1123 int max_val = -1; in bnxt_dl_msix_validate()
1133 return -EINVAL; in bnxt_dl_msix_validate()
1139 static int bnxt_remote_dev_reset_get(struct devlink *dl, u32 id, in bnxt_remote_dev_reset_get() argument
1142 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_remote_dev_reset_get()
1144 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_remote_dev_reset_get()
1145 return -EOPNOTSUPP; in bnxt_remote_dev_reset_get()
1147 ctx->val.vbool = bnxt_dl_get_remote_reset(dl); in bnxt_remote_dev_reset_get()
1151 static int bnxt_remote_dev_reset_set(struct devlink *dl, u32 id, in bnxt_remote_dev_reset_set() argument
1155 struct bnxt *bp = bnxt_get_bp_from_dl(dl); in bnxt_remote_dev_reset_set()
1158 rc = bnxt_hwrm_remote_dev_reset_set(bp, ctx->val.vbool); in bnxt_remote_dev_reset_set()
1162 bnxt_dl_set_remote_reset(dl, ctx->val.vbool); in bnxt_remote_dev_reset_set()
1200 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_register()
1203 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_dl_params_register()
1204 num_params--; in bnxt_dl_params_register()
1206 rc = devlink_params_register(bp->dl, bnxt_dl_params, num_params); in bnxt_dl_params_register()
1208 netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n", in bnxt_dl_params_register()
1217 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_unregister()
1220 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_dl_params_unregister()
1221 num_params--; in bnxt_dl_params_unregister()
1223 devlink_params_unregister(bp->dl, bnxt_dl_params, num_params); in bnxt_dl_params_unregister()
1231 struct devlink *dl; in bnxt_dl_register() local
1239 dl = devlink_alloc(devlink_ops, sizeof(struct bnxt_dl), &bp->pdev->dev); in bnxt_dl_register()
1240 if (!dl) { in bnxt_dl_register()
1241 netdev_warn(bp->dev, "devlink_alloc failed\n"); in bnxt_dl_register()
1242 return -ENOMEM; in bnxt_dl_register()
1245 bp->dl = dl; in bnxt_dl_register()
1246 bp_dl = devlink_priv(dl); in bnxt_dl_register()
1247 bp_dl->bp = bp; in bnxt_dl_register()
1248 bnxt_dl_set_remote_reset(dl, true); in bnxt_dl_register()
1251 if (pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV) && in bnxt_dl_register()
1252 bp->hwrm_spec_code > 0x10803) in bnxt_dl_register()
1253 bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY; in bnxt_dl_register()
1259 attrs.phys.port_number = bp->pf.port_id; in bnxt_dl_register()
1260 memcpy(attrs.switch_id.id, bp->dsn, sizeof(bp->dsn)); in bnxt_dl_register()
1261 attrs.switch_id.id_len = sizeof(bp->dsn); in bnxt_dl_register()
1262 devlink_port_attrs_set(&bp->dl_port, &attrs); in bnxt_dl_register()
1263 rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); in bnxt_dl_register()
1265 netdev_err(bp->dev, "devlink_port_register failed\n"); in bnxt_dl_register()
1274 devlink_register(dl); in bnxt_dl_register()
1278 devlink_port_unregister(&bp->dl_port); in bnxt_dl_register()
1280 devlink_free(dl); in bnxt_dl_register()
1286 struct devlink *dl = bp->dl; in bnxt_dl_unregister() local
1288 devlink_unregister(dl); in bnxt_dl_unregister()
1291 devlink_port_unregister(&bp->dl_port); in bnxt_dl_unregister()
1293 devlink_free(dl); in bnxt_dl_unregister()