Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 057cad2c authored by Vivien Didelot's avatar Vivien Didelot Committed by David S. Miller
Browse files

net: dsa: define port types



Introduce an enumerated type for ports, which will be way more explicit
to identify a port type instead of digging into switch port masks.

A port can be of type CPU, DSA, user, or unused by default. This is a
static parsed information that cannot be changed at runtime.

Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 02bc6e54
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -180,6 +180,13 @@ struct dsa_port {
	struct sk_buff *(*rcv)(struct sk_buff *skb, struct net_device *dev,
			       struct packet_type *pt);

	enum {
		DSA_PORT_TYPE_UNUSED = 0,
		DSA_PORT_TYPE_CPU,
		DSA_PORT_TYPE_DSA,
		DSA_PORT_TYPE_USER,
	} type;

	struct dsa_switch	*ds;
	unsigned int		index;
	const char		*name;
+3 −0
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ static int dsa_ds_complete(struct dsa_switch_tree *dst, struct dsa_switch *ds)
			return err;

		ds->dsa_port_mask |= BIT(index);
		port->type = DSA_PORT_TYPE_DSA;
	}

	return 0;
@@ -504,6 +505,7 @@ static int dsa_cpu_parse(struct dsa_port *port, u32 index,
	 * net/dsa/dsa.c::dsa_switch_setup_one does.
	 */
	ds->cpu_port_mask |= BIT(index);
	port->type = DSA_PORT_TYPE_CPU;

	tag_protocol = ds->ops->get_tag_protocol(ds);
	tag_ops = dsa_resolve_tag_protocol(tag_protocol);
@@ -543,6 +545,7 @@ static int dsa_ds_parse(struct dsa_switch_tree *dst, struct dsa_switch *ds)
			 * net/dsa/dsa.c::dsa_switch_setup_one does.
			 */
			ds->enabled_port_mask |= BIT(index);
			port->type = DSA_PORT_TYPE_USER;
		}

	}
+6 −0
Original line number Diff line number Diff line
@@ -101,6 +101,7 @@ static int dsa_switch_setup_one(struct dsa_switch *ds,
	struct dsa_chip_data *cd = ds->cd;
	bool valid_name_found = false;
	int index = ds->index;
	struct dsa_port *dp;
	int i, ret;

	/*
@@ -109,6 +110,8 @@ static int dsa_switch_setup_one(struct dsa_switch *ds,
	for (i = 0; i < ds->num_ports; i++) {
		char *name;

		dp = &ds->ports[i];

		name = cd->port_names[i];
		if (name == NULL)
			continue;
@@ -122,10 +125,13 @@ static int dsa_switch_setup_one(struct dsa_switch *ds,
			dst->cpu_dp = &ds->ports[i];
			dst->cpu_dp->master = master;
			ds->cpu_port_mask |= 1 << i;
			dp->type = DSA_PORT_TYPE_CPU;
		} else if (!strcmp(name, "dsa")) {
			ds->dsa_port_mask |= 1 << i;
			dp->type = DSA_PORT_TYPE_DSA;
		} else {
			ds->enabled_port_mask |= 1 << i;
			dp->type = DSA_PORT_TYPE_USER;
		}
		valid_name_found = true;
	}