net: dsa: change tag_protocol to an enum
authorFlorian Fainelli <f.fainelli@gmail.com>
Fri, 12 Sep 2014 04:18:09 +0000 (21:18 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Sep 2014 21:04:35 +0000 (17:04 -0400)
Now that we introduced an additional multiplexing/demultiplexing layer
with commit 3e8a72d1dae37 ("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: Alexander Duyck <alexander.duyck@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/bcm_sf2.c
drivers/net/dsa/mv88e6060.c
drivers/net/dsa/mv88e6123_61_65.c
drivers/net/dsa/mv88e6131.c
include/net/dsa.h
net/dsa/slave.c
net/dsa/tag_brcm.c

index bb7cb8e283b16bbef23635ce24a14947f58b5719..e9918c7f1792a5d199471017154cdbf9c0fb9020 100644 (file)
@@ -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 = {
-       .tag_protocol           = htons(ETH_P_BRCMTAG),
+       .tag_protocol           = DSA_TAG_PROTO_BRCM,
        .priv_size              = sizeof(struct bcm_sf2_priv),
        .probe                  = bcm_sf2_sw_probe,
        .setup                  = bcm_sf2_sw_setup,
index 7a54ec04b4181210961f2819c7fca1e260cb7661..d8037c1055ace9522bebe839a024716de3b5ed64 100644 (file)
@@ -258,7 +258,7 @@ static void mv88e6060_poll_link(struct dsa_switch *ds)
 }
 
 static struct dsa_switch_driver mv88e6060_switch_driver = {
-       .tag_protocol   = htons(ETH_P_TRAILER),
+       .tag_protocol   = DSA_TAG_PROTO_TRAILER,
        .probe          = mv88e6060_probe,
        .setup          = mv88e6060_setup,
        .set_addr       = mv88e6060_set_addr,
index 69c42513dd724bb06ef40eaf4b5e4bbea800936d..975774f338c2ea090df6b53a2c81502becdff869 100644 (file)
@@ -207,7 +207,7 @@ static int mv88e6123_61_65_setup_port(struct dsa_switch *ds, int p)
         */
        val = 0x0433;
        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;
                else
                        val |= 0x0100;
@@ -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 = {
-       .tag_protocol           = cpu_to_be16(ETH_P_EDSA),
+       .tag_protocol           = DSA_TAG_PROTO_EDSA,
        .priv_size              = sizeof(struct mv88e6xxx_priv_state),
        .probe                  = mv88e6123_61_65_probe,
        .setup                  = mv88e6123_61_65_setup,
index 953bc6a49e594471342270e7281a8e263f0086de..35541f2ceca3f3b87631fbd333fe9ec29a4c75fc 100644 (file)
@@ -379,7 +379,7 @@ static int mv88e6131_get_sset_count(struct dsa_switch *ds)
 }
 
 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),
        .probe                  = mv88e6131_probe,
        .setup                  = mv88e6131_setup,
index 97712927a9d2a5f50f09932ec54e7db01f25ef6b..8a8a5d976f977056cb90615e1ee75c298e47e0b8 100644 (file)
 #include <linux/phy.h>
 #include <linux/phy_fixed.h>
 
-/* Not an official ethertype value, used only internally for DSA
- * demultiplexing
- */
-#define ETH_P_BRCMTAG          (ETH_P_XDSA + 1)
+enum dsa_tag_protocol {
+       DSA_TAG_PROTO_NONE = 0,
+       DSA_TAG_PROTO_DSA,
+       DSA_TAG_PROTO_TRAILER,
+       DSA_TAG_PROTO_EDSA,
+       DSA_TAG_PROTO_BRCM,
+};
 
 #define DSA_MAX_SWITCHES       4
 #define DSA_MAX_PORTS          12
@@ -89,7 +92,7 @@ struct dsa_switch_tree {
         */
        struct net_device       *master_netdev;
        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.
@@ -166,7 +169,7 @@ static inline u8 dsa_upstream_port(struct dsa_switch *ds)
 struct dsa_switch_driver {
        struct list_head        list;
 
-       __be16                  tag_protocol;
+       enum dsa_tag_protocol   tag_protocol;
        int                     priv_size;
 
        /*
@@ -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)
 {
-       return dst->tag_protocol != 0;
+       return dst->tag_protocol != DSA_TAG_PROTO_NONE;
 }
 
 #endif
index 7333a4aebb7de2bdecf7496c681f7d4b6392f5d3..809eeb13eb123e78bec5d6aa61cfc87d8074d640 100644 (file)
@@ -437,22 +437,22 @@ dsa_slave_create(struct dsa_switch *ds, struct device *parent,
 
        switch (ds->dst->tag_protocol) {
 #ifdef CONFIG_NET_DSA_TAG_DSA
-       case htons(ETH_P_DSA):
+       case DSA_TAG_PROTO_DSA:
                ds->dst->ops = &dsa_netdev_ops;
                break;
 #endif
 #ifdef CONFIG_NET_DSA_TAG_EDSA
-       case htons(ETH_P_EDSA):
+       case DSA_TAG_PROTO_EDSA:
                ds->dst->ops = &edsa_netdev_ops;
                break;
 #endif
 #ifdef CONFIG_NET_DSA_TAG_TRAILER
-       case htons(ETH_P_TRAILER):
+       case DSA_TAG_PROTO_TRAILER:
                ds->dst->ops = &trailer_netdev_ops;
                break;
 #endif
 #ifdef CONFIG_NET_DSA_TAG_BRCM
-       case htons(ETH_P_BRCMTAG):
+       case DSA_TAG_PROTO_BRCM:
                ds->dst->ops = &brcm_netdev_ops;
                break;
 #endif
index e0b759ec209e70fd11f199fb4529eaa717bafd1f..8fbc21c0de785ac66f11732246da5b6f5a20bc75 100644 (file)
@@ -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
         * do not modify its EtherType
         */
-       skb->protocol = htons(ETH_P_BRCMTAG);
        skb->dev = p->parent->dst->master_netdev;
        dev_queue_xmit(skb);