#include <rte_pci.h>
#include <rte_malloc.h>
+#include "ethdev_driver.h"
#include "base/ixgbe_type.h"
#include "base/ixgbe_vf.h"
#include "ixgbe_ethdev.h"
static int
ixgbe_vf_representor_mac_addr_set(struct rte_eth_dev *ethdev,
- struct ether_addr *mac_addr)
+ struct rte_ether_addr *mac_addr)
{
struct ixgbe_vf_representor *representor = ethdev->data->dev_private;
representor->vf_id, mac_addr);
}
-static void
+static int
ixgbe_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
struct rte_eth_dev_info *dev_info)
{
dev_info->tx_offload_capa = 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;
+ DEV_TX_OFFLOAD_TCP_TSO | DEV_TX_OFFLOAD_MULTI_SEGS;
/**< Device TX offload capabilities. */
dev_info->speed_capa =
representor->pf_ethdev->device->name;
dev_info->switch_info.domain_id = representor->switch_domain_id;
dev_info->switch_info.port_id = representor->vf_id;
+
+ return 0;
}
static int ixgbe_vf_representor_dev_configure(
return 0;
}
-static void ixgbe_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev)
+static int ixgbe_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev)
{
+ return 0;
}
static int
representor->vf_id, on);
}
-struct eth_dev_ops ixgbe_vf_representor_dev_ops = {
+static const struct eth_dev_ops ixgbe_vf_representor_dev_ops = {
.dev_infos_get = ixgbe_vf_representor_dev_infos_get,
.dev_start = ixgbe_vf_representor_dev_start,
return -ENODEV;
ethdev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
+ ethdev->data->representor_id = representor->vf_id;
/* Set representor device ops */
ethdev->dev_ops = &ixgbe_vf_representor_dev_ops;
vf_data = *IXGBE_DEV_PRIVATE_TO_P_VFDATA(
representor->pf_ethdev->data->dev_private);
- ethdev->data->mac_addrs = (struct ether_addr *)
+ ethdev->data->mac_addrs = (struct rte_ether_addr *)
vf_data[representor->vf_id].vf_mac_addresses;
/* Link state. Inherited from PF */
}
int
-ixgbe_vf_representor_uninit(struct rte_eth_dev *ethdev __rte_unused)
+ixgbe_vf_representor_uninit(struct rte_eth_dev *ethdev)
{
+ /* mac_addrs must not be freed because part of ixgbe_vf_info */
+ ethdev->data->mac_addrs = NULL;
+
return 0;
}