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

From: Vadim Fedorenko

Date: Wed Jan 07 2026 - 11:33:11 EST


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

}
if (emac->link) {

[...]