Hi, To make this complete, I think you have to take the dt binding commit 6fb8c20a04be ("dt-bindings: net: snps,dwmac: Tx coe unsupported") also from the upstream. BR, Rohan > Subject: Patch "net: stmmac: Tx coe sw fallback" has been added to the 6.6- > stable tree > > This is a note to let you know that I've just added the patch titled > > net: stmmac: Tx coe sw fallback > > to the 6.6-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable- > queue.git;a=summary > > The filename of the patch is: > net-stmmac-tx-coe-sw-fallback.patch > and it can be found in the queue-6.6 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, please > let <stable@xxxxxxxxxxxxxxx> know about it. > > > > commit 071be3267bf1cf00cff09a9e6758055b060f2a7b > Author: Rohan G Thomas <rohan.g.thomas@xxxxxxxxx> > Date: Sat Sep 16 14:33:12 2023 +0800 > > net: stmmac: Tx coe sw fallback > > [ Upstream commit 8452a05b2c633b708dbe3e742f71b24bf21fe42d ] > > Add sw fallback of tx checksum calculation for those tx queues that > don't support tx checksum offloading. DW xGMAC IP can be synthesized > such that it can support tx checksum offloading only for a few > initial tx queues. Also as Serge pointed out, for the DW QoS IP, tx > coe can be individually configured for each tx queue. > > So when tx coe is enabled, for any tx queue that doesn't support > tx coe with 'coe-unsupported' flag set will have a sw fallback > happen in the driver for tx checksum calculation when any packets to > be transmitted on these tx queues. > > Signed-off-by: Rohan G Thomas <rohan.g.thomas@xxxxxxxxx> > Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> > Stable-dep-of: c2945c435c99 ("net: stmmac: Prevent DSA tags from > breaking COE") > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index 1bfcf673b3ce..59e07efe08c9 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -4417,6 +4417,16 @@ static netdev_tx_t stmmac_xmit(struct sk_buff > *skb, struct net_device *dev) > WARN_ON(tx_q->tx_skbuff[first_entry]); > > csum_insertion = (skb->ip_summed == CHECKSUM_PARTIAL); > + /* DWMAC IPs can be synthesized to support tx coe only for a few tx > + * queues. In that case, checksum offloading for those queues that > don't > + * support tx coe needs to fallback to software checksum calculation. > + */ > + if (csum_insertion && > + priv->plat->tx_queues_cfg[queue].coe_unsupported) { > + if (unlikely(skb_checksum_help(skb))) > + goto dma_map_err; > + csum_insertion = !csum_insertion; > + } > > if (likely(priv->extend_desc)) > desc = (struct dma_desc *)(tx_q->dma_etx + entry); diff --git > a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > index 2f0678f15fb7..30d5e635190e 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > @@ -276,6 +276,9 @@ static int stmmac_mtl_setup(struct platform_device > *pdev, > plat->tx_queues_cfg[queue].use_prio = true; > } > > + plat->tx_queues_cfg[queue].coe_unsupported = > + of_property_read_bool(q_node, "snps,coe- > unsupported"); > + > queue++; > } > if (queue != plat->tx_queues_to_use) { diff --git > a/include/linux/stmmac.h b/include/linux/stmmac.h index > e3f7ee169c08..5acb77968902 100644 > --- a/include/linux/stmmac.h > +++ b/include/linux/stmmac.h > @@ -139,6 +139,7 @@ struct stmmac_rxq_cfg { > > struct stmmac_txq_cfg { > u32 weight; > + bool coe_unsupported; > u8 mode_to_use; > /* Credit Base Shaper parameters */ > u32 send_slope;