net/sfc/base: move limits config to ef10 NIC board config
[dpdk.git] / drivers / net / bonding / rte_eth_bond_api.c
index 534a890..f854b73 100644 (file)
@@ -6,7 +6,7 @@
 
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
-#include <rte_ethdev.h>
+#include <rte_ethdev_driver.h>
 #include <rte_tcp.h>
 #include <rte_bus_vdev.h>
 #include <rte_kvargs.h>
@@ -242,9 +242,6 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
                return -1;
        }
 
-       /* Add slave details to bonded device */
-       slave_eth_dev->data->dev_flags |= RTE_ETH_DEV_BONDED_SLAVE;
-
        rte_eth_dev_info_get(slave_port_id, &dev_info);
        if (dev_info.max_rx_pktlen < internals->max_rx_pktlen) {
                RTE_BOND_LOG(ERR, "Slave (port %u) max_rx_pktlen too small",
@@ -262,8 +259,13 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
        if (internals->slave_count < 1) {
                /* if MAC is not user defined then use MAC of first slave add to
                 * bonded device */
-               if (!internals->user_defined_mac)
-                       mac_address_set(bonded_eth_dev, slave_eth_dev->data->mac_addrs);
+               if (!internals->user_defined_mac) {
+                       if (mac_address_set(bonded_eth_dev,
+                                           slave_eth_dev->data->mac_addrs)) {
+                               RTE_BOND_LOG(ERR, "Failed to set MAC address");
+                               return -1;
+                       }
+               }
 
                /* Inherit eth dev link properties from first slave */
                link_properties_set(bonded_eth_dev,
@@ -316,18 +318,21 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id)
 
        internals->slave_count++;
 
-       /* Update all slave devices MACs*/
-       mac_address_slaves_update(bonded_eth_dev);
-
        if (bonded_eth_dev->data->dev_started) {
                if (slave_configure(bonded_eth_dev, slave_eth_dev) != 0) {
-                       slave_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDED_SLAVE);
+                       internals->slave_count--;
                        RTE_BOND_LOG(ERR, "rte_bond_slaves_configure: port=%d",
                                        slave_port_id);
                        return -1;
                }
        }
 
+       /* Add slave details to bonded device */
+       slave_eth_dev->data->dev_flags |= RTE_ETH_DEV_BONDED_SLAVE;
+
+       /* Update all slave devices MACs*/
+       mac_address_slaves_update(bonded_eth_dev);
+
        /* Register link status change callback with bonded device pointer as
         * argument*/
        rte_eth_dev_callback_register(slave_port_id, RTE_ETH_EVENT_INTR_LSC,
@@ -665,12 +670,15 @@ rte_eth_bond_xmit_policy_set(uint16_t bonded_port_id, uint8_t policy)
        switch (policy) {
        case BALANCE_XMIT_POLICY_LAYER2:
                internals->balance_xmit_policy = policy;
+               internals->burst_xmit_hash = burst_xmit_l2_hash;
                break;
        case BALANCE_XMIT_POLICY_LAYER23:
                internals->balance_xmit_policy = policy;
+               internals->burst_xmit_hash = burst_xmit_l23_hash;
                break;
        case BALANCE_XMIT_POLICY_LAYER34:
                internals->balance_xmit_policy = policy;
+               internals->burst_xmit_hash = burst_xmit_l34_hash;
                break;
 
        default: