Re: [EXTERNAL] Re: [PATCH net-next 1/2] net: ti: icssg-prueth: Add Frame Preemption MAC Merge support

From: Meghana Malladi

Date: Sun Jan 11 2026 - 23:52:24 EST


Hi Vadim,

On 1/7/26 22:02, Vadim Fedorenko wrote:
On 07/01/2026 12: 51, Meghana Malladi wrote: > This patch adds utility functions to configure firmware to enable > IET FPE. The highest priority queue is marked as Express queue and > lower priority queues as pre-emptable, as the default
ZjQcmQRYFpfptBannerStart
This message was sent from outside of Texas Instruments.
Do not click links or open attachments unless you recognize the source of this email and know the content is safe.
Report Suspicious
<https://us-phishalarm-ewt.proofpoint.com/EWT/v1/G3vK! urdgN3dP92274CXOvJKDvwNZ1ZfDoJYHZ2okAgDbtjDN3kmhmKUq71GAYLnzoFwx2mpfBIORw9Qoq3FoueFsPK2L6imycg$>
ZjQcmQRYFpfptBannerEnd

On 07/01/2026 12:51, Meghana Malladi wrote:
This patch adds utility functions to configure firmware to enable
IET FPE. The highest priority queue is marked as Express queue and
lower priority queues as pre-emptable, as the default configuration
which will be overwritten by the mqprio tc mask passed by tc qdisc.
Driver optionally allow configure the Verify state machine in the
firmware to check remote peer capability. If remote fails to respond
to Verify command, then FPE is disabled by firmware and TX FPE active
status is disabled.

This also adds the necessary hooks to enable IET/FPE feature in ICSSG
driver. IET/FPE gets configured when Link is up and gets disabled when link
goes down or device is stopped.

Signed-off-by: MD Danish Anwar <danishanwar@xxxxxx>
Signed-off-by: Meghana Malladi <m-malladi@xxxxxx>
---
drivers/net/ethernet/ti/Makefile | 2 +-
drivers/net/ethernet/ti/icssg/icssg_prueth.c | 9 +
drivers/net/ethernet/ti/icssg/icssg_prueth.h | 2 +
drivers/net/ethernet/ti/icssg/icssg_qos.c | 319 +++++++++++++++++++
drivers/net/ethernet/ti/icssg/icssg_qos.h | 48 +++
5 files changed, 379 insertions(+), 1 deletion(-)
create mode 100644 drivers/net/ethernet/ti/icssg/icssg_qos.c
create mode 100644 drivers/net/ethernet/ti/icssg/icssg_qos.h

diff --git a/drivers/net/ethernet/ti/Makefile b/drivers/net/ethernet/ti/Makefile
index 93c0a4d0e33a..2f588663fdf0 100644
--- a/drivers/net/ethernet/ti/Makefile
+++ b/drivers/net/ethernet/ti/Makefile
@@ -35,7 +35,7 @@ ti-am65-cpsw-nuss-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV) += am65-cpsw-switchdev.o
obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o
obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o icssg.o
-icssg-prueth-y := icssg/icssg_prueth.o icssg/icssg_switchdev.o
+icssg-prueth-y := icssg/icssg_prueth.o icssg/icssg_switchdev.o icssg/icssg_qos.o
obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg.o
icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
index f65041662173..668177eba3f8 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
@@ -378,6 +378,12 @@ static void emac_adjust_link(struct net_device *ndev)
} else {
icssg_set_port_state(emac, ICSSG_EMAC_PORT_DISABLE);
}
+
+ if (emac->link) {
+ icssg_qos_link_up(ndev);
+ } else {
+ icssg_qos_link_down(ndev);
+ }

I believe this chunk can be incorporated into if-statement right above


Yeah sure. Will update this as part of v2. Thanks.

}
if (emac->link) {

[...]