mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
net: enetc: move sync packet modification before dma_map_single()
Move sync packet content modification before dma_map_single() to follow correct DMA usage process, even though the previous sequence worked due to hardware DMA-coherence support (LS1028A). But for the upcoming i.MX95, its ENETC (v4) does not support "dma-coherent", so this step is very necessary. Otherwise, the originTimestamp and correction fields of the sent packets will still be the values before the modification. Signed-off-by: Wei Fang <wei.fang@nxp.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20250829050615.1247468-13-wei.fang@nxp.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
d889abaac2
commit
7776d5e6e3
|
|
@ -303,6 +303,7 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb)
|
|||
unsigned int f;
|
||||
dma_addr_t dma;
|
||||
u8 flags = 0;
|
||||
u32 tstamp;
|
||||
|
||||
enetc_clear_tx_bd(&temp_bd);
|
||||
if (skb->ip_summed == CHECKSUM_PARTIAL) {
|
||||
|
|
@ -327,6 +328,13 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb)
|
|||
}
|
||||
}
|
||||
|
||||
if (enetc_cb->flag & ENETC_F_TX_ONESTEP_SYNC_TSTAMP) {
|
||||
do_onestep_tstamp = true;
|
||||
tstamp = enetc_update_ptp_sync_msg(priv, skb);
|
||||
} else if (enetc_cb->flag & ENETC_F_TX_TSTAMP) {
|
||||
do_twostep_tstamp = true;
|
||||
}
|
||||
|
||||
i = tx_ring->next_to_use;
|
||||
txbd = ENETC_TXBD(*tx_ring, i);
|
||||
prefetchw(txbd);
|
||||
|
|
@ -346,11 +354,6 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb)
|
|||
count++;
|
||||
|
||||
do_vlan = skb_vlan_tag_present(skb);
|
||||
if (enetc_cb->flag & ENETC_F_TX_ONESTEP_SYNC_TSTAMP)
|
||||
do_onestep_tstamp = true;
|
||||
else if (enetc_cb->flag & ENETC_F_TX_TSTAMP)
|
||||
do_twostep_tstamp = true;
|
||||
|
||||
tx_swbd->do_twostep_tstamp = do_twostep_tstamp;
|
||||
tx_swbd->qbv_en = !!(priv->active_offloads & ENETC_F_QBV);
|
||||
tx_swbd->check_wb = tx_swbd->do_twostep_tstamp || tx_swbd->qbv_en;
|
||||
|
|
@ -393,8 +396,6 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb)
|
|||
}
|
||||
|
||||
if (do_onestep_tstamp) {
|
||||
u32 tstamp = enetc_update_ptp_sync_msg(priv, skb);
|
||||
|
||||
/* Configure extension BD */
|
||||
temp_bd.ext.tstamp = cpu_to_le32(tstamp);
|
||||
e_flags |= ENETC_TXBD_E_FLAGS_ONE_STEP_PTP;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user