From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ananyev, Konstantin" Subject: Re: [PATCH v7 9/9] net/ixgbe: add support for representor ports Date: Fri, 20 Apr 2018 13:29:06 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258AE918C6C@IRSMSX102.ger.corp.intel.com> References: <20180328135433.20203-1-declan.doherty@intel.com> <20180416130605.6509-1-declan.doherty@intel.com> <20180416130605.6509-10-declan.doherty@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: Adrien Mazarguil , "Yigit, Ferruh" , Thomas Monjalon , "Shahaf Shuler" , "Doherty, Declan" , "Awal, Mohammad Abdul" , "Horton, Remy" To: "Doherty, Declan" , "dev@dpdk.org" Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 3B3287CFA for ; Fri, 20 Apr 2018 15:29:09 +0200 (CEST) In-Reply-To: <20180416130605.6509-10-declan.doherty@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > --- /dev/null > +++ b/drivers/net/ixgbe/ixgbe_vf_representor.c > @@ -0,0 +1,217 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2018 Intel Corporation. > + */ > + > +#include > +#include > +#include > + > +#include "base/ixgbe_type.h" > +#include "base/ixgbe_vf.h" > +#include "ixgbe_ethdev.h" > +#include "ixgbe_rxtx.h" > +#include "rte_pmd_ixgbe.h" > + > + > +static int > +ixgbe_vf_representor_link_update(struct rte_eth_dev *ethdev, > + int wait_to_complete) > +{ > + struct ixgbe_vf_representor *representor =3D ethdev->data->dev_private; > + > + return ixgbe_dev_link_update_share(representor->pf_ethdev, > + wait_to_complete, 1); > +} > + > +static int > +ixgbe_vf_representor_mac_addr_set(struct rte_eth_dev *ethdev, > + struct ether_addr *mac_addr) > +{ > + struct ixgbe_vf_representor *representor =3D ethdev->data->dev_private; > + > + return rte_pmd_ixgbe_set_vf_mac_addr( > + representor->pf_ethdev->data->port_id, > + representor->vf_id, mac_addr); > +} > + > +static void > +ixgbe_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev, > + struct rte_eth_dev_info *dev_info) > +{ > + struct ixgbe_vf_representor *representor =3D ethdev->data->dev_private; > + > + struct ixgbe_hw *hw =3D IXGBE_DEV_PRIVATE_TO_HW( > + representor->pf_ethdev->data->dev_private); > + > + dev_info->device =3D representor->pf_ethdev->device; > + > + dev_info->min_rx_bufsize =3D 1024; > + /**< Minimum size of RX buffer. */ > + dev_info->max_rx_pktlen =3D 9728; > + /**< Maximum configurable length of RX pkt. */ > + dev_info->max_rx_queues =3D IXGBE_VF_MAX_RX_QUEUES; > + /**< Maximum number of RX queues. */ > + dev_info->max_tx_queues =3D IXGBE_VF_MAX_TX_QUEUES; > + /**< Maximum number of TX queues. */ Sort of generic question - for representor ports that do only control path = - shouldn't we have max_rx_queues=3Dmax_tx_queues=3D0, zero and make queue_setup/rx_burst/tx_burst, etc. to return an error?=20 > + > + dev_info->max_mac_addrs =3D hw->mac.num_rar_entries; > + /**< Maximum number of MAC addresses. */ > + > + dev_info->rx_offload_capa =3D DEV_RX_OFFLOAD_VLAN_STRIP | > + DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | > + DEV_RX_OFFLOAD_TCP_CKSUM; > + /**< Device RX offload capabilities. */ > + > + dev_info->tx_offload_capa =3D DEV_TX_OFFLOAD_VLAN_INSERT | > + DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_UDP_CKSUM | > + DEV_TX_OFFLOAD_TCP_CKSUM | DEV_TX_OFFLOAD_SCTP_CKSUM | > + DEV_TX_OFFLOAD_TCP_TSO; > + /**< Device TX offload capabilities. */ > + > + dev_info->speed_capa =3D > + representor->pf_ethdev->data->dev_link.link_speed; > + /**< Supported speeds bitmap (ETH_LINK_SPEED_). */ > + > + dev_info->switch_info.name =3D > + representor->pf_ethdev->device->name; > + dev_info->switch_info.domain_id =3D representor->switch_domain_id; > + dev_info->switch_info.port_id =3D representor->vf_id; > +} > + > +static int ixgbe_vf_representor_dev_configure( > + __rte_unused struct rte_eth_dev *dev) > +{ > + return 0; > +} > + > +static int ixgbe_vf_representor_rx_queue_setup( > + __rte_unused struct rte_eth_dev *dev, > + __rte_unused uint16_t rx_queue_id, > + __rte_unused uint16_t nb_rx_desc, > + __rte_unused unsigned int socket_id, > + __rte_unused const struct rte_eth_rxconf *rx_conf, > + __rte_unused struct rte_mempool *mb_pool) > +{ > + return 0; > +} > + > +static int ixgbe_vf_representor_tx_queue_setup( > + __rte_unused struct rte_eth_dev *dev, > + __rte_unused uint16_t rx_queue_id, > + __rte_unused uint16_t nb_rx_desc, > + __rte_unused unsigned int socket_id, > + __rte_unused const struct rte_eth_txconf *tx_conf) > +{ > + return 0; > +} > +