summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/if_ipw.c
diff options
context:
space:
mode:
authordamien <damien@openbsd.org>2008-11-25 21:43:57 +0000
committerdamien <damien@openbsd.org>2008-11-25 21:43:57 +0000
commit94ee64de5c7be0fceda22f8eb4077cbabe72e1c0 (patch)
tree16136c870c8ecfe5e967095c06b17187060c2d38 /sys/dev/pci/if_ipw.c
parent- plug memory leak (diff)
downloadwireguard-openbsd-94ee64de5c7be0fceda22f8eb4077cbabe72e1c0.tar.xz
wireguard-openbsd-94ee64de5c7be0fceda22f8eb4077cbabe72e1c0.zip
use shiny new m_defrag() and nitems() instead of rolling our own.
Diffstat (limited to 'sys/dev/pci/if_ipw.c')
-rw-r--r--sys/dev/pci/if_ipw.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/sys/dev/pci/if_ipw.c b/sys/dev/pci/if_ipw.c
index 52f30ff4c9d..3df6e44fd83 100644
--- a/sys/dev/pci/if_ipw.c
+++ b/sys/dev/pci/if_ipw.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ipw.c,v 1.80 2008/09/03 19:43:59 damien Exp $ */
+/* $OpenBSD: if_ipw.c,v 1.81 2008/11/25 21:43:57 damien Exp $ */
/*-
* Copyright (c) 2004-2008
@@ -610,7 +610,6 @@ ipw_media_change(struct ifnet *ifp)
void
ipw_media_status(struct ifnet *ifp, struct ifmediareq *imr)
{
-#define N(a) (sizeof (a) / sizeof (a[0]))
struct ipw_softc *sc = ifp->if_softc;
struct ieee80211com *ic = &sc->sc_ic;
static const struct {
@@ -635,8 +634,8 @@ ipw_media_status(struct ifnet *ifp, struct ifmediareq *imr)
val &= 0xf;
/* convert rate to 802.11 rate */
- for (i = 0; i < N(rates) && rates[i].val != val; i++);
- rate = (i < N(rates)) ? rates[i].rate : 0;
+ for (i = 0; i < nitems(rates) && rates[i].val != val; i++);
+ rate = (i < nitems(rates)) ? rates[i].rate : 0;
imr->ifm_active |= IFM_IEEE80211_11B;
imr->ifm_active |= ieee80211_rate2media(ic, rate, IEEE80211_MODE_11B);
@@ -655,7 +654,6 @@ ipw_media_status(struct ifnet *ifp, struct ifmediareq *imr)
/* should not get there */
break;
}
-#undef N
}
int
@@ -1132,7 +1130,6 @@ ipw_tx_start(struct ifnet *ifp, struct mbuf *m, struct ieee80211_node *ni)
struct ipw_soft_bd *sbd;
struct ipw_soft_hdr *shdr;
struct ipw_soft_buf *sbuf;
- struct mbuf *mnew;
int error, i;
wh = mtod(m, struct ieee80211_frame *);
@@ -1194,26 +1191,10 @@ ipw_tx_start(struct ifnet *ifp, struct mbuf *m, struct ieee80211_node *ni)
}
if (error != 0) {
/* too many fragments, linearize */
-
- MGETHDR(mnew, M_DONTWAIT, MT_DATA);
- if (mnew == NULL) {
+ if (m_defrag(m, M_DONTWAIT) != 0) {
m_freem(m);
return ENOMEM;
}
- M_DUP_PKTHDR(mnew, m);
- if (m->m_pkthdr.len > MHLEN) {
- MCLGET(mnew, M_DONTWAIT);
- if (!(mnew->m_flags & M_EXT)) {
- m_freem(m);
- m_freem(mnew);
- return ENOMEM;
- }
- }
- m_copydata(m, 0, m->m_pkthdr.len, mtod(mnew, caddr_t));
- m_freem(m);
- mnew->m_len = mnew->m_pkthdr.len;
- m = mnew;
-
error = bus_dmamap_load_mbuf(sc->sc_dmat, sbuf->map, m,
BUS_DMA_NOWAIT);
if (error != 0) {