net/bonding: add ethdev ops function for MTU set
Set the MTU for bonding device by calling .mtu_set for all the slaves. Set the MTU only if all slaves support .mtu_set, and there is no error returned from any slave. Signed-off-by: Sharmila Podury <sharmila.podury@att.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
This commit is contained in:
parent
c5097d5361
commit
55b58a7374
@ -2823,6 +2823,34 @@ bond_ethdev_rss_hash_conf_get(struct rte_eth_dev *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
bond_ethdev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
|
||||
{
|
||||
struct rte_eth_dev *slave_eth_dev;
|
||||
struct bond_dev_private *internals = dev->data->dev_private;
|
||||
int ret, i;
|
||||
|
||||
rte_spinlock_lock(&internals->lock);
|
||||
|
||||
for (i = 0; i < internals->slave_count; i++) {
|
||||
slave_eth_dev = &rte_eth_devices[internals->slaves[i].port_id];
|
||||
if (*slave_eth_dev->dev_ops->mtu_set == NULL) {
|
||||
rte_spinlock_unlock(&internals->lock);
|
||||
return -ENOTSUP;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < internals->slave_count; i++) {
|
||||
ret = rte_eth_dev_set_mtu(internals->slaves[i].port_id, mtu);
|
||||
if (ret < 0) {
|
||||
rte_spinlock_unlock(&internals->lock);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
rte_spinlock_unlock(&internals->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct eth_dev_ops default_dev_ops = {
|
||||
.dev_start = bond_ethdev_start,
|
||||
.dev_stop = bond_ethdev_stop,
|
||||
@ -2842,7 +2870,8 @@ const struct eth_dev_ops default_dev_ops = {
|
||||
.reta_update = bond_ethdev_rss_reta_update,
|
||||
.reta_query = bond_ethdev_rss_reta_query,
|
||||
.rss_hash_update = bond_ethdev_rss_hash_update,
|
||||
.rss_hash_conf_get = bond_ethdev_rss_hash_conf_get
|
||||
.rss_hash_conf_get = bond_ethdev_rss_hash_conf_get,
|
||||
.mtu_set = bond_ethdev_mtu_set
|
||||
};
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user