| 677 | } |
| 678 | |
| 679 | int |
| 680 | idpf_vc_vectors_alloc(struct idpf_vport *vport, uint16_t num_vectors) |
| 681 | { |
| 682 | struct idpf_adapter *adapter = vport->adapter; |
| 683 | struct virtchnl2_alloc_vectors *alloc_vec; |
| 684 | struct idpf_cmd_info args; |
| 685 | int err, len; |
| 686 | |
| 687 | len = sizeof(struct virtchnl2_alloc_vectors) + |
| 688 | (num_vectors - 1) * sizeof(struct virtchnl2_vector_chunk); |
| 689 | alloc_vec = rte_zmalloc("alloc_vec", len, 0); |
| 690 | if (alloc_vec == NULL) |
| 691 | return -ENOMEM; |
| 692 | |
| 693 | alloc_vec->num_vectors = num_vectors; |
| 694 | |
| 695 | args.ops = VIRTCHNL2_OP_ALLOC_VECTORS; |
| 696 | args.in_args = (uint8_t *)alloc_vec; |
| 697 | args.in_args_size = len; |
| 698 | args.out_buffer = adapter->mbx_resp; |
| 699 | args.out_size = IDPF_DFLT_MBX_BUF_SIZE; |
| 700 | err = idpf_vc_cmd_execute(adapter, &args); |
| 701 | if (err != 0) |
| 702 | DRV_LOG(ERR, "Failed to execute command VIRTCHNL2_OP_ALLOC_VECTORS"); |
| 703 | |
| 704 | rte_memcpy(vport->recv_vectors, args.out_buffer, len); |
| 705 | rte_free(alloc_vec); |
| 706 | return err; |
| 707 | } |
| 708 | |
| 709 | int |
| 710 | idpf_vc_vectors_dealloc(struct idpf_vport *vport) |
no test coverage detected