From nobody Tue Feb 10 17:34:55 2026 Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67CF33816F4 for ; Sun, 8 Feb 2026 22:56:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770591371; cv=none; b=lr6An6iUU1iPuMsMjoPj4QBTCac6VYMuVwrxUhweCEcD8QBTG5CWOJt0gtsbC30HZO1dr/n0HTa4rOywEjgJdZ9Frl0Em9ndz2XoxWJdOg+9MtswtEbQmW2yTDixXKLeJNZRgpjXZtS2AnSySEL9poiBN7JWAJvZgsVLVJ+TbIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770591371; c=relaxed/simple; bh=gxDkdnVAO6y54w+N+kQlH2pPvGHccqes7EFBl713Y8g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Hafv1IoTKCUYFKZp51QtKZVils7CIopdU5R9wlZb0L8IFL9xeuWJJ0K1JYjwx+yR0PwO2uWGJjN7GPs6rqZrh1t+cSsmhdkWntGdxp1jtgf1FjJPXLgbKG0gvXeKBNM89fLrU82jBqLODA5fO76EGLTVoK49iyAD6ipj0itJLAU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=u.northwestern.edu; spf=pass smtp.mailfrom=u.northwestern.edu; dkim=pass (2048-bit key) header.d=u-northwestern-edu.20230601.gappssmtp.com header.i=@u-northwestern-edu.20230601.gappssmtp.com header.b=qw7fmFGI; arc=none smtp.client-ip=209.85.222.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=u.northwestern.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=u.northwestern.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=u-northwestern-edu.20230601.gappssmtp.com header.i=@u-northwestern-edu.20230601.gappssmtp.com header.b="qw7fmFGI" Received: by mail-qk1-f178.google.com with SMTP id af79cd13be357-8c6a0702b86so365169885a.0 for ; Sun, 08 Feb 2026 14:56:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=u-northwestern-edu.20230601.gappssmtp.com; s=20230601; t=1770591370; x=1771196170; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RnjPU7xCzjMHF4Wlfjb1OOwJlHU37KjHOMIV04vFqVA=; b=qw7fmFGI/B35gvy2qV0wtnRgJ+5BJQSRFlNG9Lov2nkQ7ammP5Jm2PUBWsfmD1xYCH MXQptgt07fHFtiRGfiT6Ay5NNVqu/G5ih/ex1GfaoyrG/93PJaXs+MQrPZ0luIAYq8tV BCvY8e9Hf6mySiD/1rQf33sXHUodyqGPWIS9Hr8dzOgTnAipqUO+83kXP3eduPgyEw1A iNUDFadniKTd9GMhWWHnYBdNPfa7PzpEuaSZ+g1Kr/SkkbAZdwz8A8M7kP9MVk29gPBg +5xNSwKz6yjpV40UjvlADycOHy6lbAPvG9tXcAP17OFY6RkDrFBn3EkIZE5JaxK2qWQG qr3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770591370; x=1771196170; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RnjPU7xCzjMHF4Wlfjb1OOwJlHU37KjHOMIV04vFqVA=; b=Wp/33pUuUK7TJbp93Y5b3lCfBZywdMFN+SsakG6i6NzJeRFPIM+DAvVtQl8mhSZJBY t6o9NsNnzYuNlb9PfDXuPHBVAPXQx1eD+bMJohUKmrXQSNXr5HmZjKqqApyzl3giTzpk UZbS19q2P8pjbqSB1GJ0Y/LiF0YQ3teUQLXyhQsv6mqw2AA0s6iL8IeLZwoj89F2sS5d oMAt1Ny1g3bhIus+Ddwyt0dB7HArmzIZO8hHRMqSRvzcc+YPj7ZedKBnL+kQrQ+hZu9+ WcXebUPLhR39f6Jznl42hHsUNb80vNUE92lT/nkS5FI1s4ZyWYb1FZShw3pqLevvhVal Nlug== X-Forwarded-Encrypted: i=1; AJvYcCWWmkkZQHndP07H29BJQL55wo1PVDXWg/ZqZe816UUZiPGZiYAC2FQxKz0vDpmg+J1u4KOxfAsvIkmFZV0=@vger.kernel.org X-Gm-Message-State: AOJu0YxFnhEBvwyc8Tt3d5ftmBTmLcp5tFFZhClMBD9MKJWO5qlIu7Gt 2MiQ9ojFDn0vDvhbcsPDozn6zOufhg6yH1jUMHW0w5pYyhCDtBIPbZEPitN0ZEvz+I8= X-Gm-Gg: AZuq6aIhAAXwH88RW6JMaIZlEkoNroF3TmtqCzLX6mLE8eOvWHt053vvOwwGrTTZZvw LM3Dkqwb6YL6gXHjIP9r42i/g0OeGjW7wIAqAFcYzfE20GROBOUIPqZDzSlxueYYD4WlZaMO7U1 ZdtNWd5tTX3V/I9ap70+t06BuA5byaccXqjxQ0woe9TErgrIUbIWOChonaK37471u4fj54R8fN4 25qwan4f9cFaBhohSxzn391UR2JopyaimzZiLqPKpQ4xA5xwN9CPxolpeHz8AxryiCowbCCR2NQ 6qedcVs6zYpCgVsJsn3QxuTF2aT6aZyYYBVVmGDPJkRiDMKfpz8+I30Lgqv6sQCe3etTn1mqW8v fBBKpA/WjWJsSJ6dO9tisqTBXlGsQBi2lgj8FCSrUL0XkixOI8klMZyMhv4HM7kZa1XEPXciRTL +uo+Wr653OoPc70YAEkdaAl0WZZm7rts4sCyiizCvZZgRX7RKWufkmX96H2DPg2WJncSIppMbm7 NuBxwtXHXlKYIRXwqreivwbR+rcp1s= X-Received: by 2002:a05:620a:4142:b0:8c7:fdc:e853 with SMTP id af79cd13be357-8caeee3411cmr1221080485a.1.1770591370334; Sun, 08 Feb 2026 14:56:10 -0800 (PST) Received: from security.cs.northwestern.edu (security.cs.northwestern.edu. [165.124.184.136]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8caf9ee9efasm679622485a.43.2026.02.08.14.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Feb 2026 14:56:10 -0800 (PST) From: Ziyi Guo To: Vladimir Oltean , Claudiu Manoil , Alexandre Belloni Cc: UNGLinuxDriver@microchip.com, Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Ziyi Guo Subject: [PATCH v3 2/3] net: mscc: ocelot: split xmit into FDMA and register injection paths Date: Sun, 8 Feb 2026 22:56:01 +0000 Message-Id: <20260208225602.1339325-3-n7l8m4@u.northwestern.edu> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260208225602.1339325-1-n7l8m4@u.northwestern.edu> References: <20260208225602.1339325-1-n7l8m4@u.northwestern.edu> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Split ocelot_port_xmit() into two separate functions: - ocelot_port_xmit_fdma(): handles the FDMA injection path - ocelot_port_xmit_inj(): handles the register-based injection path The top-level ocelot_port_xmit() now dispatches to the appropriate function based on the ocelot_fdma_enabled static key. This is a pure refactor with no behavioral change. Separating the two code paths makes each one simpler and prepares for adding proper locking to the register injection path without affecting the FDMA path. Signed-off-by: Ziyi Guo --- drivers/net/ethernet/mscc/ocelot_net.c | 39 ++++++++++++++++++++------ 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/mscc/ocelot_net.c b/drivers/net/ethernet/= mscc/ocelot_net.c index ef4a6c768de9..d6b0936beca2 100644 --- a/drivers/net/ethernet/mscc/ocelot_net.c +++ b/drivers/net/ethernet/mscc/ocelot_net.c @@ -571,7 +571,25 @@ static bool ocelot_xmit_timestamp(struct ocelot *ocelo= t, int port, return true; } =20 -static netdev_tx_t ocelot_port_xmit(struct sk_buff *skb, struct net_device= *dev) +static netdev_tx_t ocelot_port_xmit_fdma(struct sk_buff *skb, + struct net_device *dev) +{ + struct ocelot_port_private *priv =3D netdev_priv(dev); + struct ocelot_port *ocelot_port =3D &priv->port; + struct ocelot *ocelot =3D ocelot_port->ocelot; + int port =3D priv->port.index; + u32 rew_op =3D 0; + + if (!ocelot_xmit_timestamp(ocelot, port, skb, &rew_op)) + return NETDEV_TX_OK; + + ocelot_fdma_inject_frame(ocelot, port, rew_op, skb, dev); + + return NETDEV_TX_OK; +} + +static netdev_tx_t ocelot_port_xmit_inj(struct sk_buff *skb, + struct net_device *dev) { struct ocelot_port_private *priv =3D netdev_priv(dev); struct ocelot_port *ocelot_port =3D &priv->port; @@ -579,24 +597,27 @@ static netdev_tx_t ocelot_port_xmit(struct sk_buff *s= kb, struct net_device *dev) int port =3D priv->port.index; u32 rew_op =3D 0; =20 - if (!static_branch_unlikely(&ocelot_fdma_enabled) && - !ocelot_can_inject(ocelot, 0)) + if (!ocelot_can_inject(ocelot, 0)) return NETDEV_TX_BUSY; =20 if (!ocelot_xmit_timestamp(ocelot, port, skb, &rew_op)) return NETDEV_TX_OK; =20 - if (static_branch_unlikely(&ocelot_fdma_enabled)) { - ocelot_fdma_inject_frame(ocelot, port, rew_op, skb, dev); - } else { - ocelot_port_inject_frame(ocelot, port, 0, rew_op, skb); + ocelot_port_inject_frame(ocelot, port, 0, rew_op, skb); =20 - consume_skb(skb); - } + consume_skb(skb); =20 return NETDEV_TX_OK; } =20 +static netdev_tx_t ocelot_port_xmit(struct sk_buff *skb, struct net_device= *dev) +{ + if (static_branch_unlikely(&ocelot_fdma_enabled)) + return ocelot_port_xmit_fdma(skb, dev); + + return ocelot_port_xmit_inj(skb, dev); +} + enum ocelot_action_type { OCELOT_MACT_LEARN, OCELOT_MACT_FORGET, --=20 2.34.1