Check API version with sync wait until version read from admin queue */
| 643 | |
| 644 | /* Check API version with sync wait until version read from admin queue */ |
| 645 | int |
| 646 | iavf_check_api_version(struct iavf_adapter *adapter) |
| 647 | { |
| 648 | struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter); |
| 649 | struct virtchnl_version_info version, *pver; |
| 650 | struct iavf_cmd_info args; |
| 651 | int err; |
| 652 | |
| 653 | version.major = VIRTCHNL_VERSION_MAJOR; |
| 654 | version.minor = VIRTCHNL_VERSION_MINOR; |
| 655 | |
| 656 | args.ops = VIRTCHNL_OP_VERSION; |
| 657 | args.in_args = (uint8_t *)&version; |
| 658 | args.in_args_size = sizeof(version); |
| 659 | args.out_buffer = vf->aq_resp; |
| 660 | args.out_size = IAVF_AQ_BUF_SZ; |
| 661 | |
| 662 | err = iavf_execute_vf_cmd_safe(adapter, &args, 0); |
| 663 | if (err) { |
| 664 | PMD_INIT_LOG(ERR, "Fail to execute command of OP_VERSION"); |
| 665 | return err; |
| 666 | } |
| 667 | |
| 668 | pver = (struct virtchnl_version_info *)args.out_buffer; |
| 669 | vf->virtchnl_version = *pver; |
| 670 | |
| 671 | if (vf->virtchnl_version.major < VIRTCHNL_VERSION_MAJOR_START || |
| 672 | (vf->virtchnl_version.major == VIRTCHNL_VERSION_MAJOR_START && |
| 673 | vf->virtchnl_version.minor < VIRTCHNL_VERSION_MINOR_START)) { |
| 674 | PMD_INIT_LOG(ERR, "VIRTCHNL API version should not be lower" |
| 675 | " than (%u.%u) to support Adaptive VF", |
| 676 | VIRTCHNL_VERSION_MAJOR_START, |
| 677 | VIRTCHNL_VERSION_MAJOR_START); |
| 678 | return -1; |
| 679 | } else if (vf->virtchnl_version.major > VIRTCHNL_VERSION_MAJOR || |
| 680 | (vf->virtchnl_version.major == VIRTCHNL_VERSION_MAJOR && |
| 681 | vf->virtchnl_version.minor > VIRTCHNL_VERSION_MINOR)) { |
| 682 | PMD_INIT_LOG(ERR, "PF/VF API version mismatch:(%u.%u)-(%u.%u)", |
| 683 | vf->virtchnl_version.major, |
| 684 | vf->virtchnl_version.minor, |
| 685 | VIRTCHNL_VERSION_MAJOR, |
| 686 | VIRTCHNL_VERSION_MINOR); |
| 687 | return -1; |
| 688 | } |
| 689 | |
| 690 | PMD_DRV_LOG(DEBUG, "Peer is supported PF host"); |
| 691 | return 0; |
| 692 | } |
| 693 | |
| 694 | int |
| 695 | iavf_get_vf_resource(struct iavf_adapter *adapter) |
no test coverage detected