Commit 875138f8 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller
Browse files

dsa: Move tagger name into its ops structure



Rather than keep a list to map a tagger ops to a name, place the name
into the ops structure. This removes the hard coded list, a step
towards making the taggers more dynamic.

Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>

v2:
Move name to end of structure, keeping the hot entries at the beginning.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent dfedd3b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ struct dsa_device_ops {
	int (*flow_dissect)(const struct sk_buff *skb, __be16 *proto,
			    int *offset);
	unsigned int overhead;
	const char *name;
};

struct dsa_switch_tree {
+2 −43
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ static struct sk_buff *dsa_slave_notag_xmit(struct sk_buff *skb,
}

static const struct dsa_device_ops none_ops = {
	.name	= "none",
	.xmit	= dsa_slave_notag_xmit,
	.rcv	= NULL,
};
@@ -76,49 +77,7 @@ const struct dsa_device_ops *dsa_device_ops[DSA_TAG_LAST] = {

const char *dsa_tag_protocol_to_str(const struct dsa_device_ops *ops)
{
	const char *protocol_name[DSA_TAG_LAST] = {
#ifdef CONFIG_NET_DSA_TAG_BRCM
		[DSA_TAG_PROTO_BRCM] = "brcm",
#endif
#ifdef CONFIG_NET_DSA_TAG_BRCM_PREPEND
		[DSA_TAG_PROTO_BRCM_PREPEND] = "brcm-prepend",
#endif
#ifdef CONFIG_NET_DSA_TAG_DSA
		[DSA_TAG_PROTO_DSA] = "dsa",
#endif
#ifdef CONFIG_NET_DSA_TAG_EDSA
		[DSA_TAG_PROTO_EDSA] = "edsa",
#endif
#ifdef CONFIG_NET_DSA_TAG_GSWIP
		[DSA_TAG_PROTO_GSWIP] = "gswip",
#endif
#ifdef CONFIG_NET_DSA_TAG_KSZ9477
		[DSA_TAG_PROTO_KSZ9477] = "ksz9477",
		[DSA_TAG_PROTO_KSZ9893] = "ksz9893",
#endif
#ifdef CONFIG_NET_DSA_TAG_LAN9303
		[DSA_TAG_PROTO_LAN9303] = "lan9303",
#endif
#ifdef CONFIG_NET_DSA_TAG_MTK
		[DSA_TAG_PROTO_MTK] = "mtk",
#endif
#ifdef CONFIG_NET_DSA_TAG_QCA
		[DSA_TAG_PROTO_QCA] = "qca",
#endif
#ifdef CONFIG_NET_DSA_TAG_TRAILER
		[DSA_TAG_PROTO_TRAILER] = "trailer",
#endif
		[DSA_TAG_PROTO_NONE] = "none",
	};
	unsigned int i;

	BUILD_BUG_ON(ARRAY_SIZE(protocol_name) != DSA_TAG_LAST);

	for (i = 0; i < ARRAY_SIZE(dsa_device_ops); i++)
		if (ops == dsa_device_ops[i])
			return protocol_name[i];

	return protocol_name[DSA_TAG_PROTO_NONE];
	return ops->name;
};

const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol)
+2 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ static struct sk_buff *brcm_tag_rcv(struct sk_buff *skb, struct net_device *dev,
}

const struct dsa_device_ops brcm_netdev_ops = {
	.name	= "brcm",
	.xmit	= brcm_tag_xmit,
	.rcv	= brcm_tag_rcv,
	.overhead = BRCM_TAG_LEN,
@@ -191,6 +192,7 @@ static struct sk_buff *brcm_tag_rcv_prepend(struct sk_buff *skb,
}

const struct dsa_device_ops brcm_prepend_netdev_ops = {
	.name	= "brcm-prepend",
	.xmit	= brcm_tag_xmit_prepend,
	.rcv	= brcm_tag_rcv_prepend,
	.overhead = BRCM_TAG_LEN,
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ static int dsa_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto,
}

const struct dsa_device_ops dsa_netdev_ops = {
	.name	= "dsa",
	.xmit	= dsa_xmit,
	.rcv	= dsa_rcv,
	.flow_dissect   = dsa_tag_flow_dissect,
+1 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ static int edsa_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto,
}

const struct dsa_device_ops edsa_netdev_ops = {
	.name	= "edsa",
	.xmit	= edsa_xmit,
	.rcv	= edsa_rcv,
	.flow_dissect   = edsa_tag_flow_dissect,
Loading