summaryrefslogtreecommitdiffstats
path: root/include/net/dsa.h
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2019-04-28 13:37:12 -0400
committerDavid S. Miller <davem@davemloft.net>2019-04-28 19:41:01 -0400
commit0b42f03363706609d621c31324fae5c1250f579f (patch)
treeb4b66ab0f485b8d885446a55d450772eb22c7e08 /include/net/dsa.h
parent875138f81d71af3cfa80df57e32fe9efbc4f95bc (diff)
dsa: Add MODULE_ALIAS to taggers in preparation to become modules
When the tag drivers become modules, we will need to dynamically load them based on what the switch drivers need. Add aliases to map between the TAG protocol and the driver. In order to do this, we need the tag protocol number as something which the C pre-processor can stringinfy. Only the compiler knows the value of an enum, CPP cannot use them. So add #defines. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/dsa.h')
-rw-r--r--include/net/dsa.h43
1 files changed, 30 insertions, 13 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 801346e31e9b..8f3d5e0825a2 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -30,20 +30,33 @@ struct phy_device;
30struct fixed_phy_status; 30struct fixed_phy_status;
31struct phylink_link_state; 31struct phylink_link_state;
32 32
33#define DSA_TAG_PROTO_NONE_VALUE 0
34#define DSA_TAG_PROTO_BRCM_VALUE 1
35#define DSA_TAG_PROTO_BRCM_PREPEND_VALUE 2
36#define DSA_TAG_PROTO_DSA_VALUE 3
37#define DSA_TAG_PROTO_EDSA_VALUE 4
38#define DSA_TAG_PROTO_GSWIP_VALUE 5
39#define DSA_TAG_PROTO_KSZ9477_VALUE 6
40#define DSA_TAG_PROTO_KSZ9893_VALUE 7
41#define DSA_TAG_PROTO_LAN9303_VALUE 8
42#define DSA_TAG_PROTO_MTK_VALUE 9
43#define DSA_TAG_PROTO_QCA_VALUE 10
44#define DSA_TAG_PROTO_TRAILER_VALUE 11
45
33enum dsa_tag_protocol { 46enum dsa_tag_protocol {
34 DSA_TAG_PROTO_NONE = 0, 47 DSA_TAG_PROTO_NONE = DSA_TAG_PROTO_NONE_VALUE,
35 DSA_TAG_PROTO_BRCM, 48 DSA_TAG_PROTO_BRCM = DSA_TAG_PROTO_BRCM_VALUE,
36 DSA_TAG_PROTO_BRCM_PREPEND, 49 DSA_TAG_PROTO_BRCM_PREPEND = DSA_TAG_PROTO_BRCM_PREPEND_VALUE,
37 DSA_TAG_PROTO_DSA, 50 DSA_TAG_PROTO_DSA = DSA_TAG_PROTO_DSA_VALUE,
38 DSA_TAG_PROTO_EDSA, 51 DSA_TAG_PROTO_EDSA = DSA_TAG_PROTO_EDSA_VALUE,
39 DSA_TAG_PROTO_GSWIP, 52 DSA_TAG_PROTO_GSWIP = DSA_TAG_PROTO_GSWIP_VALUE,
40 DSA_TAG_PROTO_KSZ9477, 53 DSA_TAG_PROTO_KSZ9477 = DSA_TAG_PROTO_KSZ9477_VALUE,
41 DSA_TAG_PROTO_KSZ9893, 54 DSA_TAG_PROTO_KSZ9893 = DSA_TAG_PROTO_KSZ9893_VALUE,
42 DSA_TAG_PROTO_LAN9303, 55 DSA_TAG_PROTO_LAN9303 = DSA_TAG_PROTO_LAN9303_VALUE,
43 DSA_TAG_PROTO_MTK, 56 DSA_TAG_PROTO_MTK = DSA_TAG_PROTO_MTK_VALUE,
44 DSA_TAG_PROTO_QCA, 57 DSA_TAG_PROTO_QCA = DSA_TAG_PROTO_QCA_VALUE,
45 DSA_TAG_PROTO_TRAILER, 58 DSA_TAG_PROTO_TRAILER = DSA_TAG_PROTO_TRAILER_VALUE,
46 DSA_TAG_LAST, /* MUST BE LAST */ 59 DSA_TAG_LAST, /* MUST BE LAST */
47}; 60};
48 61
49struct packet_type; 62struct packet_type;
@@ -59,6 +72,10 @@ struct dsa_device_ops {
59 const char *name; 72 const char *name;
60}; 73};
61 74
75#define DSA_TAG_DRIVER_ALIAS "dsa_tag-"
76#define MODULE_ALIAS_DSA_TAG_DRIVER(__proto) \
77 MODULE_ALIAS(DSA_TAG_DRIVER_ALIAS __stringify(__proto##_VALUE))
78
62struct dsa_switch_tree { 79struct dsa_switch_tree {
63 struct list_head list; 80 struct list_head list;
64 81