net/bonding: fix packet count type for LACP
authorDavid Marchand <david.marchand@redhat.com>
Wed, 20 Mar 2019 11:47:21 +0000 (12:47 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 21 Mar 2019 20:09:16 +0000 (21:09 +0100)
Caught by code review, those variables are supposed to be on 16bits to
avoid endless loops in the (unlikely?) case where the application asks
for receiving more than 256 packets and the accumulated num_rx_total
count reaches 256:

uint16_t num_rx_total = 0;
uint8_t j, k;

j = num_rx_total;
num_rx_total += rte_eth_rx_burst();

for (k = j; k < 2 && k < num_rx_total; k++)
rte_prefetch0(rte_pktmbuf_mtod(bufs[k], void *));

while (j < num_rx_total) {
j++;
}

Fixes: 46fb43683679 ("bond: add mode 4")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/bonding/rte_eth_bond_pmd.c

index bbe2568..ae66a70 100644 (file)
@@ -405,8 +405,9 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs,
        uint8_t collecting;  /* current slave collecting status */
        const uint8_t promisc = internals->promiscuous_en;
        uint8_t subtype;
-       uint8_t j, k;
        uint16_t i;
+       uint16_t j;
+       uint16_t k;
 
        /* Copy slave list to protect against slave up/down changes during tx
         * bursting */