X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvmxnet3%2Fvmxnet3_rxtx.c;h=e10f9ee870e82965fa08086a72a841d5b5f9dce8;hb=f28fbd1e6b502fe4c38e0a4aa862e103811b1b97;hp=dd99684bee4d5d1dbd91bb3a2b5914b954beb28b;hpb=52ec00fd1474e8f99f3da705b7efe95ba994b352;p=dpdk.git diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index dd99684bee..e10f9ee870 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -687,8 +687,7 @@ vmxnet3_guess_mss(struct vmxnet3_hw *hw, const Vmxnet3_RxCompDesc *rcd, - sizeof(struct rte_tcp_hdr); ipv4_hdr = (struct rte_ipv4_hdr *)(ptr + hlen); - hlen += (ipv4_hdr->version_ihl & RTE_IPV4_HDR_IHL_MASK) * - RTE_IPV4_IHL_MULTIPLIER; + hlen += rte_ipv4_hdr_len(ipv4_hdr); } else if (rcd->v6) { if (unlikely(slen < hlen + sizeof(struct rte_ipv6_hdr))) return hw->mtu - sizeof(struct rte_ipv6_hdr) - @@ -950,13 +949,17 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) RTE_ASSERT(rxd->btype == VMXNET3_RXD_BTYPE_BODY); - if (rxm->data_len) { + if (likely(start && rxm->data_len > 0)) { start->pkt_len += rxm->data_len; start->nb_segs++; rxq->last_seg->next = rxm; rxq->last_seg = rxm; } else { + PMD_RX_LOG(ERR, "Error received empty or out of order frame."); + rxq->stats.drop_total++; + rxq->stats.drop_err++; + rte_pktmbuf_free_seg(rxm); } }