[dpdk-dev] [PATCH v4 2/6] ixgbe: Negotiate VF API version

Vlad Zolotarov vladz at cloudius-systems.com
Sun Jan 4 09:30:27 CET 2015


On 01/04/15 10:26, Vlad Zolotarov wrote:
>
> On 01/04/15 09:18, Ouyang Changchun wrote:
>> Negotiate API version with VF when receiving the 
>> IXGBE_VF_API_NEGOTIATE message.
>>
>> Signed-off-by: Changchun Ouyang <changchun.ouyang at intel.com>
>
> Reviewed-by: Vlad Zolotarov <vladz at cloudius-systems.com>

One small remark below.

>
>> ---
>>   lib/librte_pmd_ixgbe/ixgbe_ethdev.h |  1 +
>>   lib/librte_pmd_ixgbe/ixgbe_pf.c     | 25 +++++++++++++++++++++++++
>>   2 files changed, 26 insertions(+)
>>
>> diff --git a/lib/librte_pmd_ixgbe/ixgbe_ethdev.h 
>> b/lib/librte_pmd_ixgbe/ixgbe_ethdev.h
>> index ca99170..730098d 100644
>> --- a/lib/librte_pmd_ixgbe/ixgbe_ethdev.h
>> +++ b/lib/librte_pmd_ixgbe/ixgbe_ethdev.h
>> @@ -159,6 +159,7 @@ struct ixgbe_vf_info {
>>       uint16_t tx_rate[IXGBE_MAX_QUEUE_NUM_PER_VF];
>>       uint16_t vlan_count;
>>       uint8_t spoofchk_enabled;
>> +    uint8_t api_version;
>>   };
>>     /*
>> diff --git a/lib/librte_pmd_ixgbe/ixgbe_pf.c 
>> b/lib/librte_pmd_ixgbe/ixgbe_pf.c
>> index 51da1fd..495aff5 100644
>> --- a/lib/librte_pmd_ixgbe/ixgbe_pf.c
>> +++ b/lib/librte_pmd_ixgbe/ixgbe_pf.c
>> @@ -469,6 +469,28 @@ ixgbe_set_vf_lpe(struct rte_eth_dev *dev, 
>> __rte_unused uint32_t vf, uint32_t *ms
>>   }
>>     static int
>> +ixgbe_negotiate_vf_api(struct rte_eth_dev *dev, uint32_t vf, 
>> uint32_t *msgbuf)
>> +{
>> +    uint32_t api_version = msgbuf[1];
>> +    struct ixgbe_vf_info *vfinfo =
>> + *IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private);
>> +
>> +    switch (api_version) {
>> +    case ixgbe_mbox_api_10:
>> +    case ixgbe_mbox_api_11:

Why version 2.0 is not negotiated?

>> +        vfinfo[vf].api_version = (uint8_t)api_version;
>> +        return 0;
>> +    default:
>> +        break;
>> +    }
>> +
>> +    RTE_LOG(ERR, PMD, "Negotiate invalid api version %u from VF %d\n",
>> +        api_version, vf);
>> +
>> +    return -1;
>> +}
>> +
>> +static int
>>   ixgbe_rcv_msg_from_vf(struct rte_eth_dev *dev, uint16_t vf)
>>   {
>>       uint16_t mbx_size = IXGBE_VFMAILBOX_SIZE;
>> @@ -512,6 +534,9 @@ ixgbe_rcv_msg_from_vf(struct rte_eth_dev *dev, 
>> uint16_t vf)
>>       case IXGBE_VF_SET_VLAN:
>>           retval = ixgbe_vf_set_vlan(dev, vf, msgbuf);
>>           break;
>> +    case IXGBE_VF_API_NEGOTIATE:
>> +        retval = ixgbe_negotiate_vf_api(dev, vf, msgbuf);
>> +        break;
>>       default:
>>           PMD_DRV_LOG(DEBUG, "Unhandled Msg %8.8x", 
>> (unsigned)msgbuf[0]);
>>           retval = IXGBE_ERR_MBX;
>



More information about the dev mailing list