Re: [PATCH net-next 1/3] net: dsa: mv88e6xxx: Allow dynamic reconfiguration of tag protocol
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-03-28 15:25:50
Also in:
linux-devicetree
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-03-28 15:25:50
Also in:
linux-devicetree
On Fri, Mar 26, 2021 at 11:56:46AM +0100, Tobias Waldekranz wrote:
All devices are capable of using regular DSA tags. Support for Ethertyped DSA tags sort into three categories: 1. No support. Older chips fall into this category. 2. Full support. Datasheet explicitly supports configuring the CPU port to receive FORWARDs with a DSA tag. 3. Undocumented support. Datasheet lists the configuration from category 2 as "reserved for future use", but does empirically behave like a category 2 device.
+static int mv88e6xxx_change_tag_protocol(struct dsa_switch *ds, int port,
+ enum dsa_tag_protocol proto)
+{
+ struct mv88e6xxx_chip *chip = ds->priv;
+ enum dsa_tag_protocol old_protocol;
+ int err;
+
+ switch (proto) {
+ case DSA_TAG_PROTO_EDSA:
+ if (chip->info->tag_protocol != DSA_TAG_PROTO_EDSA)
+ dev_warn(chip->dev, "Relying on undocumented EDSA tagging behavior\n");
+
+ break;
+ case DSA_TAG_PROTO_DSA:
+ break;
+ default:
+ return -EPROTONOSUPPORT;
+ }You are handling cases 2 and 3 here, but not 1. Which makes it a bit of a foot cannon for older devices. Now that we have chip->tag_protocol, maybe we should change chip->info->tag_protocol to mean supported protocols? BIT(0) DSA BIT(1) EDSA BIT(2) Undocumented EDSA Andrew