bond: fix type for port and queue id
authorMaciej Gajdzica <maciejx.t.gajdzica@intel.com>
Fri, 20 Feb 2015 16:12:22 +0000 (16:12 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 30 Mar 2015 17:10:15 +0000 (19:10 +0200)
In some places port_id is declared as int or uint16_t, which causes data
loss when using functions expecting port_id as uint8_t.

Previous type of rx and tx queue_id field was int, which caused possible
data loss when calling functions expecting uint16_t as an argument.

Issues found with static code analysis tool.

Signed-off-by: Maciej Gajdzica <maciejx.t.gajdzica@intel.com>
lib/librte_pmd_bond/rte_eth_bond_8023ad.c
lib/librte_pmd_bond/rte_eth_bond_pmd.c
lib/librte_pmd_bond/rte_eth_bond_private.h

index f1cf81a..97a828e 100644 (file)
@@ -747,7 +747,7 @@ bond_mode_8023ad_periodic_cb(void *arg)
        struct ether_addr slave_addr;
 
        void *pkt = NULL;
-       uint16_t i, slave_id;
+       uint8_t i, slave_id;
 
 
        /* Update link status on each port */
@@ -1050,7 +1050,7 @@ int
 bond_mode_8023ad_enable(struct rte_eth_dev *bond_dev)
 {
        struct bond_dev_private *internals = bond_dev->data->dev_private;
-       uint16_t i;
+       uint8_t i;
 
        for (i = 0; i < internals->active_slave_count; i++)
                bond_mode_8023ad_activate_slave(bond_dev, i);
index af8113e..c937e6b 100644 (file)
@@ -617,7 +617,7 @@ bandwidth_cmp(const void *a, const void *b)
 }
 
 static void
-bandwidth_left(int port_id, uint64_t load, uint8_t update_idx,
+bandwidth_left(uint8_t port_id, uint64_t load, uint8_t update_idx,
                struct bwg_slave *bwg_slave)
 {
        struct rte_eth_link link_status;
@@ -1296,7 +1296,8 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
        struct bond_rx_queue *bd_rx_q;
        struct bond_tx_queue *bd_tx_q;
 
-       int errval, q_id;
+       int errval;
+       uint16_t q_id;
 
        /* Stop slave */
        rte_eth_dev_stop(slave_eth_dev->data->port_id);
@@ -2045,7 +2046,8 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
        char *name = dev->data->name;
        struct bond_dev_private *internals = dev->data->dev_private;
        struct rte_kvargs *kvlist = internals->kvlist;
-       int arg_count, port_id = dev - rte_eth_devices;
+       int arg_count;
+       uint8_t port_id = dev - rte_eth_devices;
 
        /*
         * if no kvlist, it means that this bonded device has been created
index bef1e81..45e5c65 100644 (file)
@@ -66,7 +66,7 @@ extern const char *driver_name;
 
 /** Port Queue Mapping Structure */
 struct bond_rx_queue {
-       int queue_id;
+       uint16_t queue_id;
        /**< Queue Id */
        struct bond_dev_private *dev_private;
        /**< Reference to eth_dev private structure */
@@ -79,7 +79,7 @@ struct bond_rx_queue {
 };
 
 struct bond_tx_queue {
-       int queue_id;
+       uint16_t queue_id;
        /**< Queue Id */
        struct bond_dev_private *dev_private;
        /**< Reference to dev private structure */