diff --git a/mtcp/src/dpdk_module.c b/mtcp/src/dpdk_module.c
index 33d349e..3c08e25 100644
--- a/mtcp/src/dpdk_module.c
+++ b/mtcp/src/dpdk_module.c
@@ -66,7 +66,7 @@ static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT;
/* packet memory pools for storing packet bufs */
static struct rte_mempool *pktmbuf_pool[MAX_CPUS] = {NULL};
-//#define DEBUG 1
+#define DEBUG 1
#ifdef DEBUG
/* ethernet addresses of ports */
static struct ether_addr ports_eth_addr[RTE_MAX_ETHPORTS];
@@ -79,7 +79,8 @@ static struct rte_eth_conf port_conf = {
.split_hdr_size = 0,
.header_split = 0, /**< Header Split disabled */
.hw_ip_checksum = 1, /**< IP checksum offload enabled */
- .hw_vlan_filter = 0, /**< VLAN filtering disabled */
+ .hw_vlan_filter = 1, /**< VLAN filtering disabled */
+ .hw_vlan_strip = 1, /**< VLAN strip enabled */
.jumbo_frame = 0, /**< Jumbo Frame Support disabled */
.hw_strip_crc = 1, /**< CRC stripped by hardware */
},
@@ -127,6 +128,7 @@ static const struct rte_eth_txconf tx_conf = {
.txq_flags = 0x0,
};
+
struct mbuf_table {
unsigned len; /* length of queued packets */
struct rte_mbuf *m_table[MAX_PKT_BURST];
@@ -266,6 +268,8 @@ dpdk_send_pkts(struct mtcp_thread_context *ctxt, int nif)
ctxt->cpu, i, nif);
exit(EXIT_FAILURE);
}
+ dpc->wmbufs[nif].m_table[i]->ol_flags = PKT_TX_VLAN_PKT;
+ dpc->wmbufs[nif].m_table[i]->vlan_tci = 4094;
}
/* reset the len of mbufs var after flushing of packets */
dpc->wmbufs[nif].len = 0;
@@ -534,6 +538,12 @@ dpdk_load_module(void)
if (ret < 0)
rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%u\n",
ret, (unsigned) portid);
+
+ ret = rte_eth_dev_vlan_filter(portid, 4094, 1);
+
+ if (ret < 0)
+ rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%u\n",
+ ret, (unsigned) portid);
/* init one RX queue per CPU */
fflush(stdout);
No comments:
Post a Comment