From 83833f0fbdf6d417b7873fcc64ed85c2aee3a00b Mon Sep 17 00:00:00 2001 From: Reyk Floeter Date: Mon, 5 Mar 2007 11:13:11 +0000 Subject: remove jumbo frame support by replacing MEXTALLOC with MCLGET, and simplify the VLAN code. this will close PR 5356 (system panics under high load). From claudio@ who is currently not around to commit this fix tested and ok by mcbride@, reyk@, todd@, Paul Hirsch, and brad --- sys/dev/pci/if_bnx.c | 14 +++++--------- sys/dev/pci/if_bnxreg.h | 5 +++-- 2 files changed, 8 insertions(+), 11 deletions(-) (limited to 'sys/dev/pci') diff --git a/sys/dev/pci/if_bnx.c b/sys/dev/pci/if_bnx.c index 8944d7517b3..b25c7864d09 100644 --- a/sys/dev/pci/if_bnx.c +++ b/sys/dev/pci/if_bnx.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bnx.c,v 1.47 2007/03/03 11:17:48 reyk Exp $ */ +/* $OpenBSD: if_bnx.c,v 1.48 2007/03/05 11:13:09 reyk Exp $ */ /*- * Copyright (c) 2006 Broadcom Corporation @@ -870,7 +870,6 @@ bnx_attachhook(void *xsc) ifp->if_baudrate = IF_Gbps(2.5); else ifp->if_baudrate = IF_Gbps(1); - ifp->if_hardmtu = BNX_MAX_JUMBO_MTU; IFQ_SET_MAXLEN(&ifp->if_snd, USABLE_TX_BD - 1); IFQ_SET_READY(&ifp->if_snd); bcopy(sc->eaddr, sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); @@ -3281,7 +3280,7 @@ bnx_get_buf(struct bnx_softc *sc, struct mbuf *m, u_int16_t *prod, } DBRUNIF(1, sc->rx_mbuf_alloc++); - MEXTMALLOC(m_new, sc->mbuf_alloc_size, M_DONTWAIT); + MCLGET(m_new, M_DONTWAIT); if (!(m_new->m_flags & M_EXT)) { DBPRINT(sc, BNX_WARN, "%s(%d): RX mbuf chain allocation failed!\n", @@ -3961,11 +3960,8 @@ bnx_rx_intr(struct bnx_softc *sc) vh.evl_tag = l2fhdr->l2_fhdr_vlan_tag; vh.evl_encap_proto = htons(ETHERTYPE_VLAN); m_adj(m, ETHER_HDR_LEN); - if ((m = m_prepend(m, sizeof(vh), M_DONTWAIT)) == NULL) - goto bnx_rx_int_next_rx; - m->m_pkthdr.len += sizeof(vh); - if (m->m_len < sizeof(vh) && - (m = m_pullup(m, sizeof(vh))) == NULL) + M_PREPEND(m, sizeof(vh), M_DONTWAIT); + if (m == NULL) goto bnx_rx_int_next_rx; m_copyback(m, 0, sizeof(vh), &vh); #else @@ -4219,7 +4215,7 @@ bnx_init(void *xsc) bnx_set_mac_addr(sc); /* Calculate and program the Ethernet MRU size. */ - ether_mtu = BNX_MAX_JUMBO_ETHER_MTU_VLAN; + ether_mtu = BNX_MAX_STD_ETHER_MTU_VLAN; DBPRINT(sc, BNX_INFO, "%s(): setting MRU = %d\n", __FUNCTION__, ether_mtu); diff --git a/sys/dev/pci/if_bnxreg.h b/sys/dev/pci/if_bnxreg.h index 044a995b372..e42795e50f4 100644 --- a/sys/dev/pci/if_bnxreg.h +++ b/sys/dev/pci/if_bnxreg.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bnxreg.h,v 1.19 2007/03/03 11:17:48 reyk Exp $ */ +/* $OpenBSD: if_bnxreg.h,v 1.20 2007/03/05 11:13:10 reyk Exp $ */ /*- * Copyright (c) 2006 Broadcom Corporation @@ -4572,7 +4572,8 @@ struct fw_info { #define BNX_MAX_JUMBO_ETHER_MTU 9018 #define BNX_MAX_JUMBO_ETHER_MTU_VLAN 9022 -#define BNX_MAX_MRU 9216 +#define BNX_MAX_MRU MCLBYTES +#define BNX_MAX_JUMBO_MRU 9216 /****************************************************************************/ /* BNX Device State Data Structure */ -- cgit v1.2.3