Hello all,
I use X553 SFP+ port to configure SRIOV mode. In the dpdk application, a vlan
interface is configured on a VF, and vlan filter table is configured
appropriately. All unicast packets are passed to/from the application without
any issue, however, multicast packets are filtered out by PF (the last
statement is my conclusion, as soon as promisc mode is enabled on PF, all works
fine).
VF is configured additionally to be in promisc mode and in allmulti. Are there
any limitations on using vlan on SRIOV VF?
Below is the output of eth_dev->data:
rx_mbuf_alloc_failed = 0, mac_addrs = 0x10ea7f200, mac_pool_sel = {0 <repeats
128 times>}, hash_mac_addrs = 0x0, port_id = 2, promiscuous= 1 '\001',
scattered_rx = 1 '\001', all_multicast= 1 '\001', dev_started = 1 '\001', lro
= 0 '\000', rx_queue_state = '\000' <repeats 1023 times>,
tx_queue_state = '\000' <repeats 1023 times>, dev_flags = 64, numa_node = 0,
vlan_filter_conf= {ids = {1024, 0 <repeats 63 times>}},
More detailed:
(gdb) p *rte_eth_devices[2].data
$3 = {name = "05:10.1", '\000' <repeats 56 times>, rx_queues = 0x1118ff400,
tx_queues = 0x1118ff340, nb_rx_queues = 2, nb_tx_queues = 2, sriov = {active =
0 '\000',
nb_q_per_pool = 0 '\000', def_vmdq_idx = 0, def_pool_q_idx = 0},
dev_private = 0x10ea7f580, dev_link = {link_speed = 0, link_duplex = 0,
link_autoneg = 1,
link_status = 0}, dev_conf = {link_speeds = 0, rxmode = {mq_mode =
ETH_MQ_RX_RSS, max_rx_pkt_len = 9728, max_lro_pkt_size = 0, split_hdr_size = 0,
offloads = 535041,
reserved_64s = {0, 0}, reserved_ptrs = {0x0, 0x0}}, txmode = {mq_mode =
ETH_MQ_TX_NONE, offloads = 32768, pvid = 0, hw_vlan_reject_tagged = 0 '\000',
hw_vlan_reject_untagged = 0 '\000', hw_vlan_insert_pvid = 0 '\000',
reserved_64s = {0, 0}, reserved_ptrs = {0x0, 0x0}}, lpbk_mode = 0, rx_adv_conf
= {rss_conf = {
rss_key = 0x0, rss_key_len = 0 '\000', rss_hf = 232756}, vmdq_dcb_conf
= {nb_queue_pools = (unknown: 0), enable_default_pool = 0 '\000', default_pool
= 0 '\000',
nb_pool_maps = 0 '\000', pool_map = {{vlan_id = 0, pools = 0} <repeats
64 times>}, dcb_tc = "\000\000\000\000\000\000\000"}, dcb_rx_conf = {nb_tcs =
(unknown: 0),
dcb_tc = "\000\000\000\000\000\000\000"}, vmdq_rx_conf =
{nb_queue_pools = (unknown: 0), enable_default_pool = 0 '\000', default_pool =
0 '\000',
enable_loop_back = 0 '\000', nb_pool_maps = 0 '\000', rx_mode = 0,
pool_map = {{vlan_id = 0, pools = 0} <repeats 64 times>}}}, tx_adv_conf =
{vmdq_dcb_tx_conf = {
nb_queue_pools = (unknown: 0), dcb_tc =
"\000\000\000\000\000\000\000"}, dcb_tx_conf = {nb_tcs = (unknown: 0), dcb_tc =
"\000\000\000\000\000\000\000"},
vmdq_tx_conf = {nb_queue_pools = (unknown: 0)}}, dcb_capability_en = 0,
fdir_conf = {mode = RTE_FDIR_MODE_NONE, pballoc = RTE_FDIR_PBALLOC_64K,
status = RTE_FDIR_NO_REPORT_STATUS, drop_queue = 0 '\000', mask =
{vlan_tci_mask = 0, ipv4_mask = {src_ip = 0, dst_ip = 0, tos = 0 '\000', ttl =
0 '\000',
proto = 0 '\000'}, ipv6_mask = {src_ip = {0, 0, 0, 0}, dst_ip = {0,
0, 0, 0}, tc = 0 '\000', proto = 0 '\000', hop_limits = 0 '\000'},
src_port_mask = 0,
dst_port_mask = 0, mac_addr_byte_mask = 0 '\000', tunnel_id_mask = 0,
tunnel_type_mask = 0 '\000'}, flex_conf = {nb_payloads = 0, nb_flexmasks = 0,
flex_set = {{
type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {
type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {
type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {
type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}, {type = RTE_ETH_PAYLOAD_UNKNOWN, src_offset = {0 <repeats 16
times>}}}, flex_mask = {{
flow_type = 0, mask = '\000' <repeats 15 times>} <repeats 24
times>}}}, intr_conf = {lsc = 0, rxq = 0, rmv = 0}}, mtu = 1500,
min_rx_buf_size = 2176,
rx_mbuf_alloc_failed = 0, mac_addrs = 0x10ea7f200, mac_pool_sel = {0 <repeats
128 times>}, hash_mac_addrs = 0x0, port_id = 2, promiscuous = 1 '\001',
scattered_rx = 1 '\001', all_multicast = 1 '\001', dev_started = 1 '\001',
lro = 0 '\000', rx_queue_state = '\000' <repeats 1023 times>,
tx_queue_state = '\000' <repeats 1023 times>, dev_flags = 64, numa_node = 0,
vlan_filter_conf = {ids = {1024, 0 <repeats 63 times>}}, owner = {id = 0,
name = '\000' <repeats 63 times>}, representor_id = 0, flow_ops_mutex =
{__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0,
__spins = 0,
__elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000'
<repeats 39 times>, __align = 0}, reserved_64s = {0, 0, 0, 0}, reserved_ptrs =
{0x0, 0x0, 0x0,
0x0}}
What am I missing in my config to make it work for multicast packets?
Kind regards,
Renata