diff options
| author | Alexander Duyck <alexander.h.duyck@intel.com> | 2014-09-15 13:00:19 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-09-15 17:24:20 -0400 |
| commit | 5075314e4e4b559cc37675ad8a721a89bccd6284 (patch) | |
| tree | 37d72bc57dd16717b15acbb14e5c98e7d36ced19 /include/linux | |
| parent | 6cca9adb786184be21f30be0982e3ea0281f75cb (diff) | |
dsa: Split ops up, and avoid assigning tag_protocol and receive separately
This change addresses several issues.
First, it was possible to set tag_protocol without setting the ops pointer.
To correct that I have reordered things so that rcv is now populated before
we set tag_protocol.
Second, it didn't make much sense to keep setting the device ops each time a
new slave was registered. So by moving the receive portion out into root
switch initialization that issue should be addressed.
Third, I wanted to avoid sending tags if the rcv pointer was not registered
so I changed the tag check to verify if the rcv function pointer is set on
the root tree. If it is then we start sending DSA tagged frames.
Finally I split the device ops pointer in the structures into two spots. I
placed the rcv function pointer in the root switch since this makes it
easiest to access from there, and I placed the xmit function pointer in the
slave for the same reason.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/netdevice.h | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index f9e81d10a3b9..28d4378615e5 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -1928,13 +1928,6 @@ struct udp_offload { | |||
| 1928 | struct offload_callbacks callbacks; | 1928 | struct offload_callbacks callbacks; |
| 1929 | }; | 1929 | }; |
| 1930 | 1930 | ||
| 1931 | struct dsa_device_ops { | ||
| 1932 | netdev_tx_t (*xmit)(struct sk_buff *skb, struct net_device *dev); | ||
| 1933 | int (*rcv)(struct sk_buff *skb, struct net_device *dev, | ||
| 1934 | struct packet_type *pt, struct net_device *orig_dev); | ||
| 1935 | }; | ||
| 1936 | |||
| 1937 | |||
| 1938 | /* often modified stats are per cpu, other are shared (netdev->stats) */ | 1931 | /* often modified stats are per cpu, other are shared (netdev->stats) */ |
| 1939 | struct pcpu_sw_netstats { | 1932 | struct pcpu_sw_netstats { |
| 1940 | u64 rx_packets; | 1933 | u64 rx_packets; |
