Signed-off-by: Declan Doherty <declan.doherty at intel.com>
---
 lib/librte_pmd_bond/rte_eth_bond_pmd.c | 62 +++++++++++++++++++---------------
 1 file changed, 35 insertions(+), 27 deletions(-)

diff --git a/lib/librte_pmd_bond/rte_eth_bond_pmd.c 
b/lib/librte_pmd_bond/rte_eth_bond_pmd.c
index aca2dcf..348e28f 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_pmd.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_pmd.c
@@ -59,33 +59,37 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf **bufs, 
uint16_t nb_pkts)

        internals = bd_rx_q->dev_private;

-       switch (internals->mode) {
-       case BONDING_MODE_ROUND_ROBIN:
-       case BONDING_MODE_BROADCAST:
-       case BONDING_MODE_BALANCE:
-               for (i = 0; i < internals->active_slave_count && nb_pkts; i++) {
-                       /* Offset of pointer to *bufs increases as packets are 
received
-                        * from other slaves */
-                       num_rx_slave = 
rte_eth_rx_burst(internals->active_slaves[i],
-                                       bd_rx_q->queue_id, bufs + num_rx_total, 
nb_pkts);
-                       if (num_rx_slave) {
-                               num_rx_total += num_rx_slave;
-                               nb_pkts -= num_rx_slave;
-                       }
+       for (i = 0; i < internals->active_slave_count && nb_pkts; i++) {
+               /* Offset of pointer to *bufs increases as packets are received
+                * from other slaves */
+               num_rx_slave = rte_eth_rx_burst(internals->active_slaves[i],
+                               bd_rx_q->queue_id, bufs + num_rx_total, 
nb_pkts);
+               if (num_rx_slave) {
+                       num_rx_total += num_rx_slave;
+                       nb_pkts -= num_rx_slave;
                }
-               break;
-       case BONDING_MODE_ACTIVE_BACKUP:
-               num_rx_slave = rte_eth_rx_burst(internals->current_primary_port,
-                               bd_rx_q->queue_id, bufs, nb_pkts);
-               if (num_rx_slave)
-                       num_rx_total = num_rx_slave;
-               break;
        }
+
        return num_rx_total;
 }

 static uint16_t
-bond_ethdev_tx_round_robin(void *queue, struct rte_mbuf **bufs,
+bond_ethdev_rx_burst_active_backup(void *queue, struct rte_mbuf **bufs,
+               uint16_t nb_pkts)
+{
+       struct bond_dev_private *internals;
+
+       /* Cast to structure, containing bonded device's port id and queue id */
+       struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)queue;
+
+       internals = bd_rx_q->dev_private;
+
+       return rte_eth_rx_burst(internals->current_primary_port,
+                       bd_rx_q->queue_id, bufs, nb_pkts);
+}
+
+static uint16_t
+bond_ethdev_tx_burst_round_robin(void *queue, struct rte_mbuf **bufs,
                uint16_t nb_pkts)
 {
        struct bond_dev_private *dev_private;
@@ -134,7 +138,7 @@ bond_ethdev_tx_round_robin(void *queue, struct rte_mbuf 
**bufs,
 }

 static uint16_t
-bond_ethdev_tx_active_backup(void *queue,
+bond_ethdev_tx_burst_active_backup(void *queue,
                struct rte_mbuf **bufs, uint16_t nb_pkts)
 {
        struct bond_dev_private *internals;
@@ -270,7 +274,8 @@ xmit_slave_hash(const struct rte_mbuf *buf, uint8_t 
slave_count, uint8_t policy)
 }

 static uint16_t
-bond_ethdev_tx_balance(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
+bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs,
+               uint16_t nb_pkts)
 {
        struct bond_dev_private *internals;
        struct bond_tx_queue *bd_tx_q;
@@ -480,22 +485,25 @@ bond_ethdev_mode_set(struct rte_eth_dev *eth_dev, int 
mode)

        switch (mode) {
        case BONDING_MODE_ROUND_ROBIN:
-               eth_dev->tx_pkt_burst = bond_ethdev_tx_round_robin;
+               eth_dev->tx_pkt_burst = bond_ethdev_tx_burst_round_robin;
+               eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
                break;
        case BONDING_MODE_ACTIVE_BACKUP:
-               eth_dev->tx_pkt_burst = bond_ethdev_tx_active_backup;
+               eth_dev->tx_pkt_burst = bond_ethdev_tx_burst_active_backup;
+               eth_dev->rx_pkt_burst = bond_ethdev_rx_burst_active_backup;
                break;
        case BONDING_MODE_BALANCE:
-               eth_dev->tx_pkt_burst = bond_ethdev_tx_balance;
+               eth_dev->tx_pkt_burst = bond_ethdev_tx_burst_balance;
+               eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
                break;
        case BONDING_MODE_BROADCAST:
                eth_dev->tx_pkt_burst = bond_ethdev_tx_burst_broadcast;
+               eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
                break;
        default:
                return -1;
        }

-       eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
        internals->mode = mode;

        return 0;
-- 
1.7.12.2

Reply via email to