net/thunderx: query supported packet types

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>
Signed-off-by: Radoslaw Biernacki <rad@semihalf.com>
This commit is contained in:
Jerin Jacob 2016-06-17 18:59:48 +05:30 committed by Bruce Richardson
parent e2d7fc9f0a
commit 1c80e4fd49

View File

@ -260,6 +260,45 @@ nicvf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
stats->oerrors = port_stats.tx_drops;
}
static const uint32_t *
nicvf_dev_supported_ptypes_get(struct rte_eth_dev *dev)
{
size_t copied;
static uint32_t ptypes[32];
struct nicvf *nic = nicvf_pmd_priv(dev);
static const uint32_t ptypes_pass1[] = {
RTE_PTYPE_L3_IPV4,
RTE_PTYPE_L3_IPV4_EXT,
RTE_PTYPE_L3_IPV6,
RTE_PTYPE_L3_IPV6_EXT,
RTE_PTYPE_L4_TCP,
RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_FRAG,
};
static const uint32_t ptypes_pass2[] = {
RTE_PTYPE_TUNNEL_GRE,
RTE_PTYPE_TUNNEL_GENEVE,
RTE_PTYPE_TUNNEL_VXLAN,
RTE_PTYPE_TUNNEL_NVGRE,
};
static const uint32_t ptypes_end = RTE_PTYPE_UNKNOWN;
copied = sizeof(ptypes_pass1);
memcpy(ptypes, ptypes_pass1, copied);
if (nicvf_hw_version(nic) == NICVF_PASS2) {
memcpy((char *)ptypes + copied, ptypes_pass2,
sizeof(ptypes_pass2));
copied += sizeof(ptypes_pass2);
}
memcpy((char *)ptypes + copied, &ptypes_end, sizeof(ptypes_end));
if (dev->rx_pkt_burst == nicvf_recv_pkts ||
dev->rx_pkt_burst == nicvf_recv_pkts_multiseg)
return ptypes;
return NULL;
}
static void
nicvf_dev_stats_reset(struct rte_eth_dev *dev)
{
@ -888,6 +927,7 @@ static const struct eth_dev_ops nicvf_eth_dev_ops = {
.stats_reset = nicvf_dev_stats_reset,
.promiscuous_enable = nicvf_dev_promisc_enable,
.dev_infos_get = nicvf_dev_info_get,
.dev_supported_ptypes_get = nicvf_dev_supported_ptypes_get,
.mtu_set = nicvf_dev_set_mtu,
.reta_update = nicvf_dev_reta_update,
.reta_query = nicvf_dev_reta_query,