Hello all,
I'm currently trying hardware filtering on an Intel X710 NIC and i face several
problems. I will briefly try to present what I want to achieve : I have 2
multicast streams coming on one port of my NIC with 2 different multicast
groups/ports, and I want to filter and redirect them to 2 RX queues to be able
to retrieve packets into 2 different processes.
To do that, I first tried a simple 2-tuple filter with IP/port. But when using
rte_eth_dev_filter_supported(portid, RTE_ETH_FILTER_NTUPLE) I get an error
(error=-22 invalid argument ?) which I find strange because when using ethtool
-k on the interface, I have ntuple-filters: on, so I guessed it was supported
on this NIC.
Then I wanted to try flow director filters (should be supported as stated by
the Intel documentation on this NIC). I tried using testpmd app to see what was
supported and it seems signature mode is not. Perfect mode is accepted but I
can't apply any mask on filters fields. In my own program, I configure the
port's fdir_conf as follows :
struct rte_fdir_conf fdir_conf {
.mode = RTE_FDIR_MODE_PERFECT,
.pballoc = RTE_FDIR_PBALLOC_64K,
.status = RTE_FDIR_REPORT_STATUS,
.drop_queue = 127,
.mask = {
.vlan_tci_mask = 0x0,
.ipv4_mask = {
.src_ip = 0xFFFFFFFF,
.dst_ip = 0xFFFFFFFF,
},
.ipv6_mask = {
.src_ip = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF},
.dst_ip = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF},
},
.src_port_mask = 0xFFFF,
.dst_port_mask = 0xFFFF,
},
};
When I then use rte_eth_dev_fdir_set_masks or
rte_eth_dev_fdir_add_perfect_filter functions they return an -95 error
(unsupported by hardware ?). So I looked into the testpmd code and found that
it is using rte_eth_dev_filter_ctrl function. This one using a fdir filter is
accepted but I'm unable to set the filter properly. Indeed, I just want to
filter on dst_ip and dst_port so I don't really know what to set in filter's
other fields (flexbytes, src_ip ...) as I can't apply a mask.
I hope someone could help me on this topic (I know should miss something, but
what?).
Thanks a lot,
Best regards,
Sylvain