Reviewed-by: Robert Sanford <rsanford at akamai.com>
>Splitting rx burst function into seperate functions to avoid the need for >a switch statement and also to match the structure of the tx burst >functions. > >Signed-off-by: Declan Doherty <declan.doherty at intel.com> >--- > lib/librte_pmd_bond/rte_eth_bond_pmd.c | 62 >++++++++++++++++++-------------- > 1 files 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 cd3eecf..683b146 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.0.7 >