I meant in the below code snippet the function must be corrected to -

********************************
<<< file 1: /DPDK/DPDK-1.6.0/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c/1
>>> file 2: /DPDK/DPDK-1.6.0/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
********************************
-----[289 changed to 289-290]-----
<                                                     if(txm->pkt.data_len > 
(hw->cur_mtu + ETHER_HDR_LEN)) {
---
>                                                     //if(txm->pkt.data_len > 
> (hw->cur_mtu + ETHER_HDR_LEN)) {
>                                                     if(txm->pkt.data_len > 
> (hw->cur_mtu + ETHER_HDR_LEN + 4 /* 4 bytes for VLAN */)) {

From: Karmarkar Suyash
Sent: Friday, October 10, 2014 6:17 PM
To: 'dev at dpdk.org'
Subject: Bug in outgoing packet with vmxnet3 with VLAN tagging

Hello All,

When a outgoing packet is sent with data Len more than 1514 which will be a 
case in VLAN (Max 1518 ) the packet is getting dropped because of the below 
code snippet. This looks incorrect as in case of VLAN .

FUNCTION NAME: vmxnet3_xmit_pkts

/* Needs to minus ether header len */
                                                if(txm->pkt.data_len > 
(hw->cur_mtu + ETHER_HDR_LEN)) {
                                                                
PMD_TX_LOG(DEBUG, "Packet data_len higher than MTU\n");
                                                                
rte_pktmbuf_free(tx_pkts[nb_tx]);
                                                                
txq->stats.drop_total++;

                                                                nb_tx++;
                                                                continue;
                                                }


#define ETHER_ADDR_LEN  6 /**< Length of Ethernet address. */
#define ETHER_TYPE_LEN  2 /**< Length of Ethernet type field. */
#define ETHER_CRC_LEN   4 /**< Length of Ethernet CRC. */
#define ETHER_HDR_LEN   \
            (ETHER_ADDR_LEN * 2 + ETHER_TYPE_LEN) /**< Length of Ethernet 
header. */


But in case of VLAN the Ethernet header is 18 bytes. Does this mean we do not 
support VLAN for VMXNET3 PMD? Thanks.


Regards
Suyash Karmarkar

Reply via email to