In WLAN, priority among various access categories of traffic is always set by the AP using WMM parameters and this may not always follow the standard 802.1d priority. In this change, priority is adjusted based on the AP WMM params received as part of the Assoc Response and the same is later used to map the priority of all incoming traffic. In a specific scenario where EDCA parameters are configured to be same for all ACs, use the default FW priority definition to avoid queuing packets of all ACs to the same priority queue. This change fixes the following 802.11 certification tests: * 11n - 5.2.31 ACM Bit Conformance test * 11n - 5.2.32 AC Parameter Modification test * 11ac - 5.2.33 TXOP Limit test Signed-off-by: Saravanan Shanmugham <saravanan.shanmugham@cypress.com> Signed-off-by: Justin Li <justin.li@cypress.com> Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com> Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/1588661487-21884-2-git-send-email-chi-hsien.lin@cypress.com
79 lines
2.3 KiB
C
79 lines
2.3 KiB
C
// SPDX-License-Identifier: ISC
|
|
/*
|
|
* Copyright (c) 2014 Broadcom Corporation
|
|
*/
|
|
#ifndef BRCMFMAC_COMMON_H
|
|
#define BRCMFMAC_COMMON_H
|
|
|
|
#include <linux/platform_device.h>
|
|
#include <linux/platform_data/brcmfmac.h>
|
|
#include "fwil_types.h"
|
|
|
|
#define BRCMF_FW_ALTPATH_LEN 256
|
|
|
|
/* Definitions for the module global and device specific settings are defined
|
|
* here. Two structs are used for them. brcmf_mp_global_t and brcmf_mp_device.
|
|
* The mp_global is instantiated once in a global struct and gets initialized
|
|
* by the common_attach function which should be called before any other
|
|
* (module) initiliazation takes place. The device specific settings is part
|
|
* of the drvr struct and should be initialized on every brcmf_attach.
|
|
*/
|
|
|
|
/**
|
|
* struct brcmf_mp_global_t - Global module paramaters.
|
|
*
|
|
* @firmware_path: Alternative firmware path.
|
|
*/
|
|
struct brcmf_mp_global_t {
|
|
char firmware_path[BRCMF_FW_ALTPATH_LEN];
|
|
};
|
|
|
|
extern struct brcmf_mp_global_t brcmf_mp_global;
|
|
|
|
/**
|
|
* struct brcmf_mp_device - Device module paramaters.
|
|
*
|
|
* @p2p_enable: Legacy P2P0 enable (old wpa_supplicant).
|
|
* @feature_disable: Feature_disable bitmask.
|
|
* @fcmode: FWS flow control.
|
|
* @roamoff: Firmware roaming off?
|
|
* @ignore_probe_fail: Ignore probe failure.
|
|
* @country_codes: If available, pointer to struct for translating country codes
|
|
* @bus: Bus specific platform data. Only SDIO at the mmoment.
|
|
*/
|
|
struct brcmf_mp_device {
|
|
bool p2p_enable;
|
|
unsigned int feature_disable;
|
|
int fcmode;
|
|
bool roamoff;
|
|
bool iapp;
|
|
bool ignore_probe_fail;
|
|
struct brcmfmac_pd_cc *country_codes;
|
|
const char *board_type;
|
|
union {
|
|
struct brcmfmac_sdio_pd sdio;
|
|
} bus;
|
|
};
|
|
|
|
void brcmf_c_set_joinpref_default(struct brcmf_if *ifp);
|
|
|
|
struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
|
|
enum brcmf_bus_type bus_type,
|
|
u32 chip, u32 chiprev);
|
|
void brcmf_release_module_param(struct brcmf_mp_device *module_param);
|
|
|
|
/* Sets dongle media info (drv_version, mac address). */
|
|
int brcmf_c_preinit_dcmds(struct brcmf_if *ifp);
|
|
|
|
#ifdef CONFIG_DMI
|
|
void brcmf_dmi_probe(struct brcmf_mp_device *settings, u32 chip, u32 chiprev);
|
|
#else
|
|
static inline void
|
|
brcmf_dmi_probe(struct brcmf_mp_device *settings, u32 chip, u32 chiprev) {}
|
|
#endif
|
|
|
|
u8 brcmf_map_prio_to_prec(void *cfg, u8 prio);
|
|
|
|
u8 brcmf_map_prio_to_aci(void *cfg, u8 prio);
|
|
|
|
#endif /* BRCMFMAC_COMMON_H */
|