@@ -4361,6 +4361,24 @@ static int rocker_port_brport_flags_set(struct rocker_port *rocker_port,
return err;
}
+static int rocker_port_bridge_set(struct rocker_port *rocker_port,
+ struct switchdev_trans *trans,
+ struct switchdev_attr_bridge *bridge)
+{
+ switch (bridge->attr) {
+ case IFLA_BR_AGEING_TIME:
+ if (switchdev_trans_ph_prepare(trans))
+ return 0;
+ rocker_port->ageing_time = clock_t_to_jiffies(bridge->val);
+ mod_timer(&rocker_port->rocker->fdb_cleanup_timer, jiffies);
+ break;
+ default:
+ return -EOPNOTSUPP;
+ }
+
+ return 0;
+}
+
static int rocker_port_attr_set(struct net_device *dev,
struct switchdev_attr *attr,
struct switchdev_trans *trans)
@@ -4378,6 +4396,10 @@ static int rocker_port_attr_set(struct net_device *dev,
err = rocker_port_brport_flags_set(rocker_port, trans,
attr->u.brport_flags);
break;
+ case SWITCHDEV_ATTR_ID_BRIDGE:
+ err = rocker_port_bridge_set(rocker_port, trans,
+ &attr->u.bridge);
+ break;
default:
err = -EOPNOTSUPP;
break;