#include <rte_pci.h>
#include <rte_malloc.h>
+#include "ethdev_driver.h"
#include "base/i40e_type.h"
#include "base/virtchnl.h"
#include "i40e_ethdev.h"
int wait_to_complete)
{
struct i40e_vf_representor *representor = ethdev->data->dev_private;
+ struct rte_eth_dev *dev =
+ &rte_eth_devices[representor->adapter->pf.dev_data->port_id];
- return i40e_dev_link_update(representor->adapter->eth_dev,
- wait_to_complete);
+ return i40e_dev_link_update(dev, wait_to_complete);
}
static int
i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
struct rte_eth_dev_info *dev_info)
{
struct i40e_vf_representor *representor = ethdev->data->dev_private;
+ struct rte_eth_dev_data *pf_dev_data =
+ representor->adapter->pf.dev_data;
/* get dev info for the vdev */
dev_info->device = ethdev->device;
DEV_RX_OFFLOAD_QINQ_STRIP |
DEV_RX_OFFLOAD_IPV4_CKSUM |
DEV_RX_OFFLOAD_UDP_CKSUM |
- DEV_RX_OFFLOAD_TCP_CKSUM;
+ DEV_RX_OFFLOAD_TCP_CKSUM |
+ DEV_RX_OFFLOAD_VLAN_FILTER;
dev_info->tx_offload_capa =
DEV_TX_OFFLOAD_MULTI_SEGS |
DEV_TX_OFFLOAD_VLAN_INSERT |
};
dev_info->switch_info.name =
- representor->adapter->eth_dev->device->name;
+ rte_eth_devices[pf_dev_data->port_id].device->name;
dev_info->switch_info.domain_id = representor->switch_domain_id;
dev_info->switch_info.port_id = representor->vf_id;
return 0;
}
-static void
+static int
i40e_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev)
{
+ return 0;
}
static int
int ret;
ret = rte_pmd_i40e_get_vf_native_stats(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, &native_stats);
if (ret == 0) {
i40evf_stat_update_48(
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_get_vf_native_stats(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, &representor->stats_offset);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_unicast_promisc(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, 1);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_unicast_promisc(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, 0);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_multicast_promisc(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, 1);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_multicast_promisc(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, 0);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
rte_pmd_i40e_remove_vf_mac_addr(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, ðdev->data->mac_addrs[index]);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_mac_addr(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, mac_addr);
}
uint64_t vf_mask = 1ULL << representor->vf_id;
return rte_pmd_i40e_set_vf_vlan_filter(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
vlan_id, vf_mask, on);
}
struct i40e_pf *pf;
uint32_t vfid;
- pdev = representor->adapter->eth_dev;
+ pdev = &rte_eth_devices[representor->adapter->pf.dev_data->port_id];
vfid = representor->vf_id;
if (!is_i40e_supported(pdev)) {
struct i40e_vf_representor *representor = ethdev->data->dev_private;
rte_pmd_i40e_set_vf_vlan_stripq(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, on);
}
struct i40e_vf_representor *representor = ethdev->data->dev_private;
return rte_pmd_i40e_set_vf_vlan_insert(
- representor->adapter->eth_dev->data->port_id,
+ representor->adapter->pf.dev_data->port_id,
representor->vf_id, vlan_id);
}
((struct i40e_vf_representor *)init_params)->adapter;
pf = I40E_DEV_PRIVATE_TO_PF(
- representor->adapter->eth_dev->data->dev_private);
+ representor->adapter->pf.dev_data->dev_private);
if (representor->vf_id >= pf->vf_num)
return -ENODEV;
return -ENODEV;
}
- ethdev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
+ ethdev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR |
+ RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
ethdev->data->representor_id = representor->vf_id;
/* Setting the number queues allocated to the VF */
ethdev->data->mac_addrs = &vf->mac_addr;
/* Link state. Inherited from PF */
- link = &representor->adapter->eth_dev->data->dev_link;
+ link = &representor->adapter->pf.dev_data->dev_link;
ethdev->data->dev_link.link_speed = link->link_speed;
ethdev->data->dev_link.link_duplex = link->link_duplex;