def METHOD_NAME(ptfadapter, duthosts, rand_one_dut_hostname,
                        rand_selected_dut, tbinfo, ports_list): # noqa F811
    """
    Send tagged GARP packets from each port.
    Verify packets egress without tag from ports whose PVID same with ingress port.
    Verify packets egress with tag from ports who include VLAN ID but PVID different from ingress port.
    verify show arp command on DUT.
    """
    duthost = duthosts[rand_one_dut_hostname]
    router_mac = duthost.facts['router_mac']
    vlan_ports_list = running_vlan_ports_list(duthosts, rand_one_dut_hostname, rand_selected_dut, tbinfo, ports_list)
    for vlan_port in vlan_ports_list:
        port_index = vlan_port["port_index"][0]
        # Send GARP packets to switch to populate the arp table with dummy MACs for each port
        # Totally 10 dummy MACs for each port, send 1 packet for each dummy MAC
        # ARP table will be cleaned up before each iteration, so there won't be any conflict MAC and IP
        dummy_macs = ['{}:{:02x}:{:02x}'.format(DUMMY_MAC_PREFIX, port_index & 0xFF, i+1)
                      for i in range(DUMMY_ARP_COUNT)]
        dummy_ips = ['{}.{:d}.{:d}'.format(DUMMY_IP_PREFIX, port_index & 0xFF, i+1)
                     for i in range(DUMMY_ARP_COUNT)]
        for permit_vlanid in map(int, vlan_port["permit_vlanid"]):
            logger.info('Test ARP: interface %s, VLAN %u' % (vlan_port["dev"], permit_vlanid))
            # Perform ARP clean up
            arp_cleanup(duthost)
            for i in range(DUMMY_ARP_COUNT):
                pkt = build_arp_packet(permit_vlanid, dummy_macs[i], router_mac, dummy_ips[i])
                logger.info("Send tagged({}) packet from {} ...".format(permit_vlanid, port_index))
                testutils.send(ptfadapter, port_index, pkt)
            try:
                res = duthost.command('show arp')
                assert res['rc'] == 0
                logger.info('"show arp" output on DUT:\n{}'.format(pprint.pformat(res['stdout_lines'])))
                arp_cnt = 0
                for arp_entry in res['stdout_lines']:
                    # Address MacAddress Iface Vlan
                    items = arp_entry.split()
                    if len(items) != 4:
                        continue
                    # Vlan must be number
                    if not items[3].isdigit():
                        continue
                    arp_cnt += 1
                    ip = items[0]
                    mac = items[1]
                    ifname = items[2]
                    vlan_id = int(items[3])
                    assert ip in dummy_ips
                    assert mac in dummy_macs
                    # 'show arp' command gets iface from FDB table,
                    # if 'show arp' command was earlier than FDB table update, ifname would be '-'
                    if ifname == '-':
                        logger.info('Ignore unknown iface...')
                    else:
                        assert ifname == vlan_port["dev"]
                    assert vlan_id == permit_vlanid
                assert arp_cnt == DUMMY_ARP_COUNT, "Expect {} entries, but {} found".format(DUMMY_ARP_COUNT, arp_cnt)
            except Exception as detail:
                logger.error("Except: {}".format(detail))
                raise