Fix --send-debug-pkt test so that VIC card will be able to work with less patches 20/5220/1
authorIdo Barnea <[email protected]>
Sun, 1 Jan 2017 11:35:55 +0000 (13:35 +0200)
committerIdo Barnea <[email protected]>
Sun, 1 Jan 2017 11:35:55 +0000 (13:35 +0200)
Signed-off-by: Ido Barnea <[email protected]>
src/debug.cpp
src/dpdk/drivers/net/enic/base/vnic_dev.c
src/dpdk/drivers/net/enic/enic_clsf.c
src/pkt_gen.cpp

index 5a881dd..3e35a86 100644 (file)
@@ -290,8 +290,8 @@ struct pkt_params {
 };
 
 struct pkt_params test_pkts[] = {
-    {"ARP", 1, IPPROTO_UDP, 255, 5, 0, ZERO},
-    {"VLAN ARP", 1, IPPROTO_UDP, 255, 5, DPF_VLAN, ZERO},
+    {"ARP req", 1, IPPROTO_UDP, 255, 5, 0, ZERO},
+    {"VLAN ARP req", 1, IPPROTO_UDP, 255, 5, DPF_VLAN, ZERO},
     {"ipv4 TCP ttl 255", 4, IPPROTO_TCP, 255, 5, 0, STF},
     {"ipv4 TCP ttl 246", 4, IPPROTO_TCP, 246, 5, 0, STF},
     {"ipv4 TCP ttl 245", 4, IPPROTO_TCP, 245, 5, 0, ZERO},
index e50b90e..dddb1dc 100644 (file)
@@ -667,12 +667,8 @@ int vnic_dev_packet_filter(struct vnic_dev *vdev, int directed, int multicast,
             (promisc ? CMD_PFILTER_PROMISCUOUS : 0) |
             (allmulti ? CMD_PFILTER_ALL_MULTICAST : 0);
 
-#define TREX_PATCH
-#ifdef TREX_PATCH
-       err = vnic_dev_cmd(vdev, CMD_PACKET_FILTER_ALL, &a0, &a1, wait);
-#else
        err = vnic_dev_cmd(vdev, CMD_PACKET_FILTER, &a0, &a1, wait);
-#endif
+
        if (err)
                pr_err("Can't set packet filter\n");
 
index 8f68faa..1610951 100644 (file)
@@ -145,7 +145,7 @@ copy_fltr_recv_all(struct filter_v2 *fltr, struct rte_eth_fdir_input *input,
     memset(&eth_mask, 0, sizeof(eth_mask));
     memset(&eth_val, 0, sizeof(eth_val));
 
-    eth_val.ether_type = 0x0806;
+    eth_val.ether_type = 0xdead;
     eth_mask.ether_type = 0;
 
     gp->position = 0;
@@ -381,14 +381,6 @@ int enic_fdir_del_fltr(struct enic *enic, struct rte_eth_fdir_filter *params)
                /* The entry is present in the table */
                key = enic->fdir.nodes[pos];
 
-#ifdef TREX_PATCH
-        switch (params->soft_id) {
-        case 100:
-            // remove promisc when we delete 'receive all' filter
-            vnic_dev_packet_filter(enic->vdev, 1, 1, 1, 0, 1);
-            break;
-        }
-#endif
                /* Delete the filter */
                vnic_dev_classifier(enic->vdev, CLSF_DEL,
                        &key->fltr_id, NULL);
@@ -498,7 +490,6 @@ int enic_fdir_add_fltr(struct enic *enic, struct rte_eth_fdir_filter *params)
 #ifdef TREX_PATCH
     switch (params->soft_id) {
     case 100:
-        vnic_dev_packet_filter(enic->vdev, 1, 1, 1, 1, 1);
         copy_fltr_recv_all(&fltr, &params->input, &enic->rte_dev->data->dev_conf.fdir_conf.mask);
         break;
     default:
index 656b1b0..9f6a3d3 100644 (file)
@@ -123,6 +123,9 @@ char *CTestPktGen::create_test_pkt(uint16_t l3_type, uint16_t l4_proto, uint8_t
             pkt_size += sizeof(struct CRx_check_header);
         }
         break;
+    case EthernetHeader::Protocol::ARP:
+        pkt_size += sizeof(ArpHdr);
+        break;
     }
 
     switch (l4_proto) {
@@ -192,9 +195,13 @@ char *CTestPktGen::create_test_pkt(uint16_t l3_type, uint16_t l4_proto, uint8_t
         ipv6->setPayloadLen(pkt_size - 14 - sizeof(ipv6_header));
         ipv6->setFlowLabel(ip_id);
         break;
+    case EthernetHeader::Protocol::ARP:
+        uint16_t vlan = (flags & DPF_VLAN) ? 200 : 0;
+        create_arp_req((uint8_t *)p_start, 0x01020304, 0x05060708, src_mac, vlan, 0);
+        return p_start;
+        break;
     }
 
-
     struct TCPHeader *tcp = (TCPHeader *)p;
     struct ICMPHeader *icmp= (ICMPHeader *)p;
     switch (l4_proto) {