bonding: Implement user key part of port_key in an AD system.
The port key has three components - user-key, speed-part, and duplex-part. The LSBit is for the duplex-part, next 5 bits are for the speed while the remaining 10 bits are the user defined key bits. Get these 10 bits from the user-space (through the SysFs interface) and use it to form the admin port-key. Allowed range for the user-key is 0 - 1023 (10 bits). If it is not provided then use zero for the user-key-bits (default). It can set using following example code - # modprobe bonding mode=4 # usr_port_key=$(( RANDOM & 0x3FF )) # echo $usr_port_key > /sys/class/net/bond0/bonding/ad_user_port_key # echo +eth1 > /sys/class/net/bond0/bonding/slaves ... # ip link set bond0 up Signed-off-by: Mahesh Bandewar <maheshb@google.com> Reviewed-by: Nikolay Aleksandrov <nikolay@redhat.com> [jt: * fixed up style issues reported by checkpatch * fixed up context from change in ad_actor_sys_prio patch] Signed-off-by: Jonathan Toppins <jtoppins@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Este commit está contenido en:

cometido por
David S. Miller

padre
7451495755
commit
d22a5fc0c3
@@ -721,6 +721,20 @@ static ssize_t bonding_show_ad_actor_system(struct device *d,
|
||||
static DEVICE_ATTR(ad_actor_system, S_IRUGO | S_IWUSR,
|
||||
bonding_show_ad_actor_system, bonding_sysfs_store_option);
|
||||
|
||||
static ssize_t bonding_show_ad_user_port_key(struct device *d,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct bonding *bond = to_bond(d);
|
||||
|
||||
if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
||||
return sprintf(buf, "%hu\n", bond->params.ad_user_port_key);
|
||||
|
||||
return 0;
|
||||
}
|
||||
static DEVICE_ATTR(ad_user_port_key, S_IRUGO | S_IWUSR,
|
||||
bonding_show_ad_user_port_key, bonding_sysfs_store_option);
|
||||
|
||||
static struct attribute *per_bond_attrs[] = {
|
||||
&dev_attr_slaves.attr,
|
||||
&dev_attr_mode.attr,
|
||||
@@ -756,6 +770,7 @@ static struct attribute *per_bond_attrs[] = {
|
||||
&dev_attr_tlb_dynamic_lb.attr,
|
||||
&dev_attr_ad_actor_sys_prio.attr,
|
||||
&dev_attr_ad_actor_system.attr,
|
||||
&dev_attr_ad_user_port_key.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
Referencia en una nueva incidencia
Block a user