1  /*
2   * Copyright (c) 2011-2012, 2014-2019 The Linux Foundation. All rights reserved.
3   *
4   * Permission to use, copy, modify, and/or distribute this software for
5   * any purpose with or without fee is hereby granted, provided that the
6   * above copyright notice and this permission notice appear in all
7   * copies.
8   *
9   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16   * PERFORMANCE OF THIS SOFTWARE.
17   */
18  
19  /*
20   *
21   * Author:      Dinesh Upadhyay
22   * Date:        10/24/06
23   * History:-
24   * Date            Modified by    Modification Information
25   * --------------------------------------------------------------------
26   *
27   */
28  
29  #ifndef __LIM_ADMIT_CONTROL_H__
30  #define __LIM_ADMIT_CONTROL_H__
31  
32  #include "sir_common.h"
33  #include "sir_mac_prot_def.h"
34  
35  #include "ani_global.h"
36  
37  QDF_STATUS
38  lim_tspec_find_by_assoc_id(struct mac_context *, uint16_t,
39  			   struct mac_tspec_ie *,
40  			   tpLimTspecInfo, tpLimTspecInfo *);
41  
42  /* Add TSPEC in lim local table */
43  QDF_STATUS lim_tspec_add(struct mac_context *mac,
44  			    uint8_t *pAddr,
45  			    uint16_t assocId,
46  			    struct mac_tspec_ie *pTspec,
47  			    uint32_t interval, tpLimTspecInfo *ppInfo);
48  
49  /* admit control interface */
50  QDF_STATUS lim_admit_control_add_ts(struct mac_context *mac,
51  				    uint8_t *pAddr, tSirAddtsReqInfo *addts,
52  				    tSirMacQosCapabilityStaIE *qos,
53  				    uint16_t assocId, uint8_t alloc,
54  				    tSirMacScheduleIE *pSch,
55  				    /* index to the lim tspec table. */
56  				    uint8_t *pTspecIdx,
57  				    struct pe_session *pe_session);
58  
59  static inline QDF_STATUS
lim_admit_control_add_sta(struct mac_context * mac,uint8_t * staAddr,uint8_t alloc)60  lim_admit_control_add_sta(struct mac_context *mac, uint8_t *staAddr, uint8_t alloc)
61  {
62  	return QDF_STATUS_SUCCESS;
63  }
64  
65  QDF_STATUS
66  lim_admit_control_delete_sta(struct mac_context *mac, uint16_t assocId);
67  
68  QDF_STATUS
69  lim_admit_control_delete_ts(struct mac_context *mac,
70  			    uint16_t assocId,
71  			    struct mac_ts_info *tsinfo,
72  			    uint8_t *tsStatus, uint8_t *tspecIdx);
73  
74  QDF_STATUS lim_admit_control_init(struct mac_context *mac);
75  #ifdef FEATURE_WLAN_ESE
76  QDF_STATUS lim_send_hal_msg_add_ts(struct mac_context *mac,
77  				      uint8_t tspecIdx,
78  				      struct mac_tspec_ie tspecIE,
79  				      uint8_t sessionId, uint16_t tsm_interval);
80  #else
81  QDF_STATUS lim_send_hal_msg_add_ts(struct mac_context *mac,
82  				      uint8_t tspecIdx,
83  				      struct mac_tspec_ie tspecIE,
84  				      uint8_t sessionId);
85  #endif
86  
87  QDF_STATUS lim_send_hal_msg_del_ts(struct mac_context *mac,
88  				      uint8_t tspecIdx,
89  				      struct delts_req_info delts,
90  				      uint8_t sessionId, uint8_t *bssId);
91  void lim_process_hal_add_ts_rsp(struct mac_context *mac,
92  				struct scheduler_msg *limMsg);
93  
94  #endif
95