Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0caf150 authored by Arend van Spriel's avatar Arend van Spriel Committed by Greg Kroah-Hartman
Browse files

staging: brcm80211: store HT operation mode settings from mac80211



The HT operation mode is provided by mac80211 and they are now
stored in the driver.

Reviewed-by: default avatarRoland Vossen <rvossen@broadcom.com>
Reviewed-by: default avatarBrett Rudley <brudley@broadcom.com>
Reviewed-by: default avatarHenry Ptasinski <henryp@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d8a1fb44
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -357,7 +357,13 @@ wl_ops_bss_info_changed(struct ieee80211_hw *hw,
	if (changed & BSS_CHANGED_HT) {
	if (changed & BSS_CHANGED_HT) {
		/* 802.11n parameters changed */
		/* 802.11n parameters changed */
		u16 mode = info->ht_operation_mode;
		u16 mode = info->ht_operation_mode;
		WL_NONE("%s: HT mode: 0x%04X (implement)\n", __func__, mode);
		WL_NONE("%s: HT mode: 0x%04X\n", __func__, mode);
		wlc_protection_upd(wl->wlc, WLC_PROT_N_CFG,
			mode & IEEE80211_HT_OP_MODE_PROTECTION);
		wlc_protection_upd(wl->wlc, WLC_PROT_N_NONGF,
			mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
		wlc_protection_upd(wl->wlc, WLC_PROT_N_OBSS,
			mode & IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT);
	}
	}
	if (changed & BSS_CHANGED_BASIC_RATES) {
	if (changed & BSS_CHANGED_BASIC_RATES) {
		/* Basic rateset changed */
		/* Basic rateset changed */
+0 −14
Original line number Original line Diff line number Diff line
@@ -29,19 +29,6 @@
#define	MAXCOREREV		28	/* max # supported core revisions (0 .. MAXCOREREV - 1) */
#define	MAXCOREREV		28	/* max # supported core revisions (0 .. MAXCOREREV - 1) */
#define WLC_MAXMODULES		22	/* max #  wlc_module_register() calls */
#define WLC_MAXMODULES		22	/* max #  wlc_module_register() calls */


/* network protection config */
#define	WLC_PROT_G_SPEC		1	/* SPEC g protection */
#define	WLC_PROT_G_OVR		2	/* SPEC g prot override */
#define	WLC_PROT_G_USER		3	/* gmode specified by user */
#define	WLC_PROT_OVERLAP	4	/* overlap */
#define	WLC_PROT_N_USER		10	/* nmode specified by user */
#define	WLC_PROT_N_CFG		11	/* n protection */
#define	WLC_PROT_N_CFG_OVR	12	/* n protection override */
#define	WLC_PROT_N_NONGF	13	/* non-GF protection */
#define	WLC_PROT_N_NONGF_OVR	14	/* non-GF protection override */
#define	WLC_PROT_N_PAM_OVR	15	/* n preamble override */
#define	WLC_PROT_N_OBSS		16	/* non-HT OBSS present */

#define WLC_BITSCNT(x)	bcm_bitcount((u8 *)&(x), sizeof(u8))
#define WLC_BITSCNT(x)	bcm_bitcount((u8 *)&(x), sizeof(u8))


/* Maximum wait time for a MAC suspend */
/* Maximum wait time for a MAC suspend */
@@ -847,7 +834,6 @@ extern void wlc_set_cwmax(struct wlc_info *wlc, u16 newmax);
extern void wlc_fifoerrors(struct wlc_info *wlc);
extern void wlc_fifoerrors(struct wlc_info *wlc);
extern void wlc_pllreq(struct wlc_info *wlc, bool set, mbool req_bit);
extern void wlc_pllreq(struct wlc_info *wlc, bool set, mbool req_bit);
extern void wlc_reset_bmac_done(struct wlc_info *wlc);
extern void wlc_reset_bmac_done(struct wlc_info *wlc);
extern void wlc_protection_upd(struct wlc_info *wlc, uint idx, int val);
extern void wlc_hwtimer_gptimer_set(struct wlc_info *wlc, uint us);
extern void wlc_hwtimer_gptimer_set(struct wlc_info *wlc, uint us);
extern void wlc_hwtimer_gptimer_abort(struct wlc_info *wlc);
extern void wlc_hwtimer_gptimer_abort(struct wlc_info *wlc);


+14 −0
Original line number Original line Diff line number Diff line
@@ -481,6 +481,19 @@ extern const u8 wme_fifo2ac[];
#define WLC_USE_COREFLAGS	0xffffffff	/* invalid core flags, use the saved coreflags */
#define WLC_USE_COREFLAGS	0xffffffff	/* invalid core flags, use the saved coreflags */




/* network protection config */
#define	WLC_PROT_G_SPEC		1	/* SPEC g protection */
#define	WLC_PROT_G_OVR		2	/* SPEC g prot override */
#define	WLC_PROT_G_USER		3	/* gmode specified by user */
#define	WLC_PROT_OVERLAP	4	/* overlap */
#define	WLC_PROT_N_USER		10	/* nmode specified by user */
#define	WLC_PROT_N_CFG		11	/* n protection */
#define	WLC_PROT_N_CFG_OVR	12	/* n protection override */
#define	WLC_PROT_N_NONGF	13	/* non-GF protection */
#define	WLC_PROT_N_NONGF_OVR	14	/* non-GF protection override */
#define	WLC_PROT_N_PAM_OVR	15	/* n preamble override */
#define	WLC_PROT_N_OBSS		16	/* non-HT OBSS present */

/* common functions for every port */
/* common functions for every port */
extern void *wlc_attach(void *wl, u16 vendor, u16 device, uint unit,
extern void *wlc_attach(void *wl, u16 vendor, u16 device, uint unit,
			bool piomode, struct osl_info *osh, void *regsva,
			bool piomode, struct osl_info *osh, void *regsva,
@@ -514,6 +527,7 @@ extern int wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
		     struct wlc_if *wlcif);
		     struct wlc_if *wlcif);
/* helper functions */
/* helper functions */
extern void wlc_statsupd(struct wlc_info *wlc);
extern void wlc_statsupd(struct wlc_info *wlc);
extern void wlc_protection_upd(struct wlc_info *wlc, uint idx, int val);
extern int wlc_get_header_len(void);
extern int wlc_get_header_len(void);
extern void wlc_mac_bcn_promisc_change(struct wlc_info *wlc, bool promisc);
extern void wlc_mac_bcn_promisc_change(struct wlc_info *wlc, bool promisc);
extern void wlc_set_addrmatch(struct wlc_info *wlc, int match_reg_offset,
extern void wlc_set_addrmatch(struct wlc_info *wlc, int match_reg_offset,