summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIdo Barnea <ibarnea@cisco.com>2017-01-01 13:35:55 +0200
committerIdo Barnea <ibarnea@cisco.com>2017-01-01 13:35:55 +0200
commitfda9842014b327b1bc7cbeeea473a291568b9d1e (patch)
treeeea1fa11c743921e394789490495c1bd66293cf6 /src
parent355c20f88d2013e7e8d22b27a49297dc92101aa2 (diff)
Fix --send-debug-pkt test so that VIC card will be able to work with less patches
Signed-off-by: Ido Barnea <ibarnea@cisco.com>
Diffstat (limited to 'src')
-rw-r--r--src/debug.cpp4
-rw-r--r--src/dpdk/drivers/net/enic/base/vnic_dev.c6
-rw-r--r--src/dpdk/drivers/net/enic/enic_clsf.c11
-rw-r--r--src/pkt_gen.cpp9
4 files changed, 12 insertions, 18 deletions
diff --git a/src/debug.cpp b/src/debug.cpp
index 5a881dd9..3e35a862 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -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},
diff --git a/src/dpdk/drivers/net/enic/base/vnic_dev.c b/src/dpdk/drivers/net/enic/base/vnic_dev.c
index e50b90e7..dddb1dcd 100644
--- a/src/dpdk/drivers/net/enic/base/vnic_dev.c
+++ b/src/dpdk/drivers/net/enic/base/vnic_dev.c
@@ -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");
diff --git a/src/dpdk/drivers/net/enic/enic_clsf.c b/src/dpdk/drivers/net/enic/enic_clsf.c
index 8f68faab..1610951d 100644
--- a/src/dpdk/drivers/net/enic/enic_clsf.c
+++ b/src/dpdk/drivers/net/enic/enic_clsf.c
@@ -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:
diff --git a/src/pkt_gen.cpp b/src/pkt_gen.cpp
index 656b1b06..9f6a3d34 100644
--- a/src/pkt_gen.cpp
+++ b/src/pkt_gen.cpp
@@ -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) {