> >On the switch asics we work with, the driver has information if the > >packet was > >forwarded in hardware. This is per packet reason code telling why the > >CPU is seeing the packet. > >The driver can use this information to reset skb->offload_fwd_mark to > >allow software forward.
> I am not positive this is universally available across different > switch vendors. It is not universally available. We cannot rely on it being available with switches supported by DSA. We have a few choices: 1) We assume anything the switch forwards to the CPU has also been sent out whatever ports of the switch it needs to. Set offload_fwd_mark. 2) We assume anything the switch forwards to the CPU has not gone anywhere else, and the bridge needs to send it out whatever ports it thinks. Don't set offload_fwd_mark. 3) We define some rules about what packets the switch should handle, and then do some deep packet inspection to decide if offload_fwd_mark should be set or not. I don't see 3) being possible. We are dealing with a fixed silicon data path, not something which is fully programmable. So it is down to 1) or 2). I've been assuming 1), but maybe we need to discuss that as well. Andrew