Message ID | 1408456313-28812-3-git-send-email-declan.doherty@intel.com |
---|---|
State | Superseded, archived |
Headers | show |
Reviewed-by: Robert Sanford <rsanford@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@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 >
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;
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@intel.com> --- lib/librte_pmd_bond/rte_eth_bond_pmd.c | 62 ++++++++++++++++++-------------- 1 files changed, 35 insertions(+), 27 deletions(-)