Skip to content

Commit ed7791d

Browse files
m-karpenkoKalle Valo
authored andcommitted
qtnfmac: add support for TWT responder and spatial reuse
Add support for 11ax features: TWT responder and spatial reuse. Add separate structure for spatial reuse parameters and pass this structure to firmware along with other parameters in start_ap command. Pass TWT responder value to firmware. Bump qlink protocol version. Signed-off-by: Mikhail Karpenko <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent b73f0aa commit ed7791d

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

drivers/net/wireless/quantenna/qtnfmac/commands.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,14 @@ int qtnf_cmd_send_start_ap(struct qtnf_vif *vif,
257257
cmd->pbss = s->pbss;
258258
cmd->ht_required = s->ht_required;
259259
cmd->vht_required = s->vht_required;
260+
cmd->twt_responder = s->twt_responder;
261+
if (s->he_obss_pd.enable) {
262+
cmd->sr_params.sr_control |= QLINK_SR_SRG_INFORMATION_PRESENT;
263+
cmd->sr_params.srg_obss_pd_min_offset =
264+
s->he_obss_pd.min_offset;
265+
cmd->sr_params.srg_obss_pd_max_offset =
266+
s->he_obss_pd.max_offset;
267+
}
260268

261269
aen = &cmd->aen;
262270
aen->auth_type = s->auth_type;

drivers/net/wireless/quantenna/qtnfmac/qlink.h

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#include <linux/ieee80211.h>
88

9-
#define QLINK_PROTO_VER 15
9+
#define QLINK_PROTO_VER 16
1010

1111
#define QLINK_MACID_RSVD 0xFF
1212
#define QLINK_VIFID_RSVD 0xFF
@@ -196,6 +196,45 @@ struct qlink_sta_info_state {
196196
__le32 value;
197197
} __packed;
198198

199+
/**
200+
* enum qlink_sr_ctrl_flags - control flags for spatial reuse parameter set
201+
*
202+
* @QLINK_SR_PSR_DISALLOWED: indicates whether or not PSR-based spatial reuse
203+
* transmissions are allowed for STAs associated with the AP
204+
* @QLINK_SR_NON_SRG_OBSS_PD_SR_DISALLOWED: indicates whether or not
205+
* Non-SRG OBSS PD spatial reuse transmissions are allowed for STAs associated
206+
* with the AP
207+
* @NON_SRG_OFFSET_PRESENT: indicates whether or not Non-SRG OBSS PD Max offset
208+
* field is valid in the element
209+
* @QLINK_SR_SRG_INFORMATION_PRESENT: indicates whether or not SRG OBSS PD
210+
* Min/Max offset fields ore valid in the element
211+
*/
212+
enum qlink_sr_ctrl_flags {
213+
QLINK_SR_PSR_DISALLOWED = BIT(0),
214+
QLINK_SR_NON_SRG_OBSS_PD_SR_DISALLOWED = BIT(1),
215+
QLINK_SR_NON_SRG_OFFSET_PRESENT = BIT(2),
216+
QLINK_SR_SRG_INFORMATION_PRESENT = BIT(3),
217+
};
218+
219+
/**
220+
* struct qlink_sr_params - spatial reuse parameters
221+
*
222+
* @sr_control: spatial reuse control field; flags contained in this field are
223+
* defined in @qlink_sr_ctrl_flags
224+
* @non_srg_obss_pd_max: added to -82 dBm to generate the value of the
225+
* Non-SRG OBSS PD Max parameter
226+
* @srg_obss_pd_min_offset: added to -82 dBm to generate the value of the
227+
* SRG OBSS PD Min parameter
228+
* @srg_obss_pd_max_offset: added to -82 dBm to generate the value of the
229+
* SRG PBSS PD Max parameter
230+
*/
231+
struct qlink_sr_params {
232+
u8 sr_control;
233+
u8 non_srg_obss_pd_max;
234+
u8 srg_obss_pd_min_offset;
235+
u8 srg_obss_pd_max_offset;
236+
} __packed;
237+
199238
/* QLINK Command messages related definitions
200239
*/
201240

@@ -651,6 +690,8 @@ enum qlink_hidden_ssid {
651690
* @ht_required: stations must support HT
652691
* @vht_required: stations must support VHT
653692
* @aen: encryption info
693+
* @sr_params: spatial reuse parameters
694+
* @twt_responder: enable Target Wake Time
654695
* @info: variable configurations
655696
*/
656697
struct qlink_cmd_start_ap {
@@ -666,6 +707,9 @@ struct qlink_cmd_start_ap {
666707
u8 ht_required;
667708
u8 vht_required;
668709
struct qlink_auth_encr aen;
710+
struct qlink_sr_params sr_params;
711+
u8 twt_responder;
712+
u8 rsvd[3];
669713
u8 info[0];
670714
} __packed;
671715

0 commit comments

Comments
 (0)