Commit 447d290a authored by Vladimir Oltean's avatar Vladimir Oltean Committed by Jakub Kicinski
Browse files

net: dsa: move switchdev event implementation under the same switch/case statement



We'll need to start listening to SWITCHDEV_FDB_{ADD,DEL}_TO_DEVICE
events even for interfaces where dsa_slave_dev_check returns false, so
we need that check inside the switch-case statement for SWITCHDEV_FDB_*.

This movement also avoids a useless allocation / free of switchdev_work
on the untreated "default event" case.

Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c4bb76a9
Loading
Loading
Loading
Loading
+16 −19
Original line number Diff line number Diff line
@@ -2119,13 +2119,14 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
	struct dsa_port *dp;
	int err;

	if (event == SWITCHDEV_PORT_ATTR_SET) {
	switch (event) {
	case SWITCHDEV_PORT_ATTR_SET:
		err = switchdev_handle_port_attr_set(dev, ptr,
						     dsa_slave_dev_check,
						     dsa_slave_port_attr_set);
		return notifier_from_errno(err);
	}

	case SWITCHDEV_FDB_ADD_TO_DEVICE:
	case SWITCHDEV_FDB_DEL_TO_DEVICE:
		if (!dsa_slave_dev_check(dev))
			return NOTIFY_DONE;

@@ -2141,9 +2142,6 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
		switchdev_work->port = dp->index;
		switchdev_work->event = event;

	switch (event) {
	case SWITCHDEV_FDB_ADD_TO_DEVICE:
	case SWITCHDEV_FDB_DEL_TO_DEVICE:
		fdb_info = ptr;

		if (!fdb_info->added_by_user) {
@@ -2156,13 +2154,12 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
		switchdev_work->vid = fdb_info->vid;

		dev_hold(dev);
		dsa_schedule_work(&switchdev_work->work);
		break;
	default:
		kfree(switchdev_work);
		return NOTIFY_DONE;
	}

	dsa_schedule_work(&switchdev_work->work);
	return NOTIFY_OK;
}