aboutsummaryrefslogtreecommitdiffstats
path: root/net/dsa/slave.c
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2016-06-04 15:17:03 -0400
committerDavid S. Miller <davem@davemloft.net>2016-06-04 17:29:54 -0400
commit39a7f2a4eb496c0c68cc93fcb403190b48605168 (patch)
tree4c9edb3b66b95a2a6215e2844c131ac618424b8b /net/dsa/slave.c
parent5377b802fc9fde9442dcaba571edefcb73765056 (diff)
net: dsa: Refactor selection of tag ops into a function
Replace the two switch statements with an array lookup, and store the result in the dsa tree structure. The drivers no longer need to know the selected tag protocol, so remove it from the dsa switch structure. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa/slave.c')
-rw-r--r--net/dsa/slave.c35
1 files changed, 1 insertions, 34 deletions
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 52f1183c42a0..35e5f0f6688b 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -521,14 +521,6 @@ static netdev_tx_t dsa_slave_xmit(struct sk_buff *skb, struct net_device *dev)
521 return NETDEV_TX_OK; 521 return NETDEV_TX_OK;
522} 522}
523 523
524static struct sk_buff *dsa_slave_notag_xmit(struct sk_buff *skb,
525 struct net_device *dev)
526{
527 /* Just return the original SKB */
528 return skb;
529}
530
531
532/* ethtool operations *******************************************************/ 524/* ethtool operations *******************************************************/
533static int 525static int
534dsa_slave_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) 526dsa_slave_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
@@ -1151,32 +1143,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
1151 p = netdev_priv(slave_dev); 1143 p = netdev_priv(slave_dev);
1152 p->parent = ds; 1144 p->parent = ds;
1153 p->port = port; 1145 p->port = port;
1154 1146 p->xmit = dst->tag_ops->xmit;
1155 switch (ds->dst->tag_protocol) {
1156#ifdef CONFIG_NET_DSA_TAG_DSA
1157 case DSA_TAG_PROTO_DSA:
1158 p->xmit = dsa_netdev_ops.xmit;
1159 break;
1160#endif
1161#ifdef CONFIG_NET_DSA_TAG_EDSA
1162 case DSA_TAG_PROTO_EDSA:
1163 p->xmit = edsa_netdev_ops.xmit;
1164 break;
1165#endif
1166#ifdef CONFIG_NET_DSA_TAG_TRAILER
1167 case DSA_TAG_PROTO_TRAILER:
1168 p->xmit = trailer_netdev_ops.xmit;
1169 break;
1170#endif
1171#ifdef CONFIG_NET_DSA_TAG_BRCM
1172 case DSA_TAG_PROTO_BRCM:
1173 p->xmit = brcm_netdev_ops.xmit;
1174 break;
1175#endif
1176 default:
1177 p->xmit = dsa_slave_notag_xmit;
1178 break;
1179 }
1180 1147
1181 p->old_pause = -1; 1148 p->old_pause = -1;
1182 p->old_link = -1; 1149 p->old_link = -1;