mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 11:40:19 -04:00
Merge branch 'misc-drivers-sw-timestamp-changes'
Jason Xing says: ==================== misc drivers' sw timestamp changes This series modified three outstanding drivers among more than 100 drivers because the software timestamp generation is too early. The idea of this series is derived from the brief talk[1] with Willem. In conclusion, this series makes the generation of software timestamp near/before kicking the doorbell for drivers. [1]: https://lore.kernel.org/all/681b9d2210879_1f6aad294bc@willemb.c.googlers.com.notmuch/ v2: https://lore.kernel.org/20250508033328.12507-1-kerneljasonxing@gmail.com ==================== Link: https://patch.msgid.link/20250510134812.48199-1-kerneljasonxing@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -123,7 +123,6 @@ static netdev_tx_t aq_ndev_start_xmit(struct sk_buff *skb, struct net_device *nd
|
||||
}
|
||||
#endif
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
return aq_nic_xmit(aq_nic, skb);
|
||||
}
|
||||
|
||||
|
||||
@@ -898,6 +898,8 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
|
||||
|
||||
frags = aq_nic_map_skb(self, skb, ring);
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
if (likely(frags)) {
|
||||
err = self->aq_hw_ops->hw_ring_tx_xmit(self->aq_hw,
|
||||
ring, frags);
|
||||
|
||||
@@ -1533,7 +1533,6 @@ static netdev_tx_t cxgb4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
} else {
|
||||
q = &adap->sge.ethtxq[qidx + pi->first_qset];
|
||||
}
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
reclaim_completed_tx(adap, &q->q, -1, true);
|
||||
cntrl = TXPKT_L4CSUM_DIS_F | TXPKT_IPCSUM_DIS_F;
|
||||
@@ -1706,6 +1705,8 @@ static netdev_tx_t cxgb4_eth_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
cpl->len = htons(skb->len);
|
||||
cpl->ctrl1 = cpu_to_be64(cntrl);
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
if (immediate) {
|
||||
cxgb4_inline_tx_skb(skb, &q->q, sgl);
|
||||
dev_consume_skb_any(skb);
|
||||
@@ -2268,7 +2269,6 @@ static int ethofld_hard_xmit(struct net_device *dev,
|
||||
|
||||
d = &eosw_txq->desc[eosw_txq->last_pidx];
|
||||
skb = d->skb;
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
wr = (struct fw_eth_tx_eo_wr *)&eohw_txq->q.desc[eohw_txq->q.pidx];
|
||||
if (unlikely(eosw_txq->state != CXGB4_EO_STATE_ACTIVE &&
|
||||
@@ -2373,6 +2373,7 @@ static int ethofld_hard_xmit(struct net_device *dev,
|
||||
eohw_txq->vlan_ins++;
|
||||
|
||||
txq_advance(&eohw_txq->q, ndesc);
|
||||
skb_tx_timestamp(skb);
|
||||
cxgb4_ring_tx_db(adap, &eohw_txq->q, ndesc);
|
||||
eosw_txq_advance_index(&eosw_txq->last_pidx, 1, eosw_txq->ndesc);
|
||||
|
||||
|
||||
@@ -1640,6 +1640,7 @@ static int chcr_ktls_tunnel_pkt(struct chcr_ktls_info *tx_info,
|
||||
cxgb4_write_sgl(skb, &q->q, pos, end, 0, sgl_sdesc->addr);
|
||||
sgl_sdesc->skb = skb;
|
||||
chcr_txq_advance(&q->q, ndesc);
|
||||
skb_tx_timestamp(skb);
|
||||
cxgb4_ring_tx_db(tx_info->adap, &q->q, ndesc);
|
||||
return 0;
|
||||
}
|
||||
@@ -1903,7 +1904,6 @@ static int chcr_ktls_sw_fallback(struct sk_buff *skb,
|
||||
th = tcp_hdr(nskb);
|
||||
skb_offset = skb_tcp_all_headers(nskb);
|
||||
data_len = nskb->len - skb_offset;
|
||||
skb_tx_timestamp(nskb);
|
||||
|
||||
if (chcr_ktls_tunnel_pkt(tx_info, nskb, q))
|
||||
goto out;
|
||||
|
||||
@@ -4497,8 +4497,6 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (priv->sarc_type)
|
||||
stmmac_set_desc_sarc(priv, first, priv->sarc_type);
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
|
||||
priv->hwts_tx_en)) {
|
||||
/* declare that device is doing timestamping */
|
||||
@@ -4531,6 +4529,7 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
}
|
||||
|
||||
netdev_tx_sent_queue(netdev_get_tx_queue(dev, queue), skb->len);
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
stmmac_flush_tx_descriptors(priv, queue);
|
||||
stmmac_tx_timer_arm(priv, queue);
|
||||
@@ -4774,8 +4773,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (priv->sarc_type)
|
||||
stmmac_set_desc_sarc(priv, first, priv->sarc_type);
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
/* Ready to fill the first descriptor and set the OWN bit w/o any
|
||||
* problems because all the descriptors are actually ready to be
|
||||
* passed to the DMA engine.
|
||||
@@ -4822,7 +4819,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
netdev_tx_sent_queue(netdev_get_tx_queue(dev, queue), skb->len);
|
||||
|
||||
stmmac_enable_dma_transmission(priv, priv->ioaddr, queue);
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
stmmac_flush_tx_descriptors(priv, queue);
|
||||
stmmac_tx_timer_arm(priv, queue);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user