Commit 0b42f033 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller

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: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 875138f8
...@@ -30,19 +30,32 @@ struct phy_device; ...@@ -30,19 +30,32 @@ struct phy_device;
struct fixed_phy_status; struct fixed_phy_status;
struct phylink_link_state; struct phylink_link_state;
#define DSA_TAG_PROTO_NONE_VALUE 0
#define DSA_TAG_PROTO_BRCM_VALUE 1
#define DSA_TAG_PROTO_BRCM_PREPEND_VALUE 2
#define DSA_TAG_PROTO_DSA_VALUE 3
#define DSA_TAG_PROTO_EDSA_VALUE 4
#define DSA_TAG_PROTO_GSWIP_VALUE 5
#define DSA_TAG_PROTO_KSZ9477_VALUE 6
#define DSA_TAG_PROTO_KSZ9893_VALUE 7
#define DSA_TAG_PROTO_LAN9303_VALUE 8
#define DSA_TAG_PROTO_MTK_VALUE 9
#define DSA_TAG_PROTO_QCA_VALUE 10
#define DSA_TAG_PROTO_TRAILER_VALUE 11
enum dsa_tag_protocol { enum dsa_tag_protocol {
DSA_TAG_PROTO_NONE = 0, DSA_TAG_PROTO_NONE = DSA_TAG_PROTO_NONE_VALUE,
DSA_TAG_PROTO_BRCM, DSA_TAG_PROTO_BRCM = DSA_TAG_PROTO_BRCM_VALUE,
DSA_TAG_PROTO_BRCM_PREPEND, DSA_TAG_PROTO_BRCM_PREPEND = DSA_TAG_PROTO_BRCM_PREPEND_VALUE,
DSA_TAG_PROTO_DSA, DSA_TAG_PROTO_DSA = DSA_TAG_PROTO_DSA_VALUE,
DSA_TAG_PROTO_EDSA, DSA_TAG_PROTO_EDSA = DSA_TAG_PROTO_EDSA_VALUE,
DSA_TAG_PROTO_GSWIP, DSA_TAG_PROTO_GSWIP = DSA_TAG_PROTO_GSWIP_VALUE,
DSA_TAG_PROTO_KSZ9477, DSA_TAG_PROTO_KSZ9477 = DSA_TAG_PROTO_KSZ9477_VALUE,
DSA_TAG_PROTO_KSZ9893, DSA_TAG_PROTO_KSZ9893 = DSA_TAG_PROTO_KSZ9893_VALUE,
DSA_TAG_PROTO_LAN9303, DSA_TAG_PROTO_LAN9303 = DSA_TAG_PROTO_LAN9303_VALUE,
DSA_TAG_PROTO_MTK, DSA_TAG_PROTO_MTK = DSA_TAG_PROTO_MTK_VALUE,
DSA_TAG_PROTO_QCA, DSA_TAG_PROTO_QCA = DSA_TAG_PROTO_QCA_VALUE,
DSA_TAG_PROTO_TRAILER, DSA_TAG_PROTO_TRAILER = DSA_TAG_PROTO_TRAILER_VALUE,
DSA_TAG_LAST, /* MUST BE LAST */ DSA_TAG_LAST, /* MUST BE LAST */
}; };
...@@ -59,6 +72,10 @@ struct dsa_device_ops { ...@@ -59,6 +72,10 @@ struct dsa_device_ops {
const char *name; const char *name;
}; };
#define DSA_TAG_DRIVER_ALIAS "dsa_tag-"
#define MODULE_ALIAS_DSA_TAG_DRIVER(__proto) \
MODULE_ALIAS(DSA_TAG_DRIVER_ALIAS __stringify(__proto##_VALUE))
struct dsa_switch_tree { struct dsa_switch_tree {
struct list_head list; struct list_head list;
......
...@@ -173,6 +173,8 @@ const struct dsa_device_ops brcm_netdev_ops = { ...@@ -173,6 +173,8 @@ const struct dsa_device_ops brcm_netdev_ops = {
.rcv = brcm_tag_rcv, .rcv = brcm_tag_rcv,
.overhead = BRCM_TAG_LEN, .overhead = BRCM_TAG_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM);
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_BRCM_PREPEND #ifdef CONFIG_NET_DSA_TAG_BRCM_PREPEND
...@@ -198,3 +200,5 @@ const struct dsa_device_ops brcm_prepend_netdev_ops = { ...@@ -198,3 +200,5 @@ const struct dsa_device_ops brcm_prepend_netdev_ops = {
.overhead = BRCM_TAG_LEN, .overhead = BRCM_TAG_LEN,
}; };
#endif #endif
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_PREPEND);
...@@ -157,3 +157,5 @@ const struct dsa_device_ops dsa_netdev_ops = { ...@@ -157,3 +157,5 @@ const struct dsa_device_ops dsa_netdev_ops = {
.flow_dissect = dsa_tag_flow_dissect, .flow_dissect = dsa_tag_flow_dissect,
.overhead = DSA_HLEN, .overhead = DSA_HLEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_DSA);
...@@ -176,3 +176,5 @@ const struct dsa_device_ops edsa_netdev_ops = { ...@@ -176,3 +176,5 @@ const struct dsa_device_ops edsa_netdev_ops = {
.flow_dissect = edsa_tag_flow_dissect, .flow_dissect = edsa_tag_flow_dissect,
.overhead = EDSA_HLEN, .overhead = EDSA_HLEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_EDSA);
...@@ -109,3 +109,5 @@ const struct dsa_device_ops gswip_netdev_ops = { ...@@ -109,3 +109,5 @@ const struct dsa_device_ops gswip_netdev_ops = {
.rcv = gswip_tag_rcv, .rcv = gswip_tag_rcv,
.overhead = GSWIP_RX_HEADER_LEN, .overhead = GSWIP_RX_HEADER_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_GSWIP);
...@@ -140,6 +140,8 @@ const struct dsa_device_ops ksz9477_netdev_ops = { ...@@ -140,6 +140,8 @@ const struct dsa_device_ops ksz9477_netdev_ops = {
.overhead = KSZ9477_INGRESS_TAG_LEN, .overhead = KSZ9477_INGRESS_TAG_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_KSZ9477);
#define KSZ9893_TAIL_TAG_OVERRIDE BIT(5) #define KSZ9893_TAIL_TAG_OVERRIDE BIT(5)
#define KSZ9893_TAIL_TAG_LOOKUP BIT(6) #define KSZ9893_TAIL_TAG_LOOKUP BIT(6)
...@@ -173,3 +175,5 @@ const struct dsa_device_ops ksz9893_netdev_ops = { ...@@ -173,3 +175,5 @@ const struct dsa_device_ops ksz9893_netdev_ops = {
.rcv = ksz9477_rcv, .rcv = ksz9477_rcv,
.overhead = KSZ_INGRESS_TAG_LEN, .overhead = KSZ_INGRESS_TAG_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_KSZ9893);
...@@ -134,3 +134,5 @@ const struct dsa_device_ops lan9303_netdev_ops = { ...@@ -134,3 +134,5 @@ const struct dsa_device_ops lan9303_netdev_ops = {
.rcv = lan9303_rcv, .rcv = lan9303_rcv,
.overhead = LAN9303_TAG_LEN, .overhead = LAN9303_TAG_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_LAN9303);
...@@ -105,3 +105,5 @@ const struct dsa_device_ops mtk_netdev_ops = { ...@@ -105,3 +105,5 @@ const struct dsa_device_ops mtk_netdev_ops = {
.flow_dissect = mtk_tag_flow_dissect, .flow_dissect = mtk_tag_flow_dissect,
.overhead = MTK_HDR_LEN, .overhead = MTK_HDR_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_MTK);
...@@ -106,3 +106,5 @@ const struct dsa_device_ops qca_netdev_ops = { ...@@ -106,3 +106,5 @@ const struct dsa_device_ops qca_netdev_ops = {
.flow_dissect = qca_tag_flow_dissect, .flow_dissect = qca_tag_flow_dissect,
.overhead = QCA_HDR_LEN, .overhead = QCA_HDR_LEN,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_QCA);
...@@ -83,3 +83,5 @@ const struct dsa_device_ops trailer_netdev_ops = { ...@@ -83,3 +83,5 @@ const struct dsa_device_ops trailer_netdev_ops = {
.rcv = trailer_rcv, .rcv = trailer_rcv,
.overhead = 4, .overhead = 4,
}; };
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_TRAILER);
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