From nobody Thu Oct 01 07:25:41 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hwNjy23Tmz6v9y6 for ; Thu, 01 Oct 2026 07:25:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hwNjy00d5z4VPw for ; Thu, 01 Oct 2026 07:25:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790839542; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P51OcKhBXKK5ueoamtJLcL2VyvRbeDtx8UufjukJU54=; b=s0T4Ga3f16JRYOpMVCJP0rc7NLPn55Pz0cte2kHJ4ztFPliomLrbaDVYWrQHrMqt1TNJXo NY5UhWNj0ohfgWqmAclbALvGiYRC58b5GwxdiIu3IDkoH1nXv7tc+1l3prhHfVlYp73nQU BZCMsYnpvFRX7vXEdfw/Pkk+je6KT179YYVVVK9Z+ubLjA7eBaC/pdbkUMOVdEFrDv4i3S 0RjPo0CdwGUx9NWJBhO4uVqo/ZZvfkrZN03w7ySWqMfVZGShDeQiYb+EZcpaXit/YkjyTU dVf4ywuAN//TnIQ6JdHZrGTq32jLXD9H9LZpiHmCteNeLIvJt8q1eWFq0n08KQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790839542; b=bnkpvekjIEOxxHSwSuQIBAbSTzccnK5eN4M2hIdXj/V2o1G3uj7T3ilZJK7PjuCYlvK3Ga 9D+VWjlpFii1fwvWQBdw64DE4/cESXUZH2YrWiFcWBVEOX3HJFpypLoM0KpkJCjvLpS7L5 Gh/7kl9NLenae2HoRoT4DjfvKHVtsGBnJsz+9OfTqWRvrNUPniAW7SysSdWc5nmlZKYgg1 djygtcYR3BuHnCqTaCkszYUFLCLLLrwtxjZYc1jzeYm/IhaxK5gBVFv4Q2lMQkYT454igK yf4XoI3vOTFyOdJ+XXVvnJXuywUxceUJRaica6HAHNlBiMJ6XPU7W4sPKld3PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790839542; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P51OcKhBXKK5ueoamtJLcL2VyvRbeDtx8UufjukJU54=; b=pNVde5IG/cLZT7CcCHjcE+xa2soMnr3MduMkCCg2Vs+kVnIsQWVvL+brgvaSEU91eNG3mn 2wGbxeDEiKqSNmhQu4vDmaIq9JC9cNcB60Vp6Ccfd6LyL/LZtM+zb6VSk+IOkDUlmKjGvx F3fRSwIm1u+7Ov5xba7KuUxBb1MJYf6PAK7vZ2ohGhyO5bG9Y/Kdy9y9ccfSHw5dLLa7Qq O15BnuHive0LI3zW6FjDFCoZG9o+AL/mjsetgRzpfhVsHSVRBzsRcbGYTfItpckLx5sNd5 CM7bg9ALjv/pRRZ/R31/jPPpJ6tqXeFMTrDpLYQIHBd8PUjRNXlClrr6RD7TlA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hwNjx5vH1zLwl for ; Thu, 01 Oct 2026 07:25:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 21112 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 01 Oct 2026 07:25:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Piotr Kubaj Subject: git: a9103f8f07cb - stable/15 - llan: byte swap the receive queue entries List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pkubaj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a9103f8f07cbdd5c2f69475b053fd41b31b1425d Auto-Submitted: auto-generated Date: Thu, 01 Oct 2026 07:25:41 +0000 Message-Id: <6abe0af5.21112.14ae6f45@gitrepo.freebsd.org> The branch stable/15 has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=a9103f8f07cbdd5c2f69475b053fd41b31b1425d commit a9103f8f07cbdd5c2f69475b053fd41b31b1425d Author: Piotr Kubaj AuthorDate: 2026-09-23 13:21:00 +0000 Commit: Piotr Kubaj CommitDate: 2026-10-01 07:25:35 +0000 llan: byte swap the receive queue entries The receive queue of a PAPR logical LAN is filled in by the hypervisor, so its fields are big endian, but llan_intr() read the offset and the length of each frame natively. On a little endian kernel the length of a 134 byte frame reads as 0x86000000, and ether_input() discards the mbuf because m_len is not even large enough for an ethernet header. No frame is ever received. Reproduced on a POWER9 pseries guest with a spapr-vlan interface. Before: llan0: discard frame w/o leading ethernet header (len -2046820352 pkt len -2046820352) llan0 1500 52:54:00:12:34:56 123 118 0 5838733312 7 0 that is 118 input errors out of 123 packets, dhclient(8) never completes and ping(8) loses every packet, although transmit works because the transmit path passes the lengths in hcall registers rather than through memory. Afterwards the interface gets a DHCP lease and ping reports no loss. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D59926 Approved by: jhibbits (cherry picked from commit 6429199a21136cad3c82b43618a6ca2958b90bbf) --- sys/powerpc/pseries/phyp_llan.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/powerpc/pseries/phyp_llan.c b/sys/powerpc/pseries/phyp_llan.c index 763eebc15b36..86ad7dc96fb7 100644 --- a/sys/powerpc/pseries/phyp_llan.c +++ b/sys/powerpc/pseries/phyp_llan.c @@ -385,8 +385,8 @@ restart: while ((sc->rx_buf[sc->rx_dma_slot].control >> 7) == sc->rx_valid_val) { rx = (struct llan_xfer *)sc->rx_buf[sc->rx_dma_slot].handle; m = rx->rx_mbuf; - m_adj(m, sc->rx_buf[sc->rx_dma_slot].offset - 8); - m->m_len = sc->rx_buf[sc->rx_dma_slot].length; + m_adj(m, be16toh(sc->rx_buf[sc->rx_dma_slot].offset) - 8); + m->m_len = be32toh(sc->rx_buf[sc->rx_dma_slot].length); /* llan_add_rxbuf does DMA sync and unload as well as requeue */ if (llan_add_rxbuf(sc, rx) != 0) { @@ -395,8 +395,8 @@ restart: } if_inc_counter(sc->ifp, IFCOUNTER_IPACKETS, 1); - m_adj(m, sc->rx_buf[sc->rx_dma_slot].offset); - m->m_len = sc->rx_buf[sc->rx_dma_slot].length; + m_adj(m, be16toh(sc->rx_buf[sc->rx_dma_slot].offset)); + m->m_len = be32toh(sc->rx_buf[sc->rx_dma_slot].length); m->m_pkthdr.rcvif = sc->ifp; m->m_pkthdr.len = m->m_len; sc->rx_dma_slot++;