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


Reply via email to