[dpdk-dev] [PATCH v4 2/6] ixgbe: Negotiate VF API version
Vlad Zolotarov
vladz at cloudius-systems.com
Sun Jan 4 09:26:39 CET 2015
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>
> ---
> 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:
> + 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