ixgbe: fix number of segments with vector scattered Rx
[dpdk.git] / drivers / net / ixgbe / ixgbe_rxtx_vec.c
index 9c5390e..1c16dec 100644 (file)
@@ -497,6 +497,8 @@ reassemble_packets(struct ixgbe_rx_queue *rxq, struct rte_mbuf **rx_bufs,
                                else {
                                        /* free up last mbuf */
                                        struct rte_mbuf *secondlast = start;
+
+                                       start->nb_segs--;
                                        while (secondlast->next != end)
                                                secondlast = secondlast->next;
                                        secondlast->data_len -= (rxq->crc_len -
@@ -549,10 +551,10 @@ ixgbe_recv_scattered_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
                return 0;
 
        /* happy day case, full burst + no packets to be joined */
-       const uint32_t *split_fl32 = (uint32_t *)split_flags;
+       const uint64_t *split_fl64 = (uint64_t *)split_flags;
        if (rxq->pkt_first_seg == NULL &&
-                       split_fl32[0] == 0 && split_fl32[1] == 0 &&
-                       split_fl32[2] == 0 && split_fl32[3] == 0)
+                       split_fl64[0] == 0 && split_fl64[1] == 0 &&
+                       split_fl64[2] == 0 && split_fl64[3] == 0)
                return nb_bufs;
 
        /* reassemble any packets that need reassembly*/