Commit ac7a04c3 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller

net: dsa: change tag_protocol to an enum

Now that we introduced an additional multiplexing/demultiplexing layer
with commit 3e8a72d1 ("net: dsa: reduce number of protocol hooks")
that lives within the DSA code, we no longer need to have a given switch
driver tag_protocol be an actual ethertype value, instead, we can
replace it with an enum: dsa_tag_protocol.

Do this replacement in the drivers, which allows us to get rid of the
cpu_to_be16()/htons() dance, and remove ETH_P_BRCMTAG since we do not
need it anymore.
Suggested-by: default avatarAlexander Duyck <alexander.duyck@gmail.com>
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c5554298
...@@ -592,7 +592,7 @@ static void bcm_sf2_sw_fixed_link_update(struct dsa_switch *ds, int port, ...@@ -592,7 +592,7 @@ static void bcm_sf2_sw_fixed_link_update(struct dsa_switch *ds, int port,
} }
static struct dsa_switch_driver bcm_sf2_switch_driver = { static struct dsa_switch_driver bcm_sf2_switch_driver = {
.tag_protocol = htons(ETH_P_BRCMTAG), .tag_protocol = DSA_TAG_PROTO_BRCM,
.priv_size = sizeof(struct bcm_sf2_priv), .priv_size = sizeof(struct bcm_sf2_priv),
.probe = bcm_sf2_sw_probe, .probe = bcm_sf2_sw_probe,
.setup = bcm_sf2_sw_setup, .setup = bcm_sf2_sw_setup,
......
...@@ -258,7 +258,7 @@ static void mv88e6060_poll_link(struct dsa_switch *ds) ...@@ -258,7 +258,7 @@ static void mv88e6060_poll_link(struct dsa_switch *ds)
} }
static struct dsa_switch_driver mv88e6060_switch_driver = { static struct dsa_switch_driver mv88e6060_switch_driver = {
.tag_protocol = htons(ETH_P_TRAILER), .tag_protocol = DSA_TAG_PROTO_TRAILER,
.probe = mv88e6060_probe, .probe = mv88e6060_probe,
.setup = mv88e6060_setup, .setup = mv88e6060_setup,
.set_addr = mv88e6060_set_addr, .set_addr = mv88e6060_set_addr,
......
...@@ -207,7 +207,7 @@ static int mv88e6123_61_65_setup_port(struct dsa_switch *ds, int p) ...@@ -207,7 +207,7 @@ static int mv88e6123_61_65_setup_port(struct dsa_switch *ds, int p)
*/ */
val = 0x0433; val = 0x0433;
if (dsa_is_cpu_port(ds, p)) { if (dsa_is_cpu_port(ds, p)) {
if (ds->dst->tag_protocol == htons(ETH_P_EDSA)) if (ds->dst->tag_protocol == DSA_TAG_PROTO_EDSA)
val |= 0x3300; val |= 0x3300;
else else
val |= 0x0100; val |= 0x0100;
...@@ -391,7 +391,7 @@ static int mv88e6123_61_65_get_sset_count(struct dsa_switch *ds) ...@@ -391,7 +391,7 @@ static int mv88e6123_61_65_get_sset_count(struct dsa_switch *ds)
} }
struct dsa_switch_driver mv88e6123_61_65_switch_driver = { struct dsa_switch_driver mv88e6123_61_65_switch_driver = {
.tag_protocol = cpu_to_be16(ETH_P_EDSA), .tag_protocol = DSA_TAG_PROTO_EDSA,
.priv_size = sizeof(struct mv88e6xxx_priv_state), .priv_size = sizeof(struct mv88e6xxx_priv_state),
.probe = mv88e6123_61_65_probe, .probe = mv88e6123_61_65_probe,
.setup = mv88e6123_61_65_setup, .setup = mv88e6123_61_65_setup,
......
...@@ -379,7 +379,7 @@ static int mv88e6131_get_sset_count(struct dsa_switch *ds) ...@@ -379,7 +379,7 @@ static int mv88e6131_get_sset_count(struct dsa_switch *ds)
} }
struct dsa_switch_driver mv88e6131_switch_driver = { struct dsa_switch_driver mv88e6131_switch_driver = {
.tag_protocol = cpu_to_be16(ETH_P_DSA), .tag_protocol = DSA_TAG_PROTO_DSA,
.priv_size = sizeof(struct mv88e6xxx_priv_state), .priv_size = sizeof(struct mv88e6xxx_priv_state),
.probe = mv88e6131_probe, .probe = mv88e6131_probe,
.setup = mv88e6131_setup, .setup = mv88e6131_setup,
......
...@@ -19,10 +19,13 @@ ...@@ -19,10 +19,13 @@
#include <linux/phy.h> #include <linux/phy.h>
#include <linux/phy_fixed.h> #include <linux/phy_fixed.h>
/* Not an official ethertype value, used only internally for DSA enum dsa_tag_protocol {
* demultiplexing DSA_TAG_PROTO_NONE = 0,
*/ DSA_TAG_PROTO_DSA,
#define ETH_P_BRCMTAG (ETH_P_XDSA + 1) DSA_TAG_PROTO_TRAILER,
DSA_TAG_PROTO_EDSA,
DSA_TAG_PROTO_BRCM,
};
#define DSA_MAX_SWITCHES 4 #define DSA_MAX_SWITCHES 4
#define DSA_MAX_PORTS 12 #define DSA_MAX_PORTS 12
...@@ -89,7 +92,7 @@ struct dsa_switch_tree { ...@@ -89,7 +92,7 @@ struct dsa_switch_tree {
*/ */
struct net_device *master_netdev; struct net_device *master_netdev;
const struct dsa_device_ops *ops; const struct dsa_device_ops *ops;
__be16 tag_protocol; enum dsa_tag_protocol tag_protocol;
/* /*
* The switch and port to which the CPU is attached. * The switch and port to which the CPU is attached.
...@@ -166,7 +169,7 @@ static inline u8 dsa_upstream_port(struct dsa_switch *ds) ...@@ -166,7 +169,7 @@ static inline u8 dsa_upstream_port(struct dsa_switch *ds)
struct dsa_switch_driver { struct dsa_switch_driver {
struct list_head list; struct list_head list;
__be16 tag_protocol; enum dsa_tag_protocol tag_protocol;
int priv_size; int priv_size;
/* /*
...@@ -215,7 +218,7 @@ static inline void *ds_to_priv(struct dsa_switch *ds) ...@@ -215,7 +218,7 @@ static inline void *ds_to_priv(struct dsa_switch *ds)
static inline bool dsa_uses_tagged_protocol(struct dsa_switch_tree *dst) static inline bool dsa_uses_tagged_protocol(struct dsa_switch_tree *dst)
{ {
return dst->tag_protocol != 0; return dst->tag_protocol != DSA_TAG_PROTO_NONE;
} }
#endif #endif
...@@ -437,22 +437,22 @@ dsa_slave_create(struct dsa_switch *ds, struct device *parent, ...@@ -437,22 +437,22 @@ dsa_slave_create(struct dsa_switch *ds, struct device *parent,
switch (ds->dst->tag_protocol) { switch (ds->dst->tag_protocol) {
#ifdef CONFIG_NET_DSA_TAG_DSA #ifdef CONFIG_NET_DSA_TAG_DSA
case htons(ETH_P_DSA): case DSA_TAG_PROTO_DSA:
ds->dst->ops = &dsa_netdev_ops; ds->dst->ops = &dsa_netdev_ops;
break; break;
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_EDSA #ifdef CONFIG_NET_DSA_TAG_EDSA
case htons(ETH_P_EDSA): case DSA_TAG_PROTO_EDSA:
ds->dst->ops = &edsa_netdev_ops; ds->dst->ops = &edsa_netdev_ops;
break; break;
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_TRAILER #ifdef CONFIG_NET_DSA_TAG_TRAILER
case htons(ETH_P_TRAILER): case DSA_TAG_PROTO_TRAILER:
ds->dst->ops = &trailer_netdev_ops; ds->dst->ops = &trailer_netdev_ops;
break; break;
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_BRCM #ifdef CONFIG_NET_DSA_TAG_BRCM
case htons(ETH_P_BRCMTAG): case DSA_TAG_PROTO_BRCM:
ds->dst->ops = &brcm_netdev_ops; ds->dst->ops = &brcm_netdev_ops;
break; break;
#endif #endif
......
...@@ -91,7 +91,6 @@ static netdev_tx_t brcm_tag_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -91,7 +91,6 @@ static netdev_tx_t brcm_tag_xmit(struct sk_buff *skb, struct net_device *dev)
/* Queue the SKB for transmission on the parent interface, but /* Queue the SKB for transmission on the parent interface, but
* do not modify its EtherType * do not modify its EtherType
*/ */
skb->protocol = htons(ETH_P_BRCMTAG);
skb->dev = p->parent->dst->master_netdev; skb->dev = p->parent->dst->master_netdev;
dev_queue_xmit(skb); dev_queue_xmit(skb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment