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 ---