bond: fix naming inconsistency
[dpdk.git] / lib / librte_pmd_bond / rte_eth_bond_pmd.c
index 08d3b5f..6e770af 100644 (file)
@@ -59,36 +59,41 @@ 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 *dev_private;
+       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 *internals;
        struct bond_tx_queue *bd_tx_q;
 
        struct rte_mbuf *slave_bufs[RTE_MAX_ETHPORTS][nb_pkts];
@@ -103,13 +108,13 @@ bond_ethdev_tx_round_robin(void *queue, struct rte_mbuf **bufs,
        int i, cs_idx = 0;
 
        bd_tx_q = (struct bond_tx_queue *)queue;
-       dev_private = bd_tx_q->dev_private;
+       internals = bd_tx_q->dev_private;
 
        /* Copy slave list to protect against slave up/down changes during tx
         * bursting */
-       num_of_slaves = dev_private->active_slave_count;
-       memcpy(slaves, dev_private->active_slaves,
-                       sizeof(dev_private->active_slaves[0]) * num_of_slaves);
+       num_of_slaves = internals->active_slave_count;
+       memcpy(slaves, internals->active_slaves,
+                       sizeof(internals->active_slaves[0]) * num_of_slaves);
 
        if (num_of_slaves < 1)
                return num_tx_total;
@@ -134,7 +139,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 +275,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;
@@ -318,6 +324,7 @@ bond_ethdev_tx_balance(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
        return num_tx_total;
 }
 
+#ifdef RTE_MBUF_REFCNT
 static uint16_t
 bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs,
                uint16_t nb_pkts)
@@ -355,6 +362,7 @@ bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs,
 
        return num_tx_total;
 }
+#endif
 
 void
 link_properties_set(struct rte_eth_dev *bonded_eth_dev,
@@ -431,7 +439,9 @@ mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev)
        switch (internals->mode) {
        case BONDING_MODE_ROUND_ROBIN:
        case BONDING_MODE_BALANCE:
+#ifdef RTE_MBUF_REFCNT
        case BONDING_MODE_BROADCAST:
+#endif
                for (i = 0; i < internals->slave_count; i++) {
                        if (mac_address_set(&rte_eth_devices[internals->slaves[i]],
                                        bonded_eth_dev->data->mac_addrs)) {
@@ -480,22 +490,27 @@ 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;
+#ifdef RTE_MBUF_REFCNT
        case BONDING_MODE_BROADCAST:
                eth_dev->tx_pkt_burst = bond_ethdev_tx_burst_broadcast;
+               eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
                break;
+#endif
        default:
                return -1;
        }
 
-       eth_dev->rx_pkt_burst = bond_ethdev_rx_burst;
        internals->mode = mode;
 
        return 0;
@@ -874,7 +889,9 @@ bond_ethdev_promiscuous_enable(struct rte_eth_dev *eth_dev)
        /* Promiscuous mode is propagated to all slaves */
        case BONDING_MODE_ROUND_ROBIN:
        case BONDING_MODE_BALANCE:
+#ifdef RTE_MBUF_REFCNT
        case BONDING_MODE_BROADCAST:
+#endif
                for (i = 0; i < internals->slave_count; i++)
                        rte_eth_promiscuous_enable(internals->slaves[i]);
                break;
@@ -898,7 +915,9 @@ bond_ethdev_promiscuous_disable(struct rte_eth_dev *dev)
        /* Promiscuous mode is propagated to all slaves */
        case BONDING_MODE_ROUND_ROBIN:
        case BONDING_MODE_BALANCE:
+#ifdef RTE_MBUF_REFCNT
        case BONDING_MODE_BROADCAST:
+#endif
                for (i = 0; i < internals->slave_count; i++)
                        rte_eth_promiscuous_disable(internals->slaves[i]);
                break;
@@ -918,6 +937,7 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type,
        struct rte_eth_link link;
 
        int i, valid_slave = 0, active_pos = -1;
+       uint8_t lsc_flag = 0;
 
        if (type != RTE_ETH_EVENT_INTR_LSC || param == NULL)
                return;
@@ -963,6 +983,7 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type,
                        /* If first active slave, then change link status */
                        bonded_eth_dev->data->dev_link.link_status = 1;
                        internals->current_primary_port = port_id;
+                       lsc_flag = 1;
 
                        /* Inherit eth dev link properties from first active slave */
                        link_properties_set(bonded_eth_dev,
@@ -987,6 +1008,7 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type,
                /* No active slaves, change link status to down and reset other
                 * link properties */
                if (internals->active_slave_count < 1) {
+                       lsc_flag = 1;
                        bonded_eth_dev->data->dev_link.link_status = 0;
 
                        link_properties_reset(bonded_eth_dev);
@@ -1002,6 +1024,9 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type,
                                internals->current_primary_port = internals->primary_port;
                }
        }
+
+       if (lsc_flag)
+               _rte_eth_dev_callback_process(bonded_eth_dev, RTE_ETH_EVENT_INTR_LSC);
 }
 
 struct eth_dev_ops default_dev_ops = {