From owner-freebsd-drivers@FreeBSD.ORG Mon Feb 9 16:12:13 2009 Return-Path: Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B79151065674 for ; Mon, 9 Feb 2009 16:12:13 +0000 (UTC) (envelope-from cyril.elkaim@free.fr) Received: from smtpfb1-g21.free.fr (smtpfb1-g21.free.fr [212.27.42.9]) by mx1.freebsd.org (Postfix) with ESMTP id 3954C8FC17 for ; Mon, 9 Feb 2009 16:12:11 +0000 (UTC) (envelope-from cyril.elkaim@free.fr) Received: from wmproxy1-g27.free.fr (wmproxy1-g27.free.fr [212.27.42.91]) by smtpfb1-g21.free.fr (Postfix) with ESMTP id 1F73B2C8E7 for ; Mon, 9 Feb 2009 16:52:10 +0100 (CET) Received: from zimbra10-e2.priv.proxad.net (zimbra10-e2.priv.proxad.net [172.20.243.160]) by wmproxy1-g27.free.fr (Postfix) with ESMTP id 0C4AE5E6CA for ; Mon, 9 Feb 2009 18:03:27 +0100 (CET) Date: Mon, 9 Feb 2009 16:52:08 +0100 (CET) From: cyril.elkaim@free.fr To: freebsd drivers Message-ID: <124214240.637761234194728394.JavaMail.root@zimbra10-e2.priv.proxad.net> In-Reply-To: <1306049302.637521234194665378.JavaMail.root@zimbra10-e2.priv.proxad.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_19661_670433207.1234194728393" X-Originating-IP: [172.20.243.42] X-Mailer: Zimbra 5.0.11_GA_2627.UBUNTU8_64 (ZimbraWebClient - [unknown] (Linux)/5.0.11_GA_2627.UBUNTU8_64) Subject: patch aoe for freebsd 7 X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Feb 2009 16:12:14 -0000 ------=_Part_19661_670433207.1234194728393 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hello there, Here you'll find an attached patch to compile the coraid aoe driver with freebsd 7. I'm not able to validate this driver myself, so if somebody can test it I will be very grateful. thanks, Cyril Elkaim ------=_Part_19661_670433207.1234194728393 Content-Type: text/x-patch; name=aoe7.patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=aoe7.patch diff -u dev/aoe/Makefile aoe7/Makefile --- dev/aoe/Makefile 2006-05-24 21:48:07.000000000 +0200 +++ aoe7/Makefile 2009-02-09 15:43:18.000000000 +0100 @@ -3,5 +3,6 @@ KMOD= aoe SRCS= aoecmd.c aoedev.c aoenet.c aoeblk.c aoemain.c CFLAGS+= -DFORCE_NETWORK_HOOK -I../.. +EXPORT_SYMS= YES .include diff -u dev/aoe/aoeblk.c aoe7/aoeblk.c --- dev/aoe/aoeblk.c 2006-05-25 19:19:23.000000000 +0200 +++ aoe7/aoeblk.c 2009-02-09 14:46:41.000000000 +0100 @@ -27,6 +27,8 @@ * * $FreeBSD: src/sys/dev/aoe/aoeblk.c,v 1.23.2.5 2004/09/22 16:50:41 ?? Exp $ */ +#include +__FBSDID("$FreeBSD: src/sys/dev/aoe/aoeblk.c,v 1.23.2.5 2004/09/22 16:50:41 ?? Exp $"); /* * aoeblk.c diff -u dev/aoe/aoecmd.c aoe7/aoecmd.c --- dev/aoe/aoecmd.c 2006-05-25 19:13:09.000000000 +0200 +++ aoe7/aoecmd.c 2009-02-09 13:00:16.000000000 +0100 @@ -449,6 +449,17 @@ return (n); } +static u_long +lhget48(u_char *p) +{ + u_long n; + + n = lhget32(p+2); + n <<= 16; + n |= lhget16(p); + return (n); +} + static void ataid_complete(struct aoedev *d, char *id) @@ -460,7 +471,7 @@ n = lhget16(id + (83<<1)); /* Command set supported. */ if (n & (1<<10)) { /* Lba48 */ atomic_set_32(&d->ad_flags, DEVFL_EXT); - d->ad_nsectors = lhget32(id + (100<<1)); /* n lba48 sectors. */ + d->ad_nsectors = lhget48(id + (100<<1)); /* n lba48 sectors. */ } else { atomic_clear_32(&d->ad_flags, DEVFL_EXT); d->ad_nsectors = lhget32(id + (60<<1)); /* n lba28 sectors. */ diff -u dev/aoe/aoenet.c aoe7/aoenet.c --- dev/aoe/aoenet.c 2006-05-25 18:10:11.000000000 +0200 +++ aoe7/aoenet.c 2009-02-09 15:38:05.000000000 +0100 @@ -48,6 +48,8 @@ #include #include #include +#include +#include #include #include @@ -77,8 +79,10 @@ #define NECODES (sizeof(aoe_errlist) / sizeof(char *) - 1) #if (__FreeBSD_version < 600000) #define IFPADDR(ifp) (((struct arpcom *) (ifp))->ac_enaddr) +#elif (__FreeBSD_version < 700000) +#define IFPADDR(ifp) IFP2ENADDR(ifp) #else -#define IFPADDR(ifp) IFP2ENADDR(ifp) +#define IFPADDR(ifp) IF_LLADDR(ifp) #endif #define IFLISTSZ 1024 @@ -96,7 +100,7 @@ #include #define IDX(c) ((u_char)(c) / LONG_BIT) #define BIT(c) ((u_long)1 << ((u_char)(c) % LONG_BIT)) - + static size_t strspn(const char *s, const char *charset) { @@ -275,7 +279,7 @@ TAILQ_FOREACH(ifp, &ifnet, if_link) { if (!is_aoe_netif(ifp)) continue; - memcpy(h->ah_src, IFPADDR(ifp), sizeof(h->ah_src)); + memcpy(h->ah_src, (u_char *)IFPADDR(ifp), sizeof(h->ah_src)); m = m_copypacket(m0, M_DONTWAIT); if (m == NULL) { IPRINTK("m_copypacket failure\n"); @@ -291,7 +295,7 @@ u_char * aoenet_enaddr(struct ifnet *ifp) { - return (IFPADDR(ifp)); + return (u_char *)(IFPADDR(ifp)); } u_int ------=_Part_19661_670433207.1234194728393--