xref: /freebsd/sys/contrib/dev/iwlwifi/mvm/rs.c (revision 92daf3a606e655f3db4508c76c733c340d9d3a68)
1bfcc09ddSBjoern A. Zeeb /*-
2bfcc09ddSBjoern A. Zeeb  * Copyright (c) 2020-2021 The FreeBSD Foundation
3bfcc09ddSBjoern A. Zeeb  *
4bfcc09ddSBjoern A. Zeeb  * This software was developed by Björn Zeeb under sponsorship from
5bfcc09ddSBjoern A. Zeeb  * the FreeBSD Foundation.
6bfcc09ddSBjoern A. Zeeb  *
7bfcc09ddSBjoern A. Zeeb  * Redistribution and use in source and binary forms, with or without
8bfcc09ddSBjoern A. Zeeb  * modification, are permitted provided that the following conditions
9bfcc09ddSBjoern A. Zeeb  * are met:
10bfcc09ddSBjoern A. Zeeb  * 1. Redistributions of source code must retain the above copyright
11bfcc09ddSBjoern A. Zeeb  *    notice, this list of conditions and the following disclaimer.
12bfcc09ddSBjoern A. Zeeb  * 2. Redistributions in binary form must reproduce the above copyright
13bfcc09ddSBjoern A. Zeeb  *    notice, this list of conditions and the following disclaimer in the
14bfcc09ddSBjoern A. Zeeb  *    documentation and/or other materials provided with the distribution.
15bfcc09ddSBjoern A. Zeeb  *
16bfcc09ddSBjoern A. Zeeb  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17bfcc09ddSBjoern A. Zeeb  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18bfcc09ddSBjoern A. Zeeb  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19bfcc09ddSBjoern A. Zeeb  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20bfcc09ddSBjoern A. Zeeb  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21bfcc09ddSBjoern A. Zeeb  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22bfcc09ddSBjoern A. Zeeb  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23bfcc09ddSBjoern A. Zeeb  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24bfcc09ddSBjoern A. Zeeb  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25bfcc09ddSBjoern A. Zeeb  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26bfcc09ddSBjoern A. Zeeb  * SUCH DAMAGE.
27bfcc09ddSBjoern A. Zeeb  *
28bfcc09ddSBjoern A. Zeeb  * $FreeBSD$
29bfcc09ddSBjoern A. Zeeb  */
30bfcc09ddSBjoern A. Zeeb 
31bfcc09ddSBjoern A. Zeeb /*
32bfcc09ddSBjoern A. Zeeb  * XXX-BZ:
33bfcc09ddSBjoern A. Zeeb  * This file is left as a wrapper to make mvm compile and we will only
34bfcc09ddSBjoern A. Zeeb  * deal with it on a need basis.  Most newer chipsets do this in firmware.
35bfcc09ddSBjoern A. Zeeb  */
36bfcc09ddSBjoern A. Zeeb 
37bfcc09ddSBjoern A. Zeeb #include <sys/errno.h>
38bfcc09ddSBjoern A. Zeeb 
39bfcc09ddSBjoern A. Zeeb #include "mvm.h"
40bfcc09ddSBjoern A. Zeeb 
41*92daf3a6SBjoern A. Zeeb #ifdef CONFIG_IWLWIFI_DEBUGFS
42*92daf3a6SBjoern A. Zeeb void
43*92daf3a6SBjoern A. Zeeb iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg)
44*92daf3a6SBjoern A. Zeeb {
45*92daf3a6SBjoern A. Zeeb 
46*92daf3a6SBjoern A. Zeeb }
47*92daf3a6SBjoern A. Zeeb 
48*92daf3a6SBjoern A. Zeeb void
49*92daf3a6SBjoern A. Zeeb iwl_mvm_reset_frame_stats(struct iwl_mvm *mvm)
50*92daf3a6SBjoern A. Zeeb {
51*92daf3a6SBjoern A. Zeeb 
52*92daf3a6SBjoern A. Zeeb }
53*92daf3a6SBjoern A. Zeeb #endif
54bfcc09ddSBjoern A. Zeeb 
55bfcc09ddSBjoern A. Zeeb int
56bfcc09ddSBjoern A. Zeeb iwl_mvm_rate_control_register(void)
57bfcc09ddSBjoern A. Zeeb {
58bfcc09ddSBjoern A. Zeeb 
59bfcc09ddSBjoern A. Zeeb 	return (0);
60bfcc09ddSBjoern A. Zeeb }
61bfcc09ddSBjoern A. Zeeb 
62bfcc09ddSBjoern A. Zeeb int
63bfcc09ddSBjoern A. Zeeb iwl_mvm_tx_protection(struct iwl_mvm *mvm, struct iwl_mvm_sta *sta, bool enable)
64bfcc09ddSBjoern A. Zeeb {
65bfcc09ddSBjoern A. Zeeb 
66bfcc09ddSBjoern A. Zeeb 	return (0);
67bfcc09ddSBjoern A. Zeeb }
68bfcc09ddSBjoern A. Zeeb 
69bfcc09ddSBjoern A. Zeeb void
70bfcc09ddSBjoern A. Zeeb iwl_mvm_rate_control_unregister(void)
71bfcc09ddSBjoern A. Zeeb {
72bfcc09ddSBjoern A. Zeeb }
73bfcc09ddSBjoern A. Zeeb 
74bfcc09ddSBjoern A. Zeeb void
75bfcc09ddSBjoern A. Zeeb iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
76bfcc09ddSBjoern A. Zeeb     enum nl80211_band band, bool t)
77bfcc09ddSBjoern A. Zeeb {
78bfcc09ddSBjoern A. Zeeb }
79bfcc09ddSBjoern A. Zeeb 
80bfcc09ddSBjoern A. Zeeb void
81bfcc09ddSBjoern A. Zeeb iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, int tid,
82bfcc09ddSBjoern A. Zeeb     struct ieee80211_tx_info *ba_info, bool t)
83bfcc09ddSBjoern A. Zeeb {
84bfcc09ddSBjoern A. Zeeb }
85bfcc09ddSBjoern A. Zeeb 
86bfcc09ddSBjoern A. Zeeb void
87bfcc09ddSBjoern A. Zeeb rs_update_last_rssi(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta,
88bfcc09ddSBjoern A. Zeeb     struct ieee80211_rx_status *rx_status)
89bfcc09ddSBjoern A. Zeeb {
90bfcc09ddSBjoern A. Zeeb 
91bfcc09ddSBjoern A. Zeeb 	/*
92bfcc09ddSBjoern A. Zeeb 	 * Assumption based on mvm/sta.h is that this should update
93bfcc09ddSBjoern A. Zeeb 	 * mvmsta->lq_sta.rs_drv but so far we only saw a iwl_lq_cmd (lq)
94bfcc09ddSBjoern A. Zeeb 	 * access in that struct so nowhere to put rssi information.
95bfcc09ddSBjoern A. Zeeb 	 * So the only thing would be if this is required internally
96bfcc09ddSBjoern A. Zeeb 	 * to functions in this file.
97bfcc09ddSBjoern A. Zeeb 	 */
98bfcc09ddSBjoern A. Zeeb }
99bfcc09ddSBjoern A. Zeeb 
100bfcc09ddSBjoern A. Zeeb int
101bfcc09ddSBjoern A. Zeeb rs_pretty_print_rate_v1(char *buf, int bufsz, const u32 rate)
102bfcc09ddSBjoern A. Zeeb {
103bfcc09ddSBjoern A. Zeeb 
104bfcc09ddSBjoern A. Zeeb 	return (0);
105bfcc09ddSBjoern A. Zeeb }
106