Lines Matching +full:keep +full:- +full:a +full:- +full:live

1 /* Broadcom NetXtreme-C/E network driver.
28 if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state) || in __bnxt_fw_recover()
29 test_bit(BNXT_STATE_FW_NON_FATAL_COND, &bp->state)) in __bnxt_fw_recover()
45 "flash update not supported from a VF"); in bnxt_dl_flash_update()
46 return -EPERM; in bnxt_dl_flash_update()
50 rc = bnxt_flash_package_from_fw_obj(bp->dev, params->fw, 0, extack); in bnxt_dl_flash_update()
63 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_hwrm_remote_dev_reset_set()
64 return -EOPNOTSUPP; in bnxt_hwrm_remote_dev_reset_set()
70 req->fid = cpu_to_le16(0xffff); in bnxt_hwrm_remote_dev_reset_set()
71 req->enables = cpu_to_le32(FUNC_CFG_REQ_ENABLES_HOT_RESET_IF_SUPPORT); in bnxt_hwrm_remote_dev_reset_set()
73 req->flags = cpu_to_le32(FUNC_CFG_REQ_FLAGS_HOT_RESET_IF_EN_DIS); in bnxt_hwrm_remote_dev_reset_set()
106 struct bnxt_fw_health *h = bp->fw_health; in bnxt_fw_diagnose()
109 if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)) { in bnxt_fw_diagnose()
114 if (!h->status_reliable) { in bnxt_fw_diagnose()
119 mutex_lock(&h->lock); in bnxt_fw_diagnose()
123 } else if (h->severity || fw_status != BNXT_FW_STATUS_HEALTHY) { in bnxt_fw_diagnose()
124 if (!h->severity) { in bnxt_fw_diagnose()
125 h->severity = SEVERITY_FATAL; in bnxt_fw_diagnose()
126 h->remedy = REMEDY_POWER_CYCLE_DEVICE; in bnxt_fw_diagnose()
127 h->diagnoses++; in bnxt_fw_diagnose()
128 devlink_health_report(h->fw_reporter, in bnxt_fw_diagnose()
138 bnxt_health_severity_str(h->severity)); in bnxt_fw_diagnose()
140 if (h->severity) { in bnxt_fw_diagnose()
142 bnxt_health_remedy_str(h->remedy)); in bnxt_fw_diagnose()
143 if (h->remedy == REMEDY_DEVLINK_RECOVER) in bnxt_fw_diagnose()
148 mutex_unlock(&h->lock); in bnxt_fw_diagnose()
149 if (!h->resets_reliable) in bnxt_fw_diagnose()
154 devlink_fmsg_u32_pair_put(fmsg, "Arrests", h->arrests); in bnxt_fw_diagnose()
155 devlink_fmsg_u32_pair_put(fmsg, "Survivals", h->survivals); in bnxt_fw_diagnose()
156 devlink_fmsg_u32_pair_put(fmsg, "Discoveries", h->discoveries); in bnxt_fw_diagnose()
157 devlink_fmsg_u32_pair_put(fmsg, "Fatalities", h->fatalities); in bnxt_fw_diagnose()
158 devlink_fmsg_u32_pair_put(fmsg, "Diagnoses", h->diagnoses); in bnxt_fw_diagnose()
173 return -EOPNOTSUPP; in bnxt_fw_dump()
177 return -EIO; in bnxt_fw_dump()
181 return -ENOMEM; in bnxt_fw_dump()
201 if (bp->fw_health->severity == SEVERITY_FATAL) in bnxt_fw_recover()
202 return -ENODEV; in bnxt_fw_recover()
204 set_bit(BNXT_STATE_RECOVER, &bp->state); in bnxt_fw_recover()
207 return -EINPROGRESS; in bnxt_fw_recover()
223 reporter = devlink_health_reporter_create(bp->dl, ops, 0, bp); in __bnxt_dl_reporter_create()
225 netdev_warn(bp->dev, "Failed to create %s health reporter, rc = %ld\n", in __bnxt_dl_reporter_create()
226 ops->name, PTR_ERR(reporter)); in __bnxt_dl_reporter_create()
235 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_fw_reporters_create()
237 if (fw_health && !fw_health->fw_reporter) in bnxt_dl_fw_reporters_create()
238 fw_health->fw_reporter = __bnxt_dl_reporter_create(bp, &bnxt_dl_fw_reporter_ops); in bnxt_dl_fw_reporters_create()
243 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_fw_reporters_destroy()
245 if (fw_health && fw_health->fw_reporter) { in bnxt_dl_fw_reporters_destroy()
246 devlink_health_reporter_destroy(fw_health->fw_reporter); in bnxt_dl_fw_reporters_destroy()
247 fw_health->fw_reporter = NULL; in bnxt_dl_fw_reporters_destroy()
253 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_devlink_health_fw_report()
259 if (!fw_health->fw_reporter) { in bnxt_devlink_health_fw_report()
264 mutex_lock(&fw_health->lock); in bnxt_devlink_health_fw_report()
265 fw_health->severity = SEVERITY_RECOVERABLE; in bnxt_devlink_health_fw_report()
266 fw_health->remedy = REMEDY_DEVLINK_RECOVER; in bnxt_devlink_health_fw_report()
267 mutex_unlock(&fw_health->lock); in bnxt_devlink_health_fw_report()
268 rc = devlink_health_report(fw_health->fw_reporter, "FW error reported", in bnxt_devlink_health_fw_report()
270 if (rc == -ECANCELED) in bnxt_devlink_health_fw_report()
276 struct bnxt_fw_health *fw_health = bp->fw_health; in bnxt_dl_health_fw_status_update()
279 mutex_lock(&fw_health->lock); in bnxt_dl_health_fw_status_update()
281 fw_health->severity = SEVERITY_NORMAL; in bnxt_dl_health_fw_status_update()
284 fw_health->severity = SEVERITY_FATAL; in bnxt_dl_health_fw_status_update()
285 fw_health->remedy = REMEDY_POWER_CYCLE_DEVICE; in bnxt_dl_health_fw_status_update()
288 mutex_unlock(&fw_health->lock); in bnxt_dl_health_fw_status_update()
289 devlink_health_reporter_state_update(fw_health->fw_reporter, state); in bnxt_dl_health_fw_status_update()
294 struct bnxt_dl *dl = devlink_priv(bp->dl); in bnxt_dl_health_fw_recovery_done()
296 devlink_health_reporter_recovery_done(bp->fw_health->fw_reporter); in bnxt_dl_health_fw_recovery_done()
297 bnxt_hwrm_remote_dev_reset_set(bp, dl->remote_reset); in bnxt_dl_health_fw_recovery_done()
307 int err = ((struct hwrm_err_output *)resp)->cmd_err; in bnxt_dl_livepatch_report_err()
311 netdev_err(bp->dev, "Illegal live patch opcode"); in bnxt_dl_livepatch_report_err()
315 NL_SET_ERR_MSG_MOD(extack, "Live patch operation not supported"); in bnxt_dl_livepatch_report_err()
318 NL_SET_ERR_MSG_MOD(extack, "Live patch not found"); in bnxt_dl_livepatch_report_err()
322 "Live patch deactivation failed. Firmware not patched."); in bnxt_dl_livepatch_report_err()
325 NL_SET_ERR_MSG_MOD(extack, "Live patch not authenticated"); in bnxt_dl_livepatch_report_err()
328 NL_SET_ERR_MSG_MOD(extack, "Incompatible live patch"); in bnxt_dl_livepatch_report_err()
331 NL_SET_ERR_MSG_MOD(extack, "Live patch has invalid size"); in bnxt_dl_livepatch_report_err()
334 NL_SET_ERR_MSG_MOD(extack, "Live patch already applied"); in bnxt_dl_livepatch_report_err()
337 netdev_err(bp->dev, "Unexpected live patch error: %d\n", err); in bnxt_dl_livepatch_report_err()
338 NL_SET_ERR_MSG_MOD(extack, "Failed to activate live patch"); in bnxt_dl_livepatch_report_err()
343 /* Live patch status in NVM */
366 if (~bp->fw_cap & BNXT_FW_CAP_LIVEPATCH) { in bnxt_dl_livepatch_activate()
367 NL_SET_ERR_MSG_MOD(extack, "Device does not support live patch"); in bnxt_dl_livepatch_activate()
368 return -EOPNOTSUPP; in bnxt_dl_livepatch_activate()
381 patch_req->loadtype = FW_LIVEPATCH_REQ_LOADTYPE_NVM_INSTALL; in bnxt_dl_livepatch_activate()
385 query_req->fw_target = target; in bnxt_dl_livepatch_activate()
392 flags = le16_to_cpu(query_resp->status_flags); in bnxt_dl_livepatch_activate()
404 patch_req->opcode = FW_LIVEPATCH_REQ_OPCODE_ACTIVATE; in bnxt_dl_livepatch_activate()
406 patch_req->opcode = FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE; in bnxt_dl_livepatch_activate()
408 patch_req->fw_target = target; in bnxt_dl_livepatch_activate()
419 NL_SET_ERR_MSG_MOD(extack, "Live patch already activated"); in bnxt_dl_livepatch_activate()
420 rc = -EEXIST; in bnxt_dl_livepatch_activate()
422 NL_SET_ERR_MSG_MOD(extack, "No live patches found"); in bnxt_dl_livepatch_activate()
423 rc = -ENOENT; in bnxt_dl_livepatch_activate()
443 netdev_lock(bp->dev); in bnxt_dl_reload_down()
447 netdev_unlock(bp->dev); in bnxt_dl_reload_down()
450 return -EOPNOTSUPP; in bnxt_dl_reload_down()
452 if (bp->dev->reg_state == NETREG_UNREGISTERED) { in bnxt_dl_reload_down()
453 netdev_unlock(bp->dev); in bnxt_dl_reload_down()
456 return -ENODEV; in bnxt_dl_reload_down()
458 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
464 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
465 netif_close(bp->dev); in bnxt_dl_reload_down()
466 netdev_unlock(bp->dev); in bnxt_dl_reload_down()
477 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET) { in bnxt_dl_reload_down()
479 return -EOPNOTSUPP; in bnxt_dl_reload_down()
484 return -EPERM; in bnxt_dl_reload_down()
487 netdev_lock(bp->dev); in bnxt_dl_reload_down()
488 if (bp->dev->reg_state == NETREG_UNREGISTERED) { in bnxt_dl_reload_down()
489 netdev_unlock(bp->dev); in bnxt_dl_reload_down()
491 return -ENODEV; in bnxt_dl_reload_down()
493 if (netif_running(bp->dev)) in bnxt_dl_reload_down()
494 set_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_down()
495 rc = bnxt_hwrm_firmware_reset(bp->dev, in bnxt_dl_reload_down()
502 clear_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_down()
503 netdev_unlock(bp->dev); in bnxt_dl_reload_down()
509 rc = -EOPNOTSUPP; in bnxt_dl_reload_down()
522 netdev_assert_locked(bp->dev); in bnxt_dl_reload_up()
529 if (netif_running(bp->dev)) in bnxt_dl_reload_up()
543 if (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY) in bnxt_dl_reload_up()
544 timeout = start + bp->fw_health->normal_func_wait_dsecs * HZ / 10; in bnxt_dl_reload_up()
545 if (!netif_running(bp->dev)) in bnxt_dl_reload_up()
548 netdev_unlock(bp->dev); in bnxt_dl_reload_up()
550 while (test_bit(BNXT_STATE_FW_ACTIVATE, &bp->state)) { in bnxt_dl_reload_up()
553 rc = -ETIMEDOUT; in bnxt_dl_reload_up()
556 if (test_bit(BNXT_STATE_ABORT_ERR, &bp->state)) { in bnxt_dl_reload_up()
558 rc = -ENODEV; in bnxt_dl_reload_up()
564 netdev_lock(bp->dev); in bnxt_dl_reload_up()
567 clear_bit(BNXT_STATE_FW_ACTIVATE, &bp->state); in bnxt_dl_reload_up()
571 return -EOPNOTSUPP; in bnxt_dl_reload_up()
576 if (netif_running(bp->dev)) { in bnxt_dl_reload_up()
577 mutex_lock(&bp->link_lock); in bnxt_dl_reload_up()
579 mutex_unlock(&bp->link_lock); in bnxt_dl_reload_up()
582 } else if (netif_running(bp->dev)) { in bnxt_dl_reload_up()
583 netif_close(bp->dev); in bnxt_dl_reload_up()
585 netdev_unlock(bp->dev); in bnxt_dl_reload_up()
599 if (bnxt_find_nvram_item(bp->dev, BNX_DIR_TYPE_VPD, in bnxt_nvm_test()
612 if (bnxt_get_nvram_item(bp->dev, index, 0, datalen, buf)) { in bnxt_nvm_test()
617 if (bnxt_flash_nvram(bp->dev, BNX_DIR_TYPE_VPD, BNX_DIR_ORDINAL_FIRST, in bnxt_nvm_test()
700 dst->val8 = src->vbool; in bnxt_copy_to_nvm_data()
704 val32 = src->vu32; in bnxt_copy_to_nvm_data()
706 val32 = (u32)src->vu16; in bnxt_copy_to_nvm_data()
708 val32 = (u32)src->vu8; in bnxt_copy_to_nvm_data()
709 dst->val32 = cpu_to_le32(val32); in bnxt_copy_to_nvm_data()
719 dst->vbool = src->val8; in bnxt_copy_from_nvm_data()
722 val32 = le32_to_cpu(src->val32); in bnxt_copy_from_nvm_data()
724 dst->vu32 = val32; in bnxt_copy_from_nvm_data()
726 dst->vu16 = (u16)val32; in bnxt_copy_from_nvm_data()
728 dst->vu8 = (u8)val32; in bnxt_copy_from_nvm_data()
748 rc = -ENOMEM; in bnxt_hwrm_get_nvm_cfg_ver()
761 req->dest_data_addr = cpu_to_le64(data_dma_addr); in bnxt_hwrm_get_nvm_cfg_ver()
762 req->data_len = cpu_to_le16(bits); in bnxt_hwrm_get_nvm_cfg_ver()
763 req->option_num = cpu_to_le16(NVM_OFF_NVM_CFG_VER); in bnxt_hwrm_get_nvm_cfg_ver()
764 req->dimensions = cpu_to_le16(dim); in bnxt_hwrm_get_nvm_cfg_ver()
767 req->index_0 = cpu_to_le16(i--); in bnxt_hwrm_get_nvm_cfg_ver()
793 if ((bp->flags & BNXT_FLAG_CHIP_P5_PLUS) && in bnxt_dl_info_put()
821 if (~bp->fw_cap & BNXT_FW_CAP_LIVEPATCH) in bnxt_dl_livepatch_info_put()
829 query->fw_target = FW_LIVEPATCH_QUERY_REQ_FW_TARGET_SECURE_FW; in bnxt_dl_livepatch_info_put()
831 query->fw_target = FW_LIVEPATCH_QUERY_REQ_FW_TARGET_COMMON_FW; in bnxt_dl_livepatch_info_put()
840 flags = le16_to_cpu(resp->status_flags); in bnxt_dl_livepatch_info_put()
842 resp->active_ver[sizeof(resp->active_ver) - 1] = '\0'; in bnxt_dl_livepatch_info_put()
843 rc = devlink_info_version_running_put(req, key, resp->active_ver); in bnxt_dl_livepatch_info_put()
849 resp->install_ver[sizeof(resp->install_ver) - 1] = '\0'; in bnxt_dl_livepatch_info_put()
850 rc = devlink_info_version_stored_put(req, key, resp->install_ver); in bnxt_dl_livepatch_info_put()
875 if (BNXT_PF(bp) && (bp->flags & BNXT_FLAG_DSN_VALID)) { in bnxt_dl_info_get()
876 sprintf(buf, "%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X", in bnxt_dl_info_get()
877 bp->dsn[7], bp->dsn[6], bp->dsn[5], bp->dsn[4], in bnxt_dl_info_get()
878 bp->dsn[3], bp->dsn[2], bp->dsn[1], bp->dsn[0]); in bnxt_dl_info_get()
884 if (strlen(bp->board_serialno)) { in bnxt_dl_info_get()
885 rc = devlink_info_board_serial_number_put(req, bp->board_serialno); in bnxt_dl_info_get()
892 bp->board_partno); in bnxt_dl_info_get()
896 sprintf(buf, "%X", bp->chip_num); in bnxt_dl_info_get()
902 ver_resp = &bp->ver_resp; in bnxt_dl_info_get()
903 sprintf(buf, "%c%d", 'A' + ver_resp->chip_rev, ver_resp->chip_metal); in bnxt_dl_info_get()
911 bp->nvm_cfg_ver); in bnxt_dl_info_get()
916 strncat(buf, ver_resp->active_pkg_name, HWRM_FW_VER_STR_LEN); in bnxt_dl_info_get()
932 if (ver_resp->flags & VER_GET_RESP_FLAGS_EXT_VER_AVAIL) { in bnxt_dl_info_get()
934 ver_resp->hwrm_fw_major, ver_resp->hwrm_fw_minor, in bnxt_dl_info_get()
935 ver_resp->hwrm_fw_build, ver_resp->hwrm_fw_patch); in bnxt_dl_info_get()
938 ver_resp->mgmt_fw_major, ver_resp->mgmt_fw_minor, in bnxt_dl_info_get()
939 ver_resp->mgmt_fw_build, ver_resp->mgmt_fw_patch); in bnxt_dl_info_get()
942 ver_resp->roce_fw_major, ver_resp->roce_fw_minor, in bnxt_dl_info_get()
943 ver_resp->roce_fw_build, ver_resp->roce_fw_patch); in bnxt_dl_info_get()
946 ver_resp->hwrm_fw_maj_8b, ver_resp->hwrm_fw_min_8b, in bnxt_dl_info_get()
947 ver_resp->hwrm_fw_bld_8b, ver_resp->hwrm_fw_rsvd_8b); in bnxt_dl_info_get()
950 ver_resp->mgmt_fw_maj_8b, ver_resp->mgmt_fw_min_8b, in bnxt_dl_info_get()
951 ver_resp->mgmt_fw_bld_8b, ver_resp->mgmt_fw_rsvd_8b); in bnxt_dl_info_get()
954 ver_resp->roce_fw_maj_8b, ver_resp->roce_fw_min_8b, in bnxt_dl_info_get()
955 ver_resp->roce_fw_bld_8b, ver_resp->roce_fw_rsvd_8b); in bnxt_dl_info_get()
964 bp->hwrm_ver_supp); in bnxt_dl_info_get()
981 if (!bnxt_get_pkginfo(bp->dev, buf, sizeof(buf))) in bnxt_dl_info_get()
1038 if (nvm->dir_type == BNXT_NVM_PORT_CFG) in __bnxt_hwrm_nvm_req()
1039 idx = bp->pf.port_id; in __bnxt_hwrm_nvm_req()
1040 else if (nvm->dir_type == BNXT_NVM_FUNC_CFG) in __bnxt_hwrm_nvm_req()
1041 idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID; in __bnxt_hwrm_nvm_req()
1047 return -ENOMEM; in __bnxt_hwrm_nvm_req()
1050 req->dest_data_addr = cpu_to_le64(data_dma_addr); in __bnxt_hwrm_nvm_req()
1051 req->data_len = cpu_to_le16(nvm->nvm_num_bits); in __bnxt_hwrm_nvm_req()
1052 req->option_num = cpu_to_le16(nvm->offset); in __bnxt_hwrm_nvm_req()
1053 req->index_0 = cpu_to_le16(idx); in __bnxt_hwrm_nvm_req()
1055 req->dimensions = cpu_to_le16(1); in __bnxt_hwrm_nvm_req()
1058 if (req->req_type == cpu_to_le16(HWRM_NVM_SET_VARIABLE)) { in __bnxt_hwrm_nvm_req()
1059 bnxt_copy_to_nvm_data(data, val, nvm->nvm_num_bits, in __bnxt_hwrm_nvm_req()
1060 nvm->dl_num_bytes); in __bnxt_hwrm_nvm_req()
1066 nvm->nvm_num_bits, in __bnxt_hwrm_nvm_req()
1067 nvm->dl_num_bytes); in __bnxt_hwrm_nvm_req()
1069 if (resp->cmd_err == in __bnxt_hwrm_nvm_req()
1071 rc = -EOPNOTSUPP; in __bnxt_hwrm_nvm_req()
1075 if (rc == -EACCES) in __bnxt_hwrm_nvm_req()
1076 netdev_err(bp->dev, "PF does not have admin privileges to modify NVM config\n"); in __bnxt_hwrm_nvm_req()
1090 return -EPERM; in bnxt_hwrm_nvm_req()
1095 if (nvm_param->id == param_id) in bnxt_hwrm_nvm_req()
1098 return -EOPNOTSUPP; in bnxt_hwrm_nvm_req()
1112 rc = bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_get()
1114 ctx->val.vbool = !ctx->val.vbool; in bnxt_dl_nvm_param_get()
1132 ctx->val.vbool = !ctx->val.vbool; in bnxt_dl_nvm_param_set()
1134 return bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); in bnxt_dl_nvm_param_set()
1154 return -EINVAL; in bnxt_dl_roce_validate()
1158 return -EINVAL; in bnxt_dl_roce_validate()
1167 int max_val = -1; in bnxt_dl_msix_validate()
1177 return -EINVAL; in bnxt_dl_msix_validate()
1188 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_remote_dev_reset_get()
1189 return -EOPNOTSUPP; in bnxt_remote_dev_reset_get()
1191 ctx->val.vbool = bnxt_dl_get_remote_reset(dl); in bnxt_remote_dev_reset_get()
1202 rc = bnxt_hwrm_remote_dev_reset_set(bp, ctx->val.vbool); in bnxt_remote_dev_reset_set()
1206 bnxt_dl_set_remote_reset(dl, ctx->val.vbool); in bnxt_remote_dev_reset_set()
1236 /* keep REMOTE_DEV_RESET last, it is excluded based on caps */
1248 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_register()
1251 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_dl_params_register()
1252 num_params--; in bnxt_dl_params_register()
1254 rc = devlink_params_register(bp->dl, bnxt_dl_params, num_params); in bnxt_dl_params_register()
1256 netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n", in bnxt_dl_params_register()
1265 if (bp->hwrm_spec_code < 0x10600) in bnxt_dl_params_unregister()
1268 if (~bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF) in bnxt_dl_params_unregister()
1269 num_params--; in bnxt_dl_params_unregister()
1271 devlink_params_unregister(bp->dl, bnxt_dl_params, num_params); in bnxt_dl_params_unregister()
1287 dl = devlink_alloc(devlink_ops, sizeof(struct bnxt_dl), &bp->pdev->dev); in bnxt_dl_register()
1289 netdev_warn(bp->dev, "devlink_alloc failed\n"); in bnxt_dl_register()
1290 return -ENOMEM; in bnxt_dl_register()
1293 bp->dl = dl; in bnxt_dl_register()
1295 bp_dl->bp = bp; in bnxt_dl_register()
1299 if (pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV) && in bnxt_dl_register()
1300 bp->hwrm_spec_code > 0x10803) in bnxt_dl_register()
1301 bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY; in bnxt_dl_register()
1307 attrs.phys.port_number = bp->pf.port_id; in bnxt_dl_register()
1308 memcpy(attrs.switch_id.id, bp->dsn, sizeof(bp->dsn)); in bnxt_dl_register()
1309 attrs.switch_id.id_len = sizeof(bp->dsn); in bnxt_dl_register()
1310 devlink_port_attrs_set(&bp->dl_port, &attrs); in bnxt_dl_register()
1311 rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); in bnxt_dl_register()
1313 netdev_err(bp->dev, "devlink_port_register failed\n"); in bnxt_dl_register()
1326 devlink_port_unregister(&bp->dl_port); in bnxt_dl_register()
1334 struct devlink *dl = bp->dl; in bnxt_dl_unregister()
1339 devlink_port_unregister(&bp->dl_port); in bnxt_dl_unregister()