From owner-freebsd-stable@FreeBSD.ORG Fri Jul 17 13:42:39 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 4C8391065670 for ; Fri, 17 Jul 2009 13:42:39 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-fx0-f224.google.com (mail-fx0-f224.google.com [209.85.220.224]) by mx1.freebsd.org (Postfix) with ESMTP id 9B9C98FC08 for ; Fri, 17 Jul 2009 13:42:38 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: by fxm24 with SMTP id 24so666586fxm.43 for ; Fri, 17 Jul 2009 06:42:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=SV7fX7ATa8Lt0T1ng8SImTfKVx8VI/5VimugLVn4y9s=; b=tudyzTyK67qg50RG5mx4COKM2iinVtYKYOd9y+6u8Iiwbe8m8o5J6Rtbk631yV7QYC X0QRWMzVGb89F2F/3sA1tSk07GRPI8aXfEeS8lSij7M6tPAevc8Ofi7hVJlGv/4IvM9X f3JYZ1CNrBmZktBO8hJu4BWF7oJ//obxZ1skM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=bUYJ2DE4QGsCb3ItPdhFo6E56oMtyFgGB/qZ+UBJO1v6XvEMZGL3aESvWUlAnTpyD1 7HNXzfZHizumFUCVd3g7UhQhpOwE5bEU4PyHJXmI7SeJnMGF0WvRMhoCOMR2MfwlOUJJ GiksstrG8PBWYOGC7FWMWiwd79zf9lefsNb4E= MIME-Version: 1.0 Received: by 10.204.71.210 with SMTP id i18mr951610bkj.48.1247838157334; Fri, 17 Jul 2009 06:42:37 -0700 (PDT) Date: Fri, 17 Jul 2009 17:42:37 +0400 Message-ID: From: pluknet To: freebsd-stable , Xin LI Content-Type: multipart/mixed; boundary=001636c5b7c61aea3b046ee6f67b Cc: Subject: [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:42:39 -0000 --001636c5b7c61aea3b046ee6f67b Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 6.4-RELEASE FreeBSD 6.4-RELEASE #0: Fri Jul 17 21:08:32 MSD 2009 root@:/usr/obj/usr/src/sys/SMP i386 It seems to work good. I have a network access to the box now. after kldload if_bce: bce0: mem 0x92000000-0x93ffffff irq 28 at device 0.0 on pci11 miibus0: on bce0 ukphy0: on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-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-0x95ffffff irq 40 at device 0.1 on pci11 miibus1: on bce1 ukphy1: on miibus1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-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 MSI ) bce0: link state changed to UP bce0: link state changed to DOWN 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 Wed Jun 3 13:42:55 2009 +++ bce/if_bce.c Fri Jul 17 15:26:00 2009 @@ -54,6 +54,12 @@ __FBSDID("$FreeBSD: src/sys/dev/bce/if_b #include #include +/* From sys/mbuf.h */ +#define CSUM_TSO 0x0020 /* will do TSO */ + +/* From net/if.h */ +#define IFCAP_TSO4 0x00100 /* can do TCP Segmentation Offload */ + /****************************************************************************/ /* BCE Debug Options */ /****************************************************************************/ @@ -1059,7 +1065,7 @@ bce_attach(device_t dev) /* Hookup IRQ last. */ rc = bus_setup_intr(dev, sc->bce_res_irq, INTR_TYPE_NET | INTR_MPSAFE, - NULL, bce_intr, sc, &sc->bce_intrhand); + bce_intr, sc, &sc->bce_intrhand); if (rc) { BCE_PRINTF("%s(%d): Failed to setup IRQ!\n", @@ -6391,13 +6397,24 @@ bce_tx_encap(struct bce_softc *sc, struc bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; bus_dmamap_t map; struct tx_bd *txbd = NULL; +#if __FreeBSD_version <= 700022 + struct m_tag *mtag; +#endif struct mbuf *m0; +#if __FreeBSD_version > 700022 struct ether_vlan_header *eh; struct ip *ip; struct tcphdr *th; - u16 prod, chain_prod, etype, mss = 0, vlan_tag = 0, flags = 0; +#endif + u16 prod, chain_prod, +#if __FreeBSD_version > 700022 + etype, +#endif + mss = 0, vlan_tag = 0, flags = 0; u32 prod_bseq; +#if __FreeBSD_version > 700022 int hdr_len = 0, e_hlen = 0, ip_hlen = 0, tcp_hlen = 0, ip_len = 0; +#endif #ifdef BCE_DEBUG u16 debug_prod; @@ -6418,6 +6435,7 @@ bce_tx_encap(struct bce_softc *sc, struc flags |= TX_BD_FLAGS_IP_CKSUM; if (m0->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) flags |= TX_BD_FLAGS_TCP_UDP_CKSUM; +#if __FreeBSD_version > 700022 if (m0->m_pkthdr.csum_flags & CSUM_TSO) { /* For TSO the controller needs two pieces of info, */ /* the MSS and the IP+TCP options length. */ @@ -6481,14 +6499,23 @@ bce_tx_encap(struct bce_softc *sc, struc bce_tx_encap_skip_tso: DBRUN(sc->requested_tso_frames++); } +#endif } /* Transfer any VLAN tags to the bd. */ +#if __FreeBSD_version > 700022 if (m0->m_flags & M_VLANTAG) { flags |= TX_BD_FLAGS_VLAN_TAG; vlan_tag = m0->m_pkthdr.ether_vtag; } +#else + mtag = VLAN_OUTPUT_TAG(sc->bce_ifp, m0); + if (mtag != NULL) { + flags |= TX_BD_FLAGS_VLAN_TAG; + vlan_tag = VLAN_TAG_VALUE(mtag); + } +#endif /* Map the mbuf into DMAable memory. */ prod = sc->tx_prod; chain_prod = TX_CHAIN_IDX(prod); -- wbr, pluknet --001636c5b7c61aea3b046ee6f67b Content-Type: application/octet-stream; name="bce.7-down-to-6.patch" Content-Disposition: attachment; filename="bce.7-down-to-6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fx8ylxw00 ZGlmZiAtdXJwTiAvaG9tZS9wbHVrbmV0L2N2cy03L3NyYy9zeXMvZGV2L2JjZS9pZl9iY2UuYyBi Y2UvaWZfYmNlLmMKLS0tIC9ob21lL3BsdWtuZXQvY3ZzLTcvc3JjL3N5cy9kZXYvYmNlL2lmX2Jj ZS5jCVdlZCBKdW4gIDMgMTM6NDI6NTUgMjAwOQorKysgYmNlL2lmX2JjZS5jCUZyaSBKdWwgMTcg MTU6MjY6MDAgMjAwOQpAQCAtNTQsNiArNTQsMTIgQEAgX19GQlNESUQoIiRGcmVlQlNEOiBzcmMv c3lzL2Rldi9iY2UvaWZfYgogI2luY2x1ZGUgPGRldi9iY2UvaWZfYmNlcmVnLmg+CiAjaW5jbHVk ZSA8ZGV2L2JjZS9pZl9iY2Vmdy5oPgogCisvKiBGcm9tIHN5cy9tYnVmLmggKi8KKyNkZWZpbmUg Q1NVTV9UU08JMHgwMDIwCQkvKiB3aWxsIGRvIFRTTyAqLworCisvKiBGcm9tIG5ldC9pZi5oICov CisjZGVmaW5lIElGQ0FQX1RTTzQJMHgwMDEwMAkJLyogY2FuIGRvIFRDUCBTZWdtZW50YXRpb24g T2ZmbG9hZCAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIEJDRSBEZWJ1ZyBPcHRpb25z ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMDU5LDcgKzEwNjUsNyBAQCBiY2VfYXR0YWNo KGRldmljZV90IGRldikKIAogCS8qIEhvb2t1cCBJUlEgbGFzdC4gKi8KIAlyYyA9IGJ1c19zZXR1 cF9pbnRyKGRldiwgc2MtPmJjZV9yZXNfaXJxLCBJTlRSX1RZUEVfTkVUIHwgSU5UUl9NUFNBRkUs Ci0JCU5VTEwsIGJjZV9pbnRyLCBzYywgJnNjLT5iY2VfaW50cmhhbmQpOworCQliY2VfaW50ciwg c2MsICZzYy0+YmNlX2ludHJoYW5kKTsKIAogCWlmIChyYykgewogCQlCQ0VfUFJJTlRGKCIlcygl ZCk6IEZhaWxlZCB0byBzZXR1cCBJUlEhXG4iLApAQCAtNjM5MSwxMyArNjM5NywyNCBAQCBiY2Vf dHhfZW5jYXAoc3RydWN0IGJjZV9zb2Z0YyAqc2MsIHN0cnVjCiAJYnVzX2RtYV9zZWdtZW50X3Qg c2Vnc1tCQ0VfTUFYX1NFR01FTlRTXTsKIAlidXNfZG1hbWFwX3QgbWFwOwogCXN0cnVjdCB0eF9i ZCAqdHhiZCA9IE5VTEw7CisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPD0gNzAwMDIyCisJc3RydWN0 IG1fdGFnICptdGFnOworI2VuZGlmCiAJc3RydWN0IG1idWYgKm0wOworI2lmIF9fRnJlZUJTRF92 ZXJzaW9uID4gNzAwMDIyCiAJc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyICplaDsKIAlzdHJ1Y3Qg aXAgKmlwOwogCXN0cnVjdCB0Y3BoZHIgKnRoOwotCXUxNiBwcm9kLCBjaGFpbl9wcm9kLCBldHlw ZSwgbXNzID0gMCwgdmxhbl90YWcgPSAwLCBmbGFncyA9IDA7CisjZW5kaWYKKwl1MTYgcHJvZCwg Y2hhaW5fcHJvZCwKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDcwMDAyMgorCWV0eXBlLAorI2Vu ZGlmCisJbXNzID0gMCwgdmxhbl90YWcgPSAwLCBmbGFncyA9IDA7CiAJdTMyIHByb2RfYnNlcTsK KyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDcwMDAyMgogCWludCBoZHJfbGVuID0gMCwgZV9obGVu ID0gMCwgaXBfaGxlbiA9IDAsIHRjcF9obGVuID0gMCwgaXBfbGVuID0gMDsKKyNlbmRpZgogCiAj aWZkZWYgQkNFX0RFQlVHCiAJdTE2IGRlYnVnX3Byb2Q7CkBAIC02NDE4LDYgKzY0MzUsNyBAQCBi Y2VfdHhfZW5jYXAoc3RydWN0IGJjZV9zb2Z0YyAqc2MsIHN0cnVjCiAJCQlmbGFncyB8PSBUWF9C RF9GTEFHU19JUF9DS1NVTTsKIAkJaWYgKG0wLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgKENTVU1f VENQIHwgQ1NVTV9VRFApKQogCQkJZmxhZ3MgfD0gVFhfQkRfRkxBR1NfVENQX1VEUF9DS1NVTTsK KyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDcwMDAyMgogCQlpZiAobTAtPm1fcGt0aGRyLmNzdW1f ZmxhZ3MgJiBDU1VNX1RTTykgewogCQkJLyogRm9yIFRTTyB0aGUgY29udHJvbGxlciBuZWVkcyB0 d28gcGllY2VzIG9mIGluZm8sICovCiAJCQkvKiB0aGUgTVNTIGFuZCB0aGUgSVArVENQIG9wdGlv bnMgbGVuZ3RoLiAgICAgICAgICAgKi8KQEAgLTY0ODEsMTQgKzY0OTksMjMgQEAgYmNlX3R4X2Vu Y2FwKHN0cnVjdCBiY2Vfc29mdGMgKnNjLCBzdHJ1YwogYmNlX3R4X2VuY2FwX3NraXBfdHNvOgog CQkJREJSVU4oc2MtPnJlcXVlc3RlZF90c29fZnJhbWVzKyspOwogCQl9CisjZW5kaWYKIAl9CiAK IAkvKiBUcmFuc2ZlciBhbnkgVkxBTiB0YWdzIHRvIHRoZSBiZC4gKi8KKyNpZiBfX0ZyZWVCU0Rf dmVyc2lvbiA+IDcwMDAyMgogCWlmIChtMC0+bV9mbGFncyAmIE1fVkxBTlRBRykgewogCQlmbGFn cyB8PSBUWF9CRF9GTEFHU19WTEFOX1RBRzsKIAkJdmxhbl90YWcgPSBtMC0+bV9wa3RoZHIuZXRo ZXJfdnRhZzsKIAl9CiAKKyNlbHNlCisgICAgICAgIG10YWcgPSBWTEFOX09VVFBVVF9UQUcoc2Mt PmJjZV9pZnAsIG0wKTsKKyAgICAgICAgaWYgKG10YWcgIT0gTlVMTCkgeworICAgICAgICAgICAg ICAgIGZsYWdzIHw9IFRYX0JEX0ZMQUdTX1ZMQU5fVEFHOworICAgICAgICAgICAgICAgIHZsYW5f dGFnID0gVkxBTl9UQUdfVkFMVUUobXRhZyk7CisgICAgICAgIH0KKyNlbmRpZgogCS8qIE1hcCB0 aGUgbWJ1ZiBpbnRvIERNQWFibGUgbWVtb3J5LiAqLwogCXByb2QgPSBzYy0+dHhfcHJvZDsKIAlj aGFpbl9wcm9kID0gVFhfQ0hBSU5fSURYKHByb2QpOwo= --001636c5b7c61aea3b046ee6f67b--