mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
net: dsa: sja1105: always enable the send_meta options
incl_srcpt has the limitation, mentioned in commitb4638af888
("net: dsa: sja1105: always enable the INCL_SRCPT option"), that frames with a MAC DA of 01:80:c2:xx:yy:zz will be received as 01:80:c2:00:00:zz unless PTP RX timestamping is enabled. The incl_srcpt option was initially unconditionally enabled, then that changed with commit42824463d3
("net: dsa: sja1105: Limit use of incl_srcpt to bridge+vlan mode"), then again withb4638af888
("net: dsa: sja1105: always enable the INCL_SRCPT option"). Bottom line is that it now needs to be always enabled, otherwise the driver does not have a reliable source of information regarding source_port and switch_id for link-local traffic (tag_8021q VLANs may be imprecise since now they identify an entire bridging domain when ports are not standalone). If we accept that PTP RX timestamping (and therefore, meta frame generation) is always enabled in hardware, then that limitation could be avoided and packets with any MAC DA can be properly received, because meta frames do contain the original bytes from the MAC DA of their associated link-local packet. This change enables meta frame generation unconditionally, which also has the nice side effects of simplifying the switch control path (a switch reset is no longer required on hwtstamping settings change) and the tagger data path (it no longer needs to be informed whether to expect meta frames or not - it always does). Fixes:227d07a07e
("net: dsa: sja1105: Add support for traffic through standalone ports") Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1dcf6efd5f
commit
a372d66af4
@@ -48,13 +48,9 @@ struct sja1105_deferred_xmit_work {
|
||||
|
||||
/* Global tagger data */
|
||||
struct sja1105_tagger_data {
|
||||
/* Tagger to switch */
|
||||
void (*xmit_work_fn)(struct kthread_work *work);
|
||||
void (*meta_tstamp_handler)(struct dsa_switch *ds, int port, u8 ts_id,
|
||||
enum sja1110_meta_tstamp dir, u64 tstamp);
|
||||
/* Switch to tagger */
|
||||
bool (*rxtstamp_get_state)(struct dsa_switch *ds);
|
||||
void (*rxtstamp_set_state)(struct dsa_switch *ds, bool on);
|
||||
};
|
||||
|
||||
struct sja1105_skb_cb {
|
||||
|
Reference in New Issue
Block a user