From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from proxy.6wind.com (host.76.145.23.62.rev.coltfrance.com [62.23.145.76]) by dpdk.org (Postfix) with ESMTP id 8B2221396 for ; Wed, 15 Mar 2017 16:10:29 +0100 (CET) Received: from 6wind.com (unknown [10.16.0.184]) by proxy.6wind.com (Postfix) with SMTP id 4A520285EE; Wed, 15 Mar 2017 16:10:23 +0100 (CET) Received: by 6wind.com (sSMTP sendmail emulation); Wed, 15 Mar 2017 16:09:15 +0100 From: Pascal Mazon To: keith.wiles@intel.com Cc: dev@dpdk.org, Pascal Mazon Date: Wed, 15 Mar 2017 16:09:08 +0100 Message-Id: X-Mailer: git-send-email 2.8.0.rc0 Subject: [dpdk-dev] [PATCH] net/tap: do not send packets larger than MTU X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Mar 2017 15:10:29 -0000 Signed-off-by: Pascal Mazon --- drivers/net/tap/rte_eth_tap.c | 6 ++++++ drivers/net/tap/rte_eth_tap.h | 1 + 2 files changed, 7 insertions(+) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 69fa282ca176..17496501e6ba 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -340,14 +340,19 @@ pmd_tx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) struct tx_queue *txq = queue; uint16_t num_tx = 0; unsigned long num_tx_bytes = 0; + uint32_t max_size; int i, n; if (unlikely(nb_pkts == 0)) return 0; + max_size = *txq->mtu + (ETHER_HDR_LEN + ETHER_CRC_LEN + 4); for (i = 0; i < nb_pkts; i++) { /* copy the tx frame data */ mbuf = bufs[num_tx]; + /* stats.errs will be incremented */ + if (rte_pktmbuf_pkt_len(mbuf) > max_size) + break; n = write(txq->fd, rte_pktmbuf_mtod(mbuf, void *), rte_pktmbuf_pkt_len(mbuf)); @@ -707,6 +712,7 @@ tap_setup_queue(struct rte_eth_dev *dev, rx->fd = fd; tx->fd = fd; + tx->mtu = &dev->data->mtu; return fd; } diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h index 1ad6ad88796a..9546411bd790 100644 --- a/drivers/net/tap/rte_eth_tap.h +++ b/drivers/net/tap/rte_eth_tap.h @@ -60,6 +60,7 @@ struct rx_queue { struct tx_queue { int fd; + uint16_t *mtu; /* Pointer to MTU from dev_data */ struct pkt_stats stats; /* Stats for this TX queue */ }; -- 2.8.0.rc0