diff options
author | Damien Bergamini <damien@cvs.openbsd.org> | 2008-08-27 09:14:37 +0000 |
---|---|---|
committer | Damien Bergamini <damien@cvs.openbsd.org> | 2008-08-27 09:14:37 +0000 |
commit | b9718efd4fed18c215ace8a97dfb2fd920b8c26a (patch) | |
tree | 65691e08fbbb951e6525a0c33a3cdd92a79195b1 /sys/dev/ic | |
parent | ae8d786435a0cd5b546644a9f5e3592c26c022e5 (diff) |
override net80211's ic_node_alloc function to allocate a full
bwi_node structure (containing the rate control state).
because bwi(4) does not support HostAP or IBSS modes there is
no need to maintain a per-node rate control state, so we could
as well store it in bwi_softc but that will allow for future
improvements.
pointed out by Taylor R Campbell (campbell AT mumble DOT net)
on tech@
Diffstat (limited to 'sys/dev/ic')
-rw-r--r-- | sys/dev/ic/bwi.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/dev/ic/bwi.c b/sys/dev/ic/bwi.c index 12bfabf7bc5..01d45fb81df 100644 --- a/sys/dev/ic/bwi.c +++ b/sys/dev/ic/bwi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bwi.c,v 1.79 2008/08/27 09:05:03 damien Exp $ */ +/* $OpenBSD: bwi.c,v 1.80 2008/08/27 09:14:36 damien Exp $ */ /* * Copyright (c) 2007 The DragonFly Project. All rights reserved. @@ -292,6 +292,8 @@ void bwi_iter_func(void *, struct ieee80211_node *); void bwi_amrr_timeout(void *); void bwi_newassoc(struct ieee80211com *, struct ieee80211_node *, int); +struct ieee80211_node + *bwi_node_alloc(struct ieee80211com *ic); int bwi_dma_alloc(struct bwi_softc *); void bwi_dma_free(struct bwi_softc *); int bwi_dma_ring_alloc(struct bwi_softc *, @@ -877,6 +879,7 @@ bwi_attach(struct bwi_softc *sc) sc->sc_newstate = ic->ic_newstate; ic->ic_newstate = bwi_newstate; ic->ic_newassoc = bwi_newassoc; + ic->ic_node_alloc = bwi_node_alloc; ieee80211_media_init(ifp, bwi_media_change, ieee80211_media_status); @@ -7514,6 +7517,18 @@ bwi_newassoc(struct ieee80211com *ic, struct ieee80211_node *ni, int isnew) ni->ni_txrate = i; } +struct ieee80211_node * +bwi_node_alloc(struct ieee80211com *ic) +{ + struct bwi_node *bn; + + bn = malloc(sizeof(*bn), M_DEVBUF, M_NOWAIT | M_ZERO); + if (bn == NULL) + return (NULL); + + return ((struct ieee80211_node *)bn); +} + int bwi_dma_alloc(struct bwi_softc *sc) { |