Re: [PATCH 3/6] [NET] dsa: add support for original DSA tagging format
From: Lennert Buytenhek <hidden>
Date: 2008-10-03 19:32:54
On Fri, Oct 03, 2008 at 06:25:59PM +0100, Ben Hutchings wrote:
quoted
Most of the DSA switches currently in the field do not support the Ethertype DSA tagging format that one of the previous patches added support for, but only the original DSA tagging format. The original DSA tagging format carries the same information as the Ethertype DSA tagging format, but with the difference that it does not have an ethertype field. In other words, when receiving a packet that is tagged with an original DSA tag, there is no way of telling in eth_type_trans() that this packet is in fact a DSA-tagged packet. This patch adds a hook into eth_type_trans() which is only compiled in if support for a switch chip that doesn't support Ethertype DSA is selected, and which checks whether there is a DSA switch driver instance attached to this network device which uses the old tag format. If so, it sets the protocol field to ETH_P_DSA without looking at the packet, so that the packet ends up in the right place.[...] Why should this go in eth_type_trans()? Why don't you put the hook into the specific network driver(s) that need it? For that matter, why should dsa_ptr go in struct net_device and not in the private state for the specific network drivers that need it?
DSA is just another protocol. Putting hooks in specific network driver to handle a certain protocol doesn't seem like the right thing to do to me.