]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: stmmac: use first_desc for TBS
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 20 Mar 2026 16:47:32 +0000 (16:47 +0000)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 24 Mar 2026 11:09:17 +0000 (12:09 +0100)
Rather than freshly getting a pointer for the TBS descriptor (because
we want to access its enhanced fields) convert the existing first_desc
basic descriptor to a pointer to the enhanced descriptor.

Add a comment explaining why it is safe to convert from the basic
descriptor pointer to the enhanced descriptor pointer.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1w3d0W-0000000DfM7-2BMA@rmk-PC.armlinux.org.uk
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
[pabeni@redhat.com: fixed comment typo]
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index 58a84570821cda37d59398eae9812ddd7e5738d5..a8a18d79b6a88868a8a5a56d99ea5bac77d35991 100644 (file)
@@ -4794,10 +4794,15 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
        if (priv->sarc_type)
                stmmac_set_desc_sarc(priv, first_desc, priv->sarc_type);
 
+       /* STMMAC_TBS_EN can only be set if STMMAC_TBS_AVAIL has already
+        * been set, which means the underlying type of the descriptors
+        * will be struct stmmac_edesc. Therefore, it is safe to convert
+        * the basic descriptor to the enhanced descriptor here.
+        */
        if (tx_q->tbs & STMMAC_TBS_EN) {
                struct timespec64 ts = ns_to_timespec64(skb->tstamp);
 
-               tbs_desc = &tx_q->dma_entx[first_entry];
+               tbs_desc = dma_desc_to_edesc(first_desc);
                stmmac_set_desc_tbs(priv, tbs_desc, ts.tv_sec, ts.tv_nsec);
        }