diff options
| author | David S. Miller <davem@davemloft.net> | 2023-07-04 21:42:27 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2023-07-04 21:42:27 +0300 |
| commit | 95c41842bcbdeab8debda1a4285850bd8235fbbe (patch) | |
| tree | aeccb79f2d01079501b28b59ed1c5ac7eff4b6e5 /include | |
| parent | ba7bdec3cbec7b0135f7ec0458073cbe9ae74de5 (diff) | |
| parent | a372d66af48506d9f7aaae2a474cd18f14d98cb8 (diff) | |
| download | linux-95c41842bcbdeab8debda1a4285850bd8235fbbe.tar.xz | |
Merge branch 'dsa-ll-fixes'
Vladimir Oltean says:
====================
dsa: Fix mangled link-local MAC DAs with SJA1105 DSA
The SJA1105 hardware tagging protocol is weird and will put DSA
information (source port, switch ID) in the MAC DA of the packets sent
to the CPU, and then send some additional (meta) packets which contain
the original bytes from the previous packet's MAC DA.
The tagging protocol driver contains logic to handle this, but the meta
frames are optional functionality, and there are configurations when
they aren't received (no PTP RX timestamping). Thus, the MAC DA from
packets sent to the stack is not correct in all cases.
Also, during testing it was found that the MAC DA patching procedure was
incorrect.
The investigation comes as a result of this discussion with Paolo:
https://lore.kernel.org/netdev/f494387c8d55d9b1d5a3e88beedeeb448f2e6cc3.camel@redhat.com/
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/dsa/sja1105.h | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/include/linux/dsa/sja1105.h b/include/linux/dsa/sja1105.h index 159e43171ccc..c177322f793d 100644 --- a/include/linux/dsa/sja1105.h +++ b/include/linux/dsa/sja1105.h @@ -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 { |
