| 364 | } |
| 365 | |
| 366 | int |
| 367 | idpf_adapter_init(struct idpf_adapter *adapter) |
| 368 | { |
| 369 | struct idpf_hw *hw = &adapter->hw; |
| 370 | int ret; |
| 371 | |
| 372 | if (hw->device_id == IDPF_DEV_ID_SRIOV) { |
| 373 | ret = idpf_check_vf_reset_done(hw); |
| 374 | } else { |
| 375 | idpf_reset_pf(hw); |
| 376 | ret = idpf_check_pf_reset_done(hw); |
| 377 | } |
| 378 | if (ret != 0) { |
| 379 | DRV_LOG(ERR, "IDPF is still resetting"); |
| 380 | goto err_check_reset; |
| 381 | } |
| 382 | |
| 383 | ret = idpf_init_mbx(hw); |
| 384 | if (ret != 0) { |
| 385 | DRV_LOG(ERR, "Failed to init mailbox"); |
| 386 | goto err_check_reset; |
| 387 | } |
| 388 | |
| 389 | adapter->mbx_resp = rte_zmalloc("idpf_adapter_mbx_resp", |
| 390 | IDPF_DFLT_MBX_BUF_SIZE, 0); |
| 391 | if (adapter->mbx_resp == NULL) { |
| 392 | DRV_LOG(ERR, "Failed to allocate idpf_adapter_mbx_resp memory"); |
| 393 | ret = -ENOMEM; |
| 394 | goto err_mbx_resp; |
| 395 | } |
| 396 | |
| 397 | ret = idpf_vc_api_version_check(adapter); |
| 398 | if (ret != 0) { |
| 399 | DRV_LOG(ERR, "Failed to check api version"); |
| 400 | goto err_check_api; |
| 401 | } |
| 402 | |
| 403 | ret = idpf_vc_caps_get(adapter); |
| 404 | if (ret != 0) { |
| 405 | DRV_LOG(ERR, "Failed to get capabilities"); |
| 406 | goto err_check_api; |
| 407 | } |
| 408 | |
| 409 | ret = idpf_get_pkt_type(adapter); |
| 410 | if (ret != 0) { |
| 411 | DRV_LOG(ERR, "Failed to set ptype table"); |
| 412 | goto err_check_api; |
| 413 | } |
| 414 | |
| 415 | return 0; |
| 416 | |
| 417 | err_check_api: |
| 418 | rte_free(adapter->mbx_resp); |
| 419 | adapter->mbx_resp = NULL; |
| 420 | err_mbx_resp: |
| 421 | idpf_ctlq_deinit(hw); |
| 422 | err_check_reset: |
| 423 | return ret; |
no test coverage detected