ieee80211_ratectl_none.c revision 214069
1139749Simp/*-
24435Sgibbs * Copyright (c) 2010 Bernhard Schmidt <bschmidt@FreeBSD.org>
38876Srgrimes * All rights reserved.
4963Sats *
54435Sgibbs * Redistribution and use in source and binary forms, with or without
64435Sgibbs * modification, are permitted provided that the following conditions
74435Sgibbs * are met:
84435Sgibbs * 1. Redistributions of source code must retain the above copyright
913765Smpp *    notice, this list of conditions and the following disclaimer.
108876Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
114435Sgibbs *    notice, this list of conditions and the following disclaimer in the
124435Sgibbs *    documentation and/or other materials provided with the distribution.
134435Sgibbs *
144435Sgibbs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
154435Sgibbs * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
164435Sgibbs * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
174435Sgibbs * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
184435Sgibbs * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
194435Sgibbs * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
204435Sgibbs * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
218876Srgrimes * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2250477Speter * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
237510Sjkh * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
244435Sgibbs */
254435Sgibbs
2651673Smdodd#include <sys/cdefs.h>
2751673Smdodd__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_ratectl_none.c 214069 2010-10-19 18:49:26Z bschmidt $");
2816374Snate
2951673Smdodd#include "opt_wlan.h"
3051673Smdodd
3116374Snate#include <sys/param.h>
3216374Snate#include <sys/kernel.h>
334435Sgibbs#include <sys/module.h>
344435Sgibbs#include <sys/socket.h>
354435Sgibbs#include <sys/sysctl.h>
364435Sgibbs
374435Sgibbs#include <net/if.h>
38117700Smarkm#include <net/if_media.h>
3930398Sitojun
404435Sgibbs#ifdef INET
414435Sgibbs#include <netinet/in.h>
424435Sgibbs#include <netinet/if_ether.h>
434435Sgibbs#endif
444435Sgibbs
4514259Sgibbs#include <net80211/ieee80211_var.h>
464435Sgibbs#include <net80211/ieee80211_ratectl.h>
474435Sgibbs
484435Sgibbsstatic void
494435Sgibbsnone_init(struct ieee80211vap *vap)
504435Sgibbs{
514435Sgibbs}
524435Sgibbs
534435Sgibbsstatic void
544435Sgibbsnone_deinit(struct ieee80211vap *vap)
554435Sgibbs{
564435Sgibbs	free(vap->iv_rs, M_80211_RATECTL);
574435Sgibbs}
584435Sgibbs
594435Sgibbsstatic void
604435Sgibbsnone_node_init(struct ieee80211_node *ni)
614435Sgibbs{
62121492Simp}
63121588Simp
644435Sgibbsstatic void
65963Satsnone_node_deinit(struct ieee80211_node *ni)
664435Sgibbs{
67963Sats}
6813765Smpp
69963Satsstatic int
70963Satsnone_rate(struct ieee80211_node *ni, void *arg __unused, uint32_t iarg __unused)
71963Sats{
72963Sats	int rix = 0;
73963Sats
74963Sats	ni->ni_txrate = ni->ni_rates.rs_rates[rix] & IEEE80211_RATE_VAL;
75963Sats	return rix;
76963Sats}
77117700Smarkm
78117700Smarkmstatic void
79117700Smarkmnone_tx_complete(const struct ieee80211vap *vap,
80963Sats    const struct ieee80211_node *ni, int ok,
81963Sats    void *arg1, void *arg2 __unused)
82117700Smarkm{
83117700Smarkm}
844435Sgibbs
8554201Smdoddstatic void
8654201Smdoddnone_tx_update(const struct ieee80211vap *vap, const struct ieee80211_node *ni,
8754201Smdodd    void *arg1, void *arg2, void *arg3)
8854201Smdodd{
8954201Smdodd}
9054201Smdodd
9154201Smdoddstatic void
92117700Smarkmnone_setinterval(const struct ieee80211vap *vap, int msecs)
93117700Smarkm{
9454201Smdodd}
9554201Smdodd
9654201Smdodd/* number of references from net80211 layer */
97117700Smarkmstatic	int nrefs = 0;
98117700Smarkm
99117700Smarkmstatic const struct ieee80211_ratectl none = {
100117700Smarkm	.ir_name	= "none",
101117700Smarkm	.ir_attach	= NULL,
102117700Smarkm	.ir_detach	= NULL,
103117700Smarkm	.ir_init	= none_init,
10454201Smdodd	.ir_deinit	= none_deinit,
105117700Smarkm	.ir_node_init	= none_node_init,
106117700Smarkm	.ir_node_deinit	= none_node_deinit,
107117700Smarkm	.ir_rate	= none_rate,
108117700Smarkm	.ir_tx_complete	= none_tx_complete,
109117700Smarkm	.ir_tx_update	= none_tx_update,
110963Sats	.ir_setinterval	= none_setinterval,
11154201Smdodd};
11254201SmdoddIEEE80211_RATECTL_MODULE(ratectl_none, 1);
113963SatsIEEE80211_RATECTL_ALG(none, IEEE80211_RATECTL_NONE, none);
114148579Simp