Commit edac6f63 authored by Vladimir Oltean's avatar Vladimir Oltean Committed by David S. Miller

Revert "net: dsa: Allow drivers to filter packets they can decode source port from"

This reverts commit cc1939e4.

Currently 2 classes of DSA drivers are able to send/receive packets
directly through the DSA master:
- drivers with DSA_TAG_PROTO_NONE
- sja1105

Now that sja1105 has gained the ability to perform traffic termination
even under the tricky case (VLAN-aware bridge), and that is much more
functional (we can perform VLAN-aware bridging with foreign interfaces),
there is no reason to keep this code in the receive path of the network
core. So delete it.
Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b6ad86e6
...@@ -88,11 +88,6 @@ struct dsa_device_ops { ...@@ -88,11 +88,6 @@ struct dsa_device_ops {
struct packet_type *pt); struct packet_type *pt);
void (*flow_dissect)(const struct sk_buff *skb, __be16 *proto, void (*flow_dissect)(const struct sk_buff *skb, __be16 *proto,
int *offset); int *offset);
/* Used to determine which traffic should match the DSA filter in
* eth_type_trans, and which, if any, should bypass it and be processed
* as regular on the master net device.
*/
bool (*filter)(const struct sk_buff *skb, struct net_device *dev);
unsigned int needed_headroom; unsigned int needed_headroom;
unsigned int needed_tailroom; unsigned int needed_tailroom;
const char *name; const char *name;
...@@ -246,7 +241,6 @@ struct dsa_port { ...@@ -246,7 +241,6 @@ struct dsa_port {
struct dsa_switch_tree *dst; struct dsa_switch_tree *dst;
struct sk_buff *(*rcv)(struct sk_buff *skb, struct net_device *dev, struct sk_buff *(*rcv)(struct sk_buff *skb, struct net_device *dev,
struct packet_type *pt); struct packet_type *pt);
bool (*filter)(const struct sk_buff *skb, struct net_device *dev);
enum { enum {
DSA_PORT_TYPE_UNUSED = 0, DSA_PORT_TYPE_UNUSED = 0,
...@@ -985,15 +979,6 @@ static inline bool netdev_uses_dsa(const struct net_device *dev) ...@@ -985,15 +979,6 @@ static inline bool netdev_uses_dsa(const struct net_device *dev)
return false; return false;
} }
static inline bool dsa_can_decode(const struct sk_buff *skb,
struct net_device *dev)
{
#if IS_ENABLED(CONFIG_NET_DSA)
return !dev->dsa_ptr->filter || dev->dsa_ptr->filter(skb, dev);
#endif
return false;
}
/* All DSA tags that push the EtherType to the right (basically all except tail /* All DSA tags that push the EtherType to the right (basically all except tail
* tags, which don't break dissection) can be treated the same from the * tags, which don't break dissection) can be treated the same from the
* perspective of the flow dissector. * perspective of the flow dissector.
......
...@@ -888,7 +888,6 @@ int dsa_port_mrp_del_ring_role(const struct dsa_port *dp, ...@@ -888,7 +888,6 @@ int dsa_port_mrp_del_ring_role(const struct dsa_port *dp,
void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp, void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp,
const struct dsa_device_ops *tag_ops) const struct dsa_device_ops *tag_ops)
{ {
cpu_dp->filter = tag_ops->filter;
cpu_dp->rcv = tag_ops->rcv; cpu_dp->rcv = tag_ops->rcv;
cpu_dp->tag_ops = tag_ops; cpu_dp->tag_ops = tag_ops;
} }
......
...@@ -182,12 +182,8 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) ...@@ -182,12 +182,8 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev)
* at all, so we check here whether one of those tagging * at all, so we check here whether one of those tagging
* variants has been configured on the receiving interface, * variants has been configured on the receiving interface,
* and if so, set skb->protocol without looking at the packet. * and if so, set skb->protocol without looking at the packet.
* The DSA tagging protocol may be able to decode some but not all
* traffic (for example only for management). In that case give it the
* option to filter the packets from which it can decode source port
* information.
*/ */
if (unlikely(netdev_uses_dsa(dev)) && dsa_can_decode(skb, dev)) if (unlikely(netdev_uses_dsa(dev)))
return htons(ETH_P_XDSA); return htons(ETH_P_XDSA);
if (likely(eth_proto_is_802_3(eth->h_proto))) if (likely(eth_proto_is_802_3(eth->h_proto)))
......
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