博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网口bond的时候如何选择slave
阅读量:4214 次
发布时间:2019-05-26

本文共 1690 字,大约阅读时间需要 5 分钟。

在网口bond的时候如何选择slave呢?这可以从下面的函数看出static struct slave *bond_find_best_slave(struct bonding *bond){	struct slave *slave, *bestslave = NULL;	struct list_head *iter;	int mintime = bond->params.updelay;#这个函数决定继续用当前的slave还是切换slave	slave = bond_choose_primary_or_current(bond);	if (slave)		return slave;#如果前面没有决定的话,则遍历bond中的slave,选择第一个link up的slave	bond_for_each_slave(bond, slave, iter) {		if (slave->link == BOND_LINK_UP)			return slave;		if (slave->link == BOND_LINK_BACK && bond_slave_is_up(slave) &&		    slave->delay < mintime) {			mintime = slave->delay;			bestslave = slave;		}	}	return bestslave;}重点看一下bond_choose_primary_or_currentstatic struct slave *bond_choose_primary_or_current(struct bonding *bond){	struct slave *prim = rtnl_dereference(bond->primary_slave);	struct slave *curr = rtnl_dereference(bond->curr_active_slave);	if (!prim || prim->link != BOND_LINK_UP) {		if (!curr || curr->link != BOND_LINK_UP)			return NULL;		return curr;	}	if (bond->force_primary) {		bond->force_primary = false;		return prim;	}	if (!curr || curr->link != BOND_LINK_UP)		return prim;#正常情况下可以看到选择slave主要有三种方式	/* At this point, prim and curr are both up */	switch (bond->params.primary_reselect) {#每次有包来的时候都切换,具体这里就从curr切换到prim	case BOND_PRI_RESELECT_ALWAYS:		return prim;#选择速度快的,如果速度是一样的话,则选择全双工的	case BOND_PRI_RESELECT_BETTER:		if (prim->speed < curr->speed)			return curr;		if (prim->speed == curr->speed && prim->duplex <= curr->duplex)			return curr;		return prim;#一直用当前的就不切换	case BOND_PRI_RESELECT_FAILURE:		return curr;	default:		netdev_err(bond->dev, "impossible primary_reselect %d\n",			   bond->params.primary_reselect);		return curr;	}}从这里知道决定切换的就是params.primary_reselect这个参数,这个参数也只有三个有效值

 

转载地址:http://tpnmi.baihongyu.com/

你可能感兴趣的文章
test
查看>>
关于拷贝构造函数
查看>>
深拷贝与浅拷贝
查看>>
VC++中的Win32 Application和Win32 Console Application区别(转)
查看>>
Linux 下Sqlite3 的安装及应用
查看>>
(转贴)Linux如何设置自启动程序
查看>>
使用workbench进行在线调试
查看>>
3D Touch (github下载源码)
查看>>
ios开发之倒计时实现的方法
查看>>
ios 支付宝支付 (github下载源码)
查看>>
一个UITableViewCell简单动画效果
查看>>
iOS IPv6 最新升级攻略
查看>>
ios获取手机型号、系统版本、设备唯一标识符、手机运营商等
查看>>
ios获取当前时间和日期
查看>>
常用正则表达式大全
查看>>
仿QQ左边侧滑+手势 (github下载源码)
查看>>
ios 跳转系统设置位置、通知等
查看>>
ios App启动加载广告页面思路
查看>>
ios 添加日历提醒事件
查看>>
ios 计算文字高度
查看>>