From owner-freebsd-bugs@FreeBSD.ORG Tue Jan 4 14:00:45 2005 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4C09E16A4CF for ; Tue, 4 Jan 2005 14:00:45 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0F24843D4C for ; Tue, 4 Jan 2005 14:00:45 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.1/8.13.1) with ESMTP id j04E0i6H034301 for ; Tue, 4 Jan 2005 14:00:44 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.1/8.13.1/Submit) id j04E0i91034295; Tue, 4 Jan 2005 14:00:44 GMT (envelope-from gnats) Resent-Date: Tue, 4 Jan 2005 14:00:44 GMT Resent-Message-Id: <200501041400.j04E0i91034295@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Sten Spans Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 22AAD16A4CE for ; Tue, 4 Jan 2005 13:50:55 +0000 (GMT) Received: from www.freebsd.org (www.freebsd.org [216.136.204.117]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0BE6843D5A for ; Tue, 4 Jan 2005 13:50:55 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id j04DosCX014148 for ; Tue, 4 Jan 2005 13:50:54 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id j04DosRc014145; Tue, 4 Jan 2005 13:50:54 GMT (envelope-from nobody) Message-Id: <200501041350.j04DosRc014145@www.freebsd.org> Date: Tue, 4 Jan 2005 13:50:54 GMT From: Sten Spans To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-2.3 Subject: kern/75794: em driver alignment problems X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Jan 2005 14:00:45 -0000 >Number: 75794 >Category: kern >Synopsis: em driver alignment problems >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Jan 04 14:00:44 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Sten Spans >Release: 5.3-STABLE >Organization: Blinkenlights >Environment: FreeBSD deepthought.blinkenlights.nl 5.3-STABLE FreeBSD 5.3-STABLE #15: Tue Dec 21 03:05:04 CET 2004 root@deepthought.blinkenlights.nl:/usr/obj/usr/src/sys/DEEPTHOUGHT alpha >Description: The mbufs created by the em driver aren't aligned properly. This causes problems on alpha which crashes on non-aligned pointers to ip adresses. For ethernet mtu packets the mbufs are alinged by the following section of code: 2517 if (ifp->if_mtu <= ETHERMTU) { 2518 m_adj(mp, ETHER_ALIGN); 2519 } However when one uses jumbo frames this solution doesn't work ( ethermtu ) and I guess that packets in multiple mbufs wouldn't be fixed with this code. >How-To-Repeat: ifconfig em0 mtu 1501. >Fix: There are quite a few ways to solve this problem. Sadly I don't know enough about coding device drivers to suggest the corrent one. Openbsd has a quite complex mbuf shifting trick, which is quite crufty imho, but does solve the problem. http://www.openbsd.org/cgi-bin/cvsweb/src/sys/dev/pci/if_em.c.diff?r1=1.22&r2=1.23 In freebsd it might be possible to do the same mbuf shift in a bit more elegant fashion. It might also be possible to correct the alignment problem in the busdma code, which would be the ideal solution. The problem is clear, how and who is going to solve it sadly isn't. >Release-Note: >Audit-Trail: >Unformatted: