mac80211.h (69d41b5a9c9d8d24c0faeb376fc2f52fc810d855) | mac80211.h (cb71f1d136a635decf43c3b502ee34fb05640fcd) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * mac80211 <-> driver interface 4 * 5 * Copyright 2002-2005, Devicescape Software, Inc. 6 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> 8 * Copyright 2013-2014 Intel Mobile Communications GmbH --- 2136 unchanged lines hidden (view full) --- 2145 * @max_amsdu_subframes: indicates the maximal number of MSDUs in a single 2146 * A-MSDU. Taken from the Extended Capabilities element. 0 means 2147 * unlimited. 2148 * @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not. 2149 * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control. 2150 * @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID 2151 * @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that 2152 * the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames | 1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * mac80211 <-> driver interface 4 * 5 * Copyright 2002-2005, Devicescape Software, Inc. 6 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> 8 * Copyright 2013-2014 Intel Mobile Communications GmbH --- 2136 unchanged lines hidden (view full) --- 2145 * @max_amsdu_subframes: indicates the maximal number of MSDUs in a single 2146 * A-MSDU. Taken from the Extended Capabilities element. 0 means 2147 * unlimited. 2148 * @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not. 2149 * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control. 2150 * @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID 2151 * @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that 2152 * the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames |
2153 * @multi_link_sta: Identifies if this sta is a MLD STA | |
2154 * @deflink: This holds the default link STA information, for non MLO STA all link 2155 * specific STA information is accessed through @deflink or through 2156 * link[0] which points to address of @deflink. For MLO Link STA 2157 * the first added link STA will point to deflink. 2158 * @link: reference to Link Sta entries. For Non MLO STA, except 1st link, 2159 * i.e link[0] all links would be assigned to NULL by default and 2160 * would access link information via @deflink or link[0]. For MLO 2161 * STA, first link STA being added will point its link pointer to 2162 * @deflink address and remaining would be allocated and the address 2163 * would be assigned to link[link_id] where link_id is the id assigned 2164 * by the AP. | 2153 * @deflink: This holds the default link STA information, for non MLO STA all link 2154 * specific STA information is accessed through @deflink or through 2155 * link[0] which points to address of @deflink. For MLO Link STA 2156 * the first added link STA will point to deflink. 2157 * @link: reference to Link Sta entries. For Non MLO STA, except 1st link, 2158 * i.e link[0] all links would be assigned to NULL by default and 2159 * would access link information via @deflink or link[0]. For MLO 2160 * STA, first link STA being added will point its link pointer to 2161 * @deflink address and remaining would be allocated and the address 2162 * would be assigned to link[link_id] where link_id is the id assigned 2163 * by the AP. |
2164 * @valid_links: bitmap of valid links, or 0 for non-MLO |
|
2165 */ 2166struct ieee80211_sta { 2167 u8 addr[ETH_ALEN]; 2168 u16 aid; 2169 u16 max_rx_aggregation_subframes; 2170 bool wme; 2171 u8 uapsd_queues; 2172 u8 max_sp; --- 21 unchanged lines hidden (view full) --- 2194 */ 2195 u16 max_amsdu_len; 2196 bool support_p2p_ps; 2197 u16 max_rc_amsdu_len; 2198 u16 max_tid_amsdu_len[IEEE80211_NUM_TIDS]; 2199 2200 struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1]; 2201 | 2165 */ 2166struct ieee80211_sta { 2167 u8 addr[ETH_ALEN]; 2168 u16 aid; 2169 u16 max_rx_aggregation_subframes; 2170 bool wme; 2171 u8 uapsd_queues; 2172 u8 max_sp; --- 21 unchanged lines hidden (view full) --- 2194 */ 2195 u16 max_amsdu_len; 2196 bool support_p2p_ps; 2197 u16 max_rc_amsdu_len; 2198 u16 max_tid_amsdu_len[IEEE80211_NUM_TIDS]; 2199 2200 struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1]; 2201 |
2202 bool multi_link_sta; | 2202 u16 valid_links; |
2203 struct ieee80211_link_sta deflink; 2204 struct ieee80211_link_sta *link[IEEE80211_MLD_MAX_NUM_LINKS]; 2205 2206 /* must be last */ 2207 u8 drv_priv[] __aligned(sizeof(void *)); 2208}; 2209 2210/** --- 1832 unchanged lines hidden (view full) --- 4043 * resolve a path for hardware flow offloading 4044 * @change_vif_links: Change the valid links on an interface, note that while 4045 * removing the old link information is still valid (link_conf pointer), 4046 * but may immediately disappear after the function returns. The old or 4047 * new links bitmaps may be 0 if going from/to a non-MLO situation. 4048 * The @old[] array contains pointers to the old bss_conf structures 4049 * that were already removed, in case they're needed. 4050 * This callback can sleep. | 2203 struct ieee80211_link_sta deflink; 2204 struct ieee80211_link_sta *link[IEEE80211_MLD_MAX_NUM_LINKS]; 2205 2206 /* must be last */ 2207 u8 drv_priv[] __aligned(sizeof(void *)); 2208}; 2209 2210/** --- 1832 unchanged lines hidden (view full) --- 4043 * resolve a path for hardware flow offloading 4044 * @change_vif_links: Change the valid links on an interface, note that while 4045 * removing the old link information is still valid (link_conf pointer), 4046 * but may immediately disappear after the function returns. The old or 4047 * new links bitmaps may be 0 if going from/to a non-MLO situation. 4048 * The @old[] array contains pointers to the old bss_conf structures 4049 * that were already removed, in case they're needed. 4050 * This callback can sleep. |
4051 * @change_sta_links: Change the valid links of a station, similar to 4052 * @change_vif_links. This callback can sleep. 4053 * Note that a sta can also be inserted or removed with valid links, 4054 * i.e. passed to @sta_add/@sta_state with sta->valid_links not zero. 4055 * In fact, cannot change from having valid_links and not having them. |
|
4051 */ 4052struct ieee80211_ops { 4053 void (*tx)(struct ieee80211_hw *hw, 4054 struct ieee80211_tx_control *control, 4055 struct sk_buff *skb); 4056 int (*start)(struct ieee80211_hw *hw); 4057 void (*stop)(struct ieee80211_hw *hw); 4058#ifdef CONFIG_PM --- 331 unchanged lines hidden (view full) --- 4390 struct ieee80211_vif *vif, 4391 struct ieee80211_sta *sta, 4392 struct net_device_path_ctx *ctx, 4393 struct net_device_path *path); 4394 int (*change_vif_links)(struct ieee80211_hw *hw, 4395 struct ieee80211_vif *vif, 4396 u16 old_links, u16 new_links, 4397 struct ieee80211_bss_conf *old[IEEE80211_MLD_MAX_NUM_LINKS]); | 4056 */ 4057struct ieee80211_ops { 4058 void (*tx)(struct ieee80211_hw *hw, 4059 struct ieee80211_tx_control *control, 4060 struct sk_buff *skb); 4061 int (*start)(struct ieee80211_hw *hw); 4062 void (*stop)(struct ieee80211_hw *hw); 4063#ifdef CONFIG_PM --- 331 unchanged lines hidden (view full) --- 4395 struct ieee80211_vif *vif, 4396 struct ieee80211_sta *sta, 4397 struct net_device_path_ctx *ctx, 4398 struct net_device_path *path); 4399 int (*change_vif_links)(struct ieee80211_hw *hw, 4400 struct ieee80211_vif *vif, 4401 u16 old_links, u16 new_links, 4402 struct ieee80211_bss_conf *old[IEEE80211_MLD_MAX_NUM_LINKS]); |
4403 int (*change_sta_links)(struct ieee80211_hw *hw, 4404 struct ieee80211_vif *vif, 4405 struct ieee80211_sta *sta, 4406 u16 old_links, u16 new_links); |
|
4398}; 4399 4400/** 4401 * ieee80211_alloc_hw_nm - Allocate a new hardware device 4402 * 4403 * This must be called once for each hardware device. The returned pointer 4404 * must be used to refer to this device when calling other functions. 4405 * mac80211 allocates a private data area for the driver pointed to by --- 2608 unchanged lines hidden --- | 4407}; 4408 4409/** 4410 * ieee80211_alloc_hw_nm - Allocate a new hardware device 4411 * 4412 * This must be called once for each hardware device. The returned pointer 4413 * must be used to refer to this device when calling other functions. 4414 * mac80211 allocates a private data area for the driver pointed to by --- 2608 unchanged lines hidden --- |