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