@@ -4382,6 +4382,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,
+ enum switchdev_trans trans,
+ struct switchdev_attr_bridge *bridge)
+{
+ switch (bridge->attr) {
+ case IFLA_BR_AGEING_TIME:
+ if (trans == SWITCHDEV_TRANS_PREPARE)
+ 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)
{
@@ -4409,6 +4427,10 @@ static int rocker_port_attr_set(struct net_device *dev,
err = rocker_port_brport_flags_set(rocker_port, attr->trans,
attr->u.brport_flags);
break;
+ case SWITCHDEV_ATTR_BRIDGE:
+ err = rocker_port_bridge_set(rocker_port, attr->trans,
+ &attr->u.bridge);
+ break;
default:
err = -EOPNOTSUPP;
break;