From nobody Thu Oct 01 06:10:53 2026 X-Original-To: dev-commits-src-all@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 4hwM3d5JgMz6v4RF for ; Thu, 01 Oct 2026 06:10:53 +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 4hwM3d4Kdxz4K89 for ; Thu, 01 Oct 2026 06:10:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790835053; 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=A/rsoxVXwFcRTUH+zakBxzicUsyKP4G+LIRUWCSJAuA=; b=RmDoOerkxfXInLIB+RuHGyAm7DlQzslXmpLZfFBh6mPuZmb/mZb6yhZWfYYHpTfGliII33 H0ahnpGwM1F43Y9iGkb6/mbTmNX+Ax/lW0HwUQLy3FKbXX6Fvsl+Q9mjwYwI7YbK66ITw/ Rb247KzT+Br91hJ/FAWo7J7lwYoZfY7FkKz0Bkxb5Ckrv+8KHTh9s4FJTR6DhMb082wATB 228jahxcSsV26/VRC2IvWm+c5bYlMwLmKA5yYmgN20CYTThDOFNzgVRbEcRUUmUAbd3Jdj 3zc5xaf8IcIxqkNymQHHgyC50lqFiN41qqEbMJdpm7ZB10TdUzmp4IcFsClmOg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790835053; b=ZFMKx7VuhWfpmrJxVw7XOOzEkECQEnV68UR0iNzzc6Ajm4dJThS2+5ic+PtOvqSImK/3Ow gkbKwrysbjFppBk9/5/NZfYZkGviwoRFk4byZjwVtvhUt4Ozp927hq8CxepaLwO1jvkbYG La3roGYh1P9o8d2tshC50sR2UVqoyaW6rcTcsDjkkyjv14lTVtQWrn1gjraamRTIp9NR6u e5oUvkrwIUYVStfRYp2VPw8chuORx5Pc66bxQizN8LFuO+K15TTNxWKNtqOOVgfrk+uM2a p1sKVgV/NpgGPxcObhxoWtzYGu6OV4Zrtq5sP2s9slw5FHM+EsP49VSzOAiVNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790835053; 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=A/rsoxVXwFcRTUH+zakBxzicUsyKP4G+LIRUWCSJAuA=; b=tpnkLnJ91vxMzIHg8U+gevp2vobYJi6DsVsGv2mvEuXrnhoZ7nuV51MCwLD5DNDRHUutcp VHZN1v1+eQ4SsxX/+11vL3oxB5dg1Q8V2ph1sQktw5429nL7fvfN89gWZ7E78SF5ppipai u8A2laT5aXUqQXv+y11lrYGAw0S3OeOCFLMhflzl3smQqyVpmAhC0ds+E6+skA4nlWlSzm zlYaLUJN8aKjaLVgfGTxhTrQp18lyqBEKbgp7E9IubB5mySAjKT8CpAEbQ5IHERuXlAM3W hDhLFTRlKTAbpiC8H7UMvV9mDQnC+HYQd7CQB80lzW8xAHGuqY+o+ZyJNThrZA== 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 4hwM3d3PBkzJP8 for ; Thu, 01 Oct 2026 06:10:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46b56 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 01 Oct 2026 06:10:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Piotr Kubaj Subject: git: 56a4abe124de - stable/14 - llan: byte swap the receive queue entries List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/14 X-Git-Reftype: branch X-Git-Commit: 56a4abe124de6baf9ba1004893651ec210fa2a3e Auto-Submitted: auto-generated Date: Thu, 01 Oct 2026 06:10:53 +0000 Message-Id: <6abdf96d.46b56.68ca99e4@gitrepo.freebsd.org> The branch stable/14 has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=56a4abe124de6baf9ba1004893651ec210fa2a3e commit 56a4abe124de6baf9ba1004893651ec210fa2a3e Author: Piotr Kubaj AuthorDate: 2026-09-23 13:21:00 +0000 Commit: Piotr Kubaj CommitDate: 2026-10-01 05:54:45 +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) (cherry picked from commit d8cbdc3b09d0196e2f23a2e1f934fa0811eb28b7) --- 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 5da5fd78fcc3..9e33781947b8 100644 --- a/sys/powerpc/pseries/phyp_llan.c +++ b/sys/powerpc/pseries/phyp_llan.c @@ -386,8 +386,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) { @@ -396,8 +396,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++;