From owner-freebsd-stable@FreeBSD.ORG Fri Jul 17 13:46:17 2009 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E9A5106566B for ; Fri, 17 Jul 2009 13:46:17 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-bw0-f208.google.com (mail-bw0-f208.google.com [209.85.218.208]) by mx1.freebsd.org (Postfix) with ESMTP id A94E88FC12 for ; Fri, 17 Jul 2009 13:46:16 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: by bwz4 with SMTP id 4so659417bwz.43 for ; Fri, 17 Jul 2009 06:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=Cmk+bfeJT5bBClANV+mR7FR3FhAetrF7aw6CPjHukvA=; b=QDaQqcuA3mG5VLdwMS5y4yjgGWtZrlMmuapzVZdkzi+afv+ftxp6nkY/pQckXC+7Wu WJq5kovssiRmie1VZQrBvbRXPFEvE92Wq+ED+8i5sgKAv768DO0b8MKllWY6F95EM2fj czFQNnA7OQ69a3LrYm7aJ/otvkluFs6nVE800= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=sbzy6LD9n1Cd+3JyE+C3Hk+FOb9P5n0fW3L4eaGjHto2oOKaRNg/D+4IeGikSrp5E8 5/A70dbHuhfaSFz+SakYa8hViyqiJMdI37hq0SO7AH+ugGQzjtkgNwyOMZ3Fv5GWU24u G07hPOamnIpVb8j7hFTVTSh1SfTp8J3nTuViI= MIME-Version: 1.0 Received: by 10.204.50.212 with SMTP id a20mr955355bkg.35.1247838375033; Fri, 17 Jul 2009 06:46:15 -0700 (PDT) In-Reply-To: References: Date: Fri, 17 Jul 2009 17:46:14 +0400 Message-ID: From: pluknet To: freebsd-stable , Xin LI Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Subject: Re: [rfc] MFC 7.x bce(4) to 6.x X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jul 2009 13:46:17 -0000 2009/7/17 pluknet : > Hi. > > Is there a planned MFC of bce(4) changes between 6.4 and 7.2 to RELENG_6? > > We need this at work in order to support Broadcom BCM5709 in (post-)6.4. > > I could able to backport recent 7.x changes to 6.4. > I'm not sure about MSI and/or TSO4 stability here since there are > changes since 6.x in bce(4). > What I did is checkout RELENG_7 bce sources plus small hackish patch > to compile this on 6.x. > > # uname -a > FreeBSD =A06.4-RELEASE FreeBSD 6.4-RELEASE #0: Fri Jul 17 21:08:32 MSD > 2009 =A0 =A0 root@:/usr/obj/usr/src/sys/SMP =A0i386 > > It seems to work good. I have a network access to the box now. > > after kldload if_bce: > bce0: mem 0x92000000-0x93= ffffff > irq 28 at device 0.0 on pci11 > miibus0: on bce0 > ukphy0: on miibus0 > ukphy0: =A010baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 100= 0baseT-FD > X, auto > bce0: Ethernet address: 00:1a:64:e5:13:ec > bce0: link state changed to DOWN > bce0: ASIC (0x57092003); Rev (C0); Bus (PCIe x2, 5Gbps); B/C (0x04060705)= ; Flags > ( MFW MSI ) > bce1: mem 0x94000000-0x95= ffffff > irq 40 at device 0.1 on pci11 > miibus1: on bce1 > ukphy1: on miibus1 > ukphy1: =A010baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 100= 0baseT-FD > X, auto > bce1: Ethernet address: 00:1a:64:e5:13:ee > bce1: ASIC (0x > bce1: link state changed to DOWN > 57092003); Rev (C0); Bus (PCIe x2, 5Gbps); B/C (0x04060705); Flags( MFW M= SI ) > bce0: link state changed to UP > bce0: link state changed to DOWN > bce0: link state changed to UP Ah, yes. Forgot to show dmesg from 7.2 for comparison: bce0: mem 0x92000000-0x93ffffff irq 28 at device 0.0 on pci11 bce0: Reserved 0x2000000 bytes for rid 0x10 type 3 at 0x92000000 bce0: attempting to allocate 1 MSI vectors (16 supported) bce0: using IRQ 256 for MSI miibus0: on bce0 bce0: bpf attached bce0: Ethernet address: 00:1a:64:e5:13:ec bce0: [MPSAFE] bce0: [ITHREAD] bce0: ASIC (0x57092003); Rev (C0); Bus (PCIe x2, 5Gbps); B/C (0x04060705); Flags( MFW MSI ) bce1: mem 0x94000000-0x95ffffff irq 40 at device 0.1 on pci11 bce1: Reserved 0x2000000 bytes for rid 0x10 type 3 at 0x94000000 bce1: attempting to allocate 1 MSI vectors (16 supported) bce1: using IRQ 257 for MSI miibus1: on bce1 bce1: bpf attached bce1: Ethernet address: 00:1a:64:e5:13:ee bce1: [MPSAFE] bce1: [ITHREAD] bce1: ASIC (0x57092003); Rev (C0); Bus (PCIe x2, 5Gbps); B/C (0x04060705); Flags( MFW MSI ) bce0: link state changed to UP > > The patch (against if_bce.c,v 1.34.2.9): > > --- /home/pluknet/cvs-7/src/sys/dev/bce/if_bce.c =A0 =A0 =A0 =A0Wed Jun = =A03 13:42:55 2009 > +++ bce/if_bce.c =A0 =A0 =A0 =A0Fri Jul 17 15:26:00 2009 > @@ -54,6 +54,12 @@ __FBSDID("$FreeBSD: src/sys/dev/bce/if_b > =A0#include > =A0#include > > +/* From sys/mbuf.h */ > +#define CSUM_TSO =A0 =A0 =A0 0x0020 =A0 =A0 =A0 =A0 =A0/* will do TSO */ > + > +/* From net/if.h */ > +#define IFCAP_TSO4 =A0 =A0 0x00100 =A0 =A0 =A0 =A0 /* can do TCP Segment= ation Offload */ > + > =A0/*********************************************************************= *******/ > =A0/* BCE Debug Options =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0*/ > =A0/*********************************************************************= *******/ > @@ -1059,7 +1065,7 @@ bce_attach(device_t dev) > > =A0 =A0 =A0 =A0/* Hookup IRQ last. */ > =A0 =A0 =A0 =A0rc =3D bus_setup_intr(dev, sc->bce_res_irq, INTR_TYPE_NET = | INTR_MPSAFE, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 NULL, bce_intr, sc, &sc->bce_intrhand); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bce_intr, sc, &sc->bce_intrhand); > > =A0 =A0 =A0 =A0if (rc) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0BCE_PRINTF("%s(%d): Failed to setup IRQ!\n= ", > @@ -6391,13 +6397,24 @@ bce_tx_encap(struct bce_softc *sc, struc > =A0 =A0 =A0 =A0bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; > =A0 =A0 =A0 =A0bus_dmamap_t map; > =A0 =A0 =A0 =A0struct tx_bd *txbd =3D NULL; > +#if __FreeBSD_version <=3D 700022 > + =A0 =A0 =A0 struct m_tag *mtag; > +#endif > =A0 =A0 =A0 =A0struct mbuf *m0; > +#if __FreeBSD_version > 700022 > =A0 =A0 =A0 =A0struct ether_vlan_header *eh; > =A0 =A0 =A0 =A0struct ip *ip; > =A0 =A0 =A0 =A0struct tcphdr *th; > - =A0 =A0 =A0 u16 prod, chain_prod, etype, mss =3D 0, vlan_tag =3D 0, fla= gs =3D 0; > +#endif > + =A0 =A0 =A0 u16 prod, chain_prod, > +#if __FreeBSD_version > 700022 > + =A0 =A0 =A0 etype, > +#endif > + =A0 =A0 =A0 mss =3D 0, vlan_tag =3D 0, flags =3D 0; > =A0 =A0 =A0 =A0u32 prod_bseq; > +#if __FreeBSD_version > 700022 > =A0 =A0 =A0 =A0int hdr_len =3D 0, e_hlen =3D 0, ip_hlen =3D 0, tcp_hlen = =3D 0, ip_len =3D 0; > +#endif > > =A0#ifdef BCE_DEBUG > =A0 =A0 =A0 =A0u16 debug_prod; > @@ -6418,6 +6435,7 @@ bce_tx_encap(struct bce_softc *sc, struc > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flags |=3D TX_BD_FLAGS_IP_= CKSUM; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (m0->m_pkthdr.csum_flags & (CSUM_TCP | = CSUM_UDP)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flags |=3D TX_BD_FLAGS_TCP= _UDP_CKSUM; > +#if __FreeBSD_version > 700022 > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (m0->m_pkthdr.csum_flags & CSUM_TSO) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* For TSO the controller = needs two pieces of info, */ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* the MSS and the IP+TCP = options length. =A0 =A0 =A0 =A0 =A0 */ > @@ -6481,14 +6499,23 @@ bce_tx_encap(struct bce_softc *sc, struc > =A0bce_tx_encap_skip_tso: > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0DBRUN(sc->requested_tso_fr= ames++); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > +#endif > =A0 =A0 =A0 =A0} > > =A0 =A0 =A0 =A0/* Transfer any VLAN tags to the bd. */ > +#if __FreeBSD_version > 700022 > =A0 =A0 =A0 =A0if (m0->m_flags & M_VLANTAG) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flags |=3D TX_BD_FLAGS_VLAN_TAG; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0vlan_tag =3D m0->m_pkthdr.ether_vtag; > =A0 =A0 =A0 =A0} > > +#else > + =A0 =A0 =A0 =A0mtag =3D VLAN_OUTPUT_TAG(sc->bce_ifp, m0); > + =A0 =A0 =A0 =A0if (mtag !=3D NULL) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flags |=3D TX_BD_FLAGS_VLAN_TAG; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0vlan_tag =3D VLAN_TAG_VALUE(mtag); > + =A0 =A0 =A0 =A0} > +#endif > =A0 =A0 =A0 =A0/* Map the mbuf into DMAable memory. */ > =A0 =A0 =A0 =A0prod =3D sc->tx_prod; > =A0 =A0 =A0 =A0chain_prod =3D TX_CHAIN_IDX(prod); > > -- > wbr, > pluknet > --=20 wbr, pluknet