|
@@ -95,6 +95,21 @@ static ssize_t ad_actor_oper_port_state_show(struct slave *slave, char *buf)
|
|
|
}
|
|
|
static SLAVE_ATTR_RO(ad_actor_oper_port_state);
|
|
|
|
|
|
+static ssize_t ad_partner_oper_port_state_show(struct slave *slave, char *buf)
|
|
|
+{
|
|
|
+ const struct port *ad_port;
|
|
|
+
|
|
|
+ if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) {
|
|
|
+ ad_port = &SLAVE_AD_INFO(slave)->port;
|
|
|
+ if (ad_port->aggregator)
|
|
|
+ return sprintf(buf, "%u\n",
|
|
|
+ ad_port->partner_oper.port_state);
|
|
|
+ }
|
|
|
+
|
|
|
+ return sprintf(buf, "N/A\n");
|
|
|
+}
|
|
|
+static SLAVE_ATTR_RO(ad_partner_oper_port_state);
|
|
|
+
|
|
|
static const struct slave_attribute *slave_attrs[] = {
|
|
|
&slave_attr_state,
|
|
|
&slave_attr_mii_status,
|
|
@@ -103,6 +118,7 @@ static const struct slave_attribute *slave_attrs[] = {
|
|
|
&slave_attr_queue_id,
|
|
|
&slave_attr_ad_aggregator_id,
|
|
|
&slave_attr_ad_actor_oper_port_state,
|
|
|
+ &slave_attr_ad_partner_oper_port_state,
|
|
|
NULL
|
|
|
};
|
|
|
|