mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> v2: Move name to end of structure, keeping the hot entries at the beginning. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									dfedd3b624
								
							
						
					
					
						commit
						875138f81d
					
				
					 11 changed files with 14 additions and 43 deletions
				
			
		| 
						 | 
					@ -56,6 +56,7 @@ struct dsa_device_ops {
 | 
				
			||||||
	int (*flow_dissect)(const struct sk_buff *skb, __be16 *proto,
 | 
						int (*flow_dissect)(const struct sk_buff *skb, __be16 *proto,
 | 
				
			||||||
			    int *offset);
 | 
								    int *offset);
 | 
				
			||||||
	unsigned int overhead;
 | 
						unsigned int overhead;
 | 
				
			||||||
 | 
						const char *name;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct dsa_switch_tree {
 | 
					struct dsa_switch_tree {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,7 @@ static struct sk_buff *dsa_slave_notag_xmit(struct sk_buff *skb,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct dsa_device_ops none_ops = {
 | 
					static const struct dsa_device_ops none_ops = {
 | 
				
			||||||
 | 
						.name	= "none",
 | 
				
			||||||
	.xmit	= dsa_slave_notag_xmit,
 | 
						.xmit	= dsa_slave_notag_xmit,
 | 
				
			||||||
	.rcv	= NULL,
 | 
						.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 *dsa_tag_protocol_to_str(const struct dsa_device_ops *ops)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *protocol_name[DSA_TAG_LAST] = {
 | 
						return ops->name;
 | 
				
			||||||
#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];
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol)
 | 
					const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 = {
 | 
					const struct dsa_device_ops brcm_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "brcm",
 | 
				
			||||||
	.xmit	= brcm_tag_xmit,
 | 
						.xmit	= brcm_tag_xmit,
 | 
				
			||||||
	.rcv	= brcm_tag_rcv,
 | 
						.rcv	= brcm_tag_rcv,
 | 
				
			||||||
	.overhead = BRCM_TAG_LEN,
 | 
						.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 = {
 | 
					const struct dsa_device_ops brcm_prepend_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "brcm-prepend",
 | 
				
			||||||
	.xmit	= brcm_tag_xmit_prepend,
 | 
						.xmit	= brcm_tag_xmit_prepend,
 | 
				
			||||||
	.rcv	= brcm_tag_rcv_prepend,
 | 
						.rcv	= brcm_tag_rcv_prepend,
 | 
				
			||||||
	.overhead = BRCM_TAG_LEN,
 | 
						.overhead = BRCM_TAG_LEN,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 = {
 | 
					const struct dsa_device_ops dsa_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "dsa",
 | 
				
			||||||
	.xmit	= dsa_xmit,
 | 
						.xmit	= dsa_xmit,
 | 
				
			||||||
	.rcv	= dsa_rcv,
 | 
						.rcv	= dsa_rcv,
 | 
				
			||||||
	.flow_dissect   = dsa_tag_flow_dissect,
 | 
						.flow_dissect   = dsa_tag_flow_dissect,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 = {
 | 
					const struct dsa_device_ops edsa_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "edsa",
 | 
				
			||||||
	.xmit	= edsa_xmit,
 | 
						.xmit	= edsa_xmit,
 | 
				
			||||||
	.rcv	= edsa_rcv,
 | 
						.rcv	= edsa_rcv,
 | 
				
			||||||
	.flow_dissect   = edsa_tag_flow_dissect,
 | 
						.flow_dissect   = edsa_tag_flow_dissect,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,6 +104,7 @@ static struct sk_buff *gswip_tag_rcv(struct sk_buff *skb,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops gswip_netdev_ops = {
 | 
					const struct dsa_device_ops gswip_netdev_ops = {
 | 
				
			||||||
 | 
						.name = "gwsip",
 | 
				
			||||||
	.xmit = gswip_tag_xmit,
 | 
						.xmit = gswip_tag_xmit,
 | 
				
			||||||
	.rcv = gswip_tag_rcv,
 | 
						.rcv = gswip_tag_rcv,
 | 
				
			||||||
	.overhead = GSWIP_RX_HEADER_LEN,
 | 
						.overhead = GSWIP_RX_HEADER_LEN,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -134,6 +134,7 @@ static struct sk_buff *ksz9477_rcv(struct sk_buff *skb, struct net_device *dev,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops ksz9477_netdev_ops = {
 | 
					const struct dsa_device_ops ksz9477_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "ksz9477",
 | 
				
			||||||
	.xmit	= ksz9477_xmit,
 | 
						.xmit	= ksz9477_xmit,
 | 
				
			||||||
	.rcv	= ksz9477_rcv,
 | 
						.rcv	= ksz9477_rcv,
 | 
				
			||||||
	.overhead = KSZ9477_INGRESS_TAG_LEN,
 | 
						.overhead = KSZ9477_INGRESS_TAG_LEN,
 | 
				
			||||||
| 
						 | 
					@ -167,6 +168,7 @@ static struct sk_buff *ksz9893_xmit(struct sk_buff *skb,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops ksz9893_netdev_ops = {
 | 
					const struct dsa_device_ops ksz9893_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "ksz9893",
 | 
				
			||||||
	.xmit	= ksz9893_xmit,
 | 
						.xmit	= ksz9893_xmit,
 | 
				
			||||||
	.rcv	= ksz9477_rcv,
 | 
						.rcv	= ksz9477_rcv,
 | 
				
			||||||
	.overhead = KSZ_INGRESS_TAG_LEN,
 | 
						.overhead = KSZ_INGRESS_TAG_LEN,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -129,6 +129,7 @@ static struct sk_buff *lan9303_rcv(struct sk_buff *skb, struct net_device *dev,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops lan9303_netdev_ops = {
 | 
					const struct dsa_device_ops lan9303_netdev_ops = {
 | 
				
			||||||
 | 
						.name = "lan9303",
 | 
				
			||||||
	.xmit = lan9303_xmit,
 | 
						.xmit = lan9303_xmit,
 | 
				
			||||||
	.rcv = lan9303_rcv,
 | 
						.rcv = lan9303_rcv,
 | 
				
			||||||
	.overhead = LAN9303_TAG_LEN,
 | 
						.overhead = LAN9303_TAG_LEN,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,6 +99,7 @@ static int mtk_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops mtk_netdev_ops = {
 | 
					const struct dsa_device_ops mtk_netdev_ops = {
 | 
				
			||||||
 | 
						.name		= "mtk",
 | 
				
			||||||
	.xmit		= mtk_tag_xmit,
 | 
						.xmit		= mtk_tag_xmit,
 | 
				
			||||||
	.rcv		= mtk_tag_rcv,
 | 
						.rcv		= mtk_tag_rcv,
 | 
				
			||||||
	.flow_dissect	= mtk_tag_flow_dissect,
 | 
						.flow_dissect	= mtk_tag_flow_dissect,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,6 +100,7 @@ static int qca_tag_flow_dissect(const struct sk_buff *skb, __be16 *proto,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops qca_netdev_ops = {
 | 
					const struct dsa_device_ops qca_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "qca",
 | 
				
			||||||
	.xmit	= qca_tag_xmit,
 | 
						.xmit	= qca_tag_xmit,
 | 
				
			||||||
	.rcv	= qca_tag_rcv,
 | 
						.rcv	= qca_tag_rcv,
 | 
				
			||||||
	.flow_dissect = qca_tag_flow_dissect,
 | 
						.flow_dissect = qca_tag_flow_dissect,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,6 +78,7 @@ static struct sk_buff *trailer_rcv(struct sk_buff *skb, struct net_device *dev,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct dsa_device_ops trailer_netdev_ops = {
 | 
					const struct dsa_device_ops trailer_netdev_ops = {
 | 
				
			||||||
 | 
						.name	= "trailer",
 | 
				
			||||||
	.xmit	= trailer_xmit,
 | 
						.xmit	= trailer_xmit,
 | 
				
			||||||
	.rcv	= trailer_rcv,
 | 
						.rcv	= trailer_rcv,
 | 
				
			||||||
	.overhead = 4,
 | 
						.overhead = 4,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue