Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

brcm80211: cleanup defines in main.c

Signed-off-by: Alwin Beukers <alwin@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by

Alwin Beukers and committed by
John W. Linville
73ffc2fc ef5af747

+142 -194
+142 -194
drivers/net/wireless/brcm80211/brcmsmac/main.c
··· 35 35 * Indication for txflowcontrol that all priority bits in 36 36 * TXQ_STOP_FOR_PRIOFC_MASK are to be considered. 37 37 */ 38 - #define ALLPRIO -1 39 - 40 - /* 41 - * 32 SSID chars, max of 4 chars for each SSID char "\xFF", plus NULL. 42 - */ 43 - #define SSID_FMT_BUF_LEN ((4 * IEEE80211_MAX_SSID_LEN) + 1) 38 + #define ALLPRIO -1 44 39 45 40 /* watchdog timer, in unit of ms */ 46 - #define TIMER_INTERVAL_WATCHDOG 1000 41 + #define TIMER_INTERVAL_WATCHDOG 1000 47 42 /* radio monitor timer, in unit of ms */ 48 - #define TIMER_INTERVAL_RADIOCHK 800 43 + #define TIMER_INTERVAL_RADIOCHK 800 49 44 50 45 /* Max MPC timeout, in unit of watchdog */ 51 46 #ifndef BRCMS_MPC_MAX_DELAYCNT 52 - #define BRCMS_MPC_MAX_DELAYCNT 10 47 + #define BRCMS_MPC_MAX_DELAYCNT 10 53 48 #endif 54 49 55 50 /* Min MPC timeout, in unit of watchdog */ 56 - #define BRCMS_MPC_MIN_DELAYCNT 1 57 - #define BRCMS_MPC_THRESHOLD 3 /* MPC count threshold level */ 51 + #define BRCMS_MPC_MIN_DELAYCNT 1 52 + /* MPC count threshold level */ 53 + #define BRCMS_MPC_THRESHOLD 3 58 54 59 55 /* beacon interval, in unit of 1024TU */ 60 - #define BEACON_INTERVAL_DEFAULT 100 61 - /* DTIM interval, in unit of beacon interval */ 62 - #define DTIM_INTERVAL_DEFAULT 3 63 - 64 - /* Scale down delays to accommodate QT slow speed */ 65 - /* beacon interval, in unit of 1024TU */ 66 - #define BEACON_INTERVAL_DEF_QT 20 67 - /* DTIM interval, in unit of beacon interval */ 68 - #define DTIM_INTERVAL_DEF_QT 1 69 - 70 - #define TBTT_ALIGN_LEEWAY_US 100 /* min leeway before first TBTT in us */ 56 + #define BEACON_INTERVAL_DEFAULT 100 71 57 72 58 /* n-mode support capability */ 73 59 /* 2x2 includes both 1x1 & 2x2 devices ··· 64 78 #define WL_11N_3x3 3 65 79 #define WL_11N_4x4 4 66 80 67 - /* define 11n feature disable flags */ 68 - #define WLFEATURE_DISABLE_11N 0x00000001 69 - #define WLFEATURE_DISABLE_11N_STBC_TX 0x00000002 70 - #define WLFEATURE_DISABLE_11N_STBC_RX 0x00000004 71 - #define WLFEATURE_DISABLE_11N_SGI_TX 0x00000008 72 - #define WLFEATURE_DISABLE_11N_SGI_RX 0x00000010 73 - #define WLFEATURE_DISABLE_11N_AMPDU_TX 0x00000020 74 - #define WLFEATURE_DISABLE_11N_AMPDU_RX 0x00000040 75 - #define WLFEATURE_DISABLE_11N_GF 0x00000080 81 + #define EDCF_ACI_MASK 0x60 82 + #define EDCF_ACI_SHIFT 5 83 + #define EDCF_ECWMIN_MASK 0x0f 84 + #define EDCF_ECWMAX_SHIFT 4 85 + #define EDCF_AIFSN_MASK 0x0f 86 + #define EDCF_AIFSN_MAX 15 87 + #define EDCF_ECWMAX_MASK 0xf0 76 88 77 - #define EDCF_ACI_MASK 0x60 78 - #define EDCF_ACI_SHIFT 5 79 - #define EDCF_ECWMIN_MASK 0x0f 80 - #define EDCF_ECWMAX_SHIFT 4 81 - #define EDCF_AIFSN_MASK 0x0f 82 - #define EDCF_AIFSN_MAX 15 83 - #define EDCF_ECWMAX_MASK 0xf0 89 + #define EDCF_AC_BE_TXOP_STA 0x0000 90 + #define EDCF_AC_BK_TXOP_STA 0x0000 91 + #define EDCF_AC_VO_ACI_STA 0x62 92 + #define EDCF_AC_VO_ECW_STA 0x32 93 + #define EDCF_AC_VI_ACI_STA 0x42 94 + #define EDCF_AC_VI_ECW_STA 0x43 95 + #define EDCF_AC_BK_ECW_STA 0xA4 96 + #define EDCF_AC_VI_TXOP_STA 0x005e 97 + #define EDCF_AC_VO_TXOP_STA 0x002f 98 + #define EDCF_AC_BE_ACI_STA 0x03 99 + #define EDCF_AC_BE_ECW_STA 0xA4 100 + #define EDCF_AC_BK_ACI_STA 0x27 101 + #define EDCF_AC_VO_TXOP_AP 0x002f 84 102 85 - #define EDCF_AC_BE_TXOP_STA 0x0000 86 - #define EDCF_AC_BK_TXOP_STA 0x0000 87 - #define EDCF_AC_VO_ACI_STA 0x62 88 - #define EDCF_AC_VO_ECW_STA 0x32 89 - #define EDCF_AC_VI_ACI_STA 0x42 90 - #define EDCF_AC_VI_ECW_STA 0x43 91 - #define EDCF_AC_BK_ECW_STA 0xA4 92 - #define EDCF_AC_VI_TXOP_STA 0x005e 93 - #define EDCF_AC_VO_TXOP_STA 0x002f 94 - #define EDCF_AC_BE_ACI_STA 0x03 95 - #define EDCF_AC_BE_ECW_STA 0xA4 96 - #define EDCF_AC_BK_ACI_STA 0x27 97 - #define EDCF_AC_VO_TXOP_AP 0x002f 103 + #define EDCF_TXOP2USEC(txop) ((txop) << 5) 104 + #define EDCF_ECW2CW(exp) ((1 << (exp)) - 1) 98 105 99 - #define EDCF_TXOP2USEC(txop) ((txop) << 5) 100 - #define EDCF_ECW2CW(exp) ((1 << (exp)) - 1) 106 + #define APHY_SYMBOL_TIME 4 107 + #define APHY_PREAMBLE_TIME 16 108 + #define APHY_SIGNAL_TIME 4 109 + #define APHY_SIFS_TIME 16 110 + #define APHY_SERVICE_NBITS 16 111 + #define APHY_TAIL_NBITS 6 112 + #define BPHY_SIFS_TIME 10 113 + #define BPHY_PLCP_SHORT_TIME 96 101 114 102 - #define APHY_SYMBOL_TIME 4 103 - #define APHY_PREAMBLE_TIME 16 104 - #define APHY_SIGNAL_TIME 4 105 - #define APHY_SIFS_TIME 16 106 - #define APHY_SERVICE_NBITS 16 107 - #define APHY_TAIL_NBITS 6 108 - #define BPHY_SIFS_TIME 10 109 - #define BPHY_PLCP_SHORT_TIME 96 110 - 111 - #define PREN_PREAMBLE 24 112 - #define PREN_MM_EXT 12 113 - #define PREN_PREAMBLE_EXT 4 115 + #define PREN_PREAMBLE 24 116 + #define PREN_MM_EXT 12 117 + #define PREN_PREAMBLE_EXT 4 114 118 115 119 #define DOT11_MAC_HDR_LEN 24 116 - #define DOT11_ACK_LEN 10 117 - #define DOT11_BA_LEN 4 120 + #define DOT11_ACK_LEN 10 121 + #define DOT11_BA_LEN 4 118 122 #define DOT11_OFDM_SIGNAL_EXTENSION 6 119 123 #define DOT11_MIN_FRAG_LEN 256 120 - #define DOT11_RTS_LEN 16 121 - #define DOT11_CTS_LEN 10 124 + #define DOT11_RTS_LEN 16 125 + #define DOT11_CTS_LEN 10 122 126 #define DOT11_BA_BITMAP_LEN 128 123 127 #define DOT11_MIN_BEACON_PERIOD 1 124 128 #define DOT11_MAX_BEACON_PERIOD 0xFFFF 125 - #define DOT11_MAXNUMFRAGS 16 129 + #define DOT11_MAXNUMFRAGS 16 126 130 #define DOT11_MAX_FRAG_LEN 2346 127 131 128 - #define BPHY_PLCP_TIME 192 129 - #define RIFS_11N_TIME 2 132 + #define BPHY_PLCP_TIME 192 133 + #define RIFS_11N_TIME 2 130 134 131 - #define WME_VER 1 132 - #define WME_SUBTYPE_PARAM_IE 1 133 - #define WME_TYPE 2 134 - #define WME_OUI "\x00\x50\xf2" 135 + #define AC_BE 0 136 + #define AC_BK 1 137 + #define AC_VI 2 138 + #define AC_VO 3 135 139 136 - #define AC_BE 0 137 - #define AC_BK 1 138 - #define AC_VI 2 139 - #define AC_VO 3 140 - 141 - #define BCN_TMPL_LEN 512 /* length of the BCN template area */ 140 + /* length of the BCN template area */ 141 + #define BCN_TMPL_LEN 512 142 142 143 143 /* brcms_bss_info flag bit values */ 144 - #define BRCMS_BSS_HT 0x0020 /* BSS is HT (MIMO) capable */ 144 + #define BRCMS_BSS_HT 0x0020 /* BSS is HT (MIMO) capable */ 145 145 146 - /* Flags used in brcms_c_txq_info.stopped */ 147 - /* per prio flow control bits */ 148 - #define TXQ_STOP_FOR_PRIOFC_MASK 0x000000FF 149 - /* stop txq enqueue for packet drain */ 150 - #define TXQ_STOP_FOR_PKT_DRAIN 0x00000100 151 - /* stop txq enqueue for ampdu flow control */ 152 - #define TXQ_STOP_FOR_AMPDU_FLOW_CNTRL 0x00000200 153 - 154 - #define BRCMS_HWRXOFF 38 /* chip rx buffer offset */ 155 - 156 - /* Find basic rate for a given rate */ 157 - static u8 brcms_basic_rate(struct brcms_c_info *wlc, u32 rspec) 158 - { 159 - if (is_mcs_rate(rspec)) 160 - return wlc->band->basic_rate[mcs_table[rspec & RSPEC_RATE_MASK] 161 - .leg_ofdm]; 162 - return wlc->band->basic_rate[rspec & RSPEC_RATE_MASK]; 163 - } 164 - 165 - static u16 frametype(u32 rspec, u8 mimoframe) 166 - { 167 - if (is_mcs_rate(rspec)) 168 - return mimoframe; 169 - return is_cck_rate(rspec) ? FT_CCK : FT_OFDM; 170 - } 146 + /* chip rx buffer offset */ 147 + #define BRCMS_HWRXOFF 38 171 148 172 149 /* rfdisable delay timer 500 ms, runs of ALP clock */ 173 - #define RFDISABLE_DEFAULT 10000000 150 + #define RFDISABLE_DEFAULT 10000000 174 151 175 152 #define BRCMS_TEMPSENSE_PERIOD 10 /* 10 second timeout */ 176 153 ··· 143 194 * These constants are used ONLY by wlc_prio2prec_map. Do not use them 144 195 * elsewhere. 145 196 */ 146 - #define _BRCMS_PREC_NONE 0 /* None = - */ 147 - #define _BRCMS_PREC_BK 2 /* BK - Background */ 148 - #define _BRCMS_PREC_BE 4 /* BE - Best-effort */ 149 - #define _BRCMS_PREC_EE 6 /* EE - Excellent-effort */ 150 - #define _BRCMS_PREC_CL 8 /* CL - Controlled Load */ 151 - #define _BRCMS_PREC_VI 10 /* Vi - Video */ 152 - #define _BRCMS_PREC_VO 12 /* Vo - Voice */ 153 - #define _BRCMS_PREC_NC 14 /* NC - Network Control */ 197 + #define _BRCMS_PREC_NONE 0 /* None = - */ 198 + #define _BRCMS_PREC_BK 2 /* BK - Background */ 199 + #define _BRCMS_PREC_BE 4 /* BE - Best-effort */ 200 + #define _BRCMS_PREC_EE 6 /* EE - Excellent-effort */ 201 + #define _BRCMS_PREC_CL 8 /* CL - Controlled Load */ 202 + #define _BRCMS_PREC_VI 10 /* Vi - Video */ 203 + #define _BRCMS_PREC_VO 12 /* Vo - Voice */ 204 + #define _BRCMS_PREC_NC 14 /* NC - Network Control */ 154 205 155 - /* The BSS is generating beacons in HW */ 156 - #define BRCMS_BSSCFG_HW_BCN 0x20 206 + /* synthpu_dly times in us */ 207 + #define SYNTHPU_DLY_APHY_US 3700 208 + #define SYNTHPU_DLY_BPHY_US 1050 209 + #define SYNTHPU_DLY_NPHY_US 2048 210 + #define SYNTHPU_DLY_LPPHY_US 300 157 211 158 - #define SYNTHPU_DLY_APHY_US 3700 /* a phy synthpu_dly time in us */ 159 - #define SYNTHPU_DLY_BPHY_US 1050 /* b/g phy synthpu_dly time in us */ 160 - #define SYNTHPU_DLY_NPHY_US 2048 /* n phy REV3 synthpu_dly time in us */ 161 - #define SYNTHPU_DLY_LPPHY_US 300 /* lpphy synthpu_dly time in us */ 162 - 163 - #define SYNTHPU_DLY_PHY_US_QT 100 /* QT synthpu_dly time in us */ 164 - 165 - #define ANTCNT 10 /* vanilla M_MAX_ANTCNT value */ 212 + #define ANTCNT 10 /* vanilla M_MAX_ANTCNT val */ 166 213 167 214 /* Per-AC retry limit register definitions; uses defs.h bitfield macros */ 168 - #define EDCF_SHORT_S 0 169 - #define EDCF_SFB_S 4 170 - #define EDCF_LONG_S 8 171 - #define EDCF_LFB_S 12 172 - #define EDCF_SHORT_M BITFIELD_MASK(4) 173 - #define EDCF_SFB_M BITFIELD_MASK(4) 174 - #define EDCF_LONG_M BITFIELD_MASK(4) 175 - #define EDCF_LFB_M BITFIELD_MASK(4) 215 + #define EDCF_SHORT_S 0 216 + #define EDCF_SFB_S 4 217 + #define EDCF_LONG_S 8 218 + #define EDCF_LFB_S 12 219 + #define EDCF_SHORT_M BITFIELD_MASK(4) 220 + #define EDCF_SFB_M BITFIELD_MASK(4) 221 + #define EDCF_LONG_M BITFIELD_MASK(4) 222 + #define EDCF_LFB_M BITFIELD_MASK(4) 176 223 177 - #define RETRY_SHORT_DEF 7 /* Default Short retry Limit */ 178 - #define RETRY_SHORT_MAX 255 /* Maximum Short retry Limit */ 179 - #define RETRY_LONG_DEF 4 /* Default Long retry count */ 180 - #define RETRY_SHORT_FB 3 /* Short count for fallback rate */ 181 - #define RETRY_LONG_FB 2 /* Long count for fallback rate */ 224 + #define RETRY_SHORT_DEF 7 /* Default Short retry Limit */ 225 + #define RETRY_SHORT_MAX 255 /* Maximum Short retry Limit */ 226 + #define RETRY_LONG_DEF 4 /* Default Long retry count */ 227 + #define RETRY_SHORT_FB 3 /* Short count for fb rate */ 228 + #define RETRY_LONG_FB 2 /* Long count for fb rate */ 182 229 183 - #define APHY_CWMIN 15 184 - #define PHY_CWMAX 1023 230 + #define APHY_CWMIN 15 231 + #define PHY_CWMAX 1023 185 232 186 - #define EDCF_AIFSN_MIN 1 233 + #define EDCF_AIFSN_MIN 1 187 234 188 - #define FRAGNUM_MASK 0xF 235 + #define FRAGNUM_MASK 0xF 189 236 190 - #define APHY_SLOT_TIME 9 191 - #define BPHY_SLOT_TIME 20 237 + #define APHY_SLOT_TIME 9 238 + #define BPHY_SLOT_TIME 20 192 239 193 - #define WL_SPURAVOID_OFF 0 194 - #define WL_SPURAVOID_ON1 1 195 - #define WL_SPURAVOID_ON2 2 240 + #define WL_SPURAVOID_OFF 0 241 + #define WL_SPURAVOID_ON1 1 242 + #define WL_SPURAVOID_ON2 2 196 243 197 244 /* invalid core flags, use the saved coreflags */ 198 - #define BRCMS_USE_COREFLAGS 0xffffffff 245 + #define BRCMS_USE_COREFLAGS 0xffffffff 199 246 200 247 /* values for PLCPHdr_override */ 201 - #define BRCMS_PLCP_AUTO -1 202 - #define BRCMS_PLCP_SHORT 0 203 - #define BRCMS_PLCP_LONG 1 248 + #define BRCMS_PLCP_AUTO -1 249 + #define BRCMS_PLCP_SHORT 0 250 + #define BRCMS_PLCP_LONG 1 204 251 205 252 /* values for g_protection_override and n_protection_override */ 206 253 #define BRCMS_PROTECTION_AUTO -1 207 254 #define BRCMS_PROTECTION_OFF 0 208 255 #define BRCMS_PROTECTION_ON 1 209 256 #define BRCMS_PROTECTION_MMHDR_ONLY 2 210 - #define BRCMS_PROTECTION_CTS_ONLY 3 257 + #define BRCMS_PROTECTION_CTS_ONLY 3 211 258 212 259 /* values for g_protection_control and n_protection_control */ 213 - #define BRCMS_PROTECTION_CTL_OFF 0 260 + #define BRCMS_PROTECTION_CTL_OFF 0 214 261 #define BRCMS_PROTECTION_CTL_LOCAL 1 215 262 #define BRCMS_PROTECTION_CTL_OVERLAP 2 216 263 217 264 /* values for n_protection */ 218 265 #define BRCMS_N_PROTECTION_OFF 0 219 266 #define BRCMS_N_PROTECTION_OPTIONAL 1 220 - #define BRCMS_N_PROTECTION_20IN40 2 267 + #define BRCMS_N_PROTECTION_20IN40 2 221 268 #define BRCMS_N_PROTECTION_MIXEDMODE 3 222 269 223 270 /* values for band specific 40MHz capabilities */ 224 - #define BRCMS_N_BW_20ALL 0 225 - #define BRCMS_N_BW_40ALL 1 226 - #define BRCMS_N_BW_20IN2G_40IN5G 2 271 + #define BRCMS_N_BW_20ALL 0 272 + #define BRCMS_N_BW_40ALL 1 273 + #define BRCMS_N_BW_20IN2G_40IN5G 2 227 274 228 275 /* bitflags for SGI support (sgi_rx iovar) */ 229 276 #define BRCMS_N_SGI_20 0x01 ··· 227 282 228 283 /* defines used by the nrate iovar */ 229 284 /* MSC in use,indicates b0-6 holds an mcs */ 230 - #define NRATE_MCS_INUSE 0x00000080 285 + #define NRATE_MCS_INUSE 0x00000080 231 286 /* rate/mcs value */ 232 - #define NRATE_RATE_MASK 0x0000007f 287 + #define NRATE_RATE_MASK 0x0000007f 233 288 /* stf mode mask: siso, cdd, stbc, sdm */ 234 - #define NRATE_STF_MASK 0x0000ff00 289 + #define NRATE_STF_MASK 0x0000ff00 235 290 /* stf mode shift */ 236 - #define NRATE_STF_SHIFT 8 237 - /* bit indicates override both rate & mode */ 238 - #define NRATE_OVERRIDE 0x80000000 291 + #define NRATE_STF_SHIFT 8 239 292 /* bit indicate to override mcs only */ 240 - #define NRATE_OVERRIDE_MCS_ONLY 0x40000000 241 - #define NRATE_SGI_MASK 0x00800000 /* sgi mode */ 242 - #define NRATE_SGI_SHIFT 23 /* sgi mode */ 243 - #define NRATE_LDPC_CODING 0x00400000 /* bit indicates adv coding in use */ 244 - #define NRATE_LDPC_SHIFT 22 /* ldpc shift */ 293 + #define NRATE_OVERRIDE_MCS_ONLY 0x40000000 294 + #define NRATE_SGI_MASK 0x00800000 /* sgi mode */ 295 + #define NRATE_SGI_SHIFT 23 /* sgi mode */ 296 + #define NRATE_LDPC_CODING 0x00400000 /* adv coding in use */ 297 + #define NRATE_LDPC_SHIFT 22 /* ldpc shift */ 245 298 246 - #define NRATE_STF_SISO 0 /* stf mode SISO */ 247 - #define NRATE_STF_CDD 1 /* stf mode CDD */ 248 - #define NRATE_STF_STBC 2 /* stf mode STBC */ 249 - #define NRATE_STF_SDM 3 /* stf mode SDM */ 299 + #define NRATE_STF_SISO 0 /* stf mode SISO */ 300 + #define NRATE_STF_CDD 1 /* stf mode CDD */ 301 + #define NRATE_STF_STBC 2 /* stf mode STBC */ 302 + #define NRATE_STF_SDM 3 /* stf mode SDM */ 250 303 251 - #define MAX_DMA_SEGS 4 304 + #define MAX_DMA_SEGS 4 252 305 253 306 /* Max # of entries in Tx FIFO based on 4kb page size */ 254 - #define NTXD 256 307 + #define NTXD 256 255 308 /* Max # of entries in Rx FIFO based on 4kb page size */ 256 - #define NRXD 256 309 + #define NRXD 256 257 310 258 311 /* try to keep this # rbufs posted to the chip */ 259 - #define NRXBUFPOST 32 312 + #define NRXBUFPOST 32 260 313 261 314 /* data msg txq hiwat mark */ 262 - #define BRCMS_DATAHIWAT 50 315 + #define BRCMS_DATAHIWAT 50 263 316 264 - /* bounded rx loops */ 265 - #define RXBND 8 /* max # frames to process in brcms_c_recv() */ 266 - #define TXSBND 8 /* max # tx status to process in wlc_txstatus() */ 267 - 268 - /* 269 - * 32 SSID chars, max of 4 chars for each SSID char "\xFF", plus NULL. 270 - */ 271 - #define SSID_FMT_BUF_LEN ((4 * IEEE80211_MAX_SSID_LEN) + 1) 317 + /* max # frames to process in brcms_c_recv() */ 318 + #define RXBND 8 319 + /* max # tx status to process in wlc_txstatus() */ 320 + #define TXSBND 8 272 321 273 322 /* brcmu_format_flags() bit description structure */ 274 323 struct brcms_c_bit_desc { ··· 344 405 {9, 58, 22, 14, 14, 5}, 345 406 }; 346 407 347 - static const u8 acbitmap2maxprio[] = { 348 - PRIO_8021D_BE, PRIO_8021D_BE, PRIO_8021D_BK, PRIO_8021D_BK, 349 - PRIO_8021D_VI, PRIO_8021D_VI, PRIO_8021D_VI, PRIO_8021D_VI, 350 - PRIO_8021D_VO, PRIO_8021D_VO, PRIO_8021D_VO, PRIO_8021D_VO, 351 - PRIO_8021D_VO, PRIO_8021D_VO, PRIO_8021D_VO, PRIO_8021D_VO 352 - }; 353 - 354 408 #ifdef BCMDBG 355 409 static const char * const fifo_names[] = { 356 410 "AC_BK", "AC_BE", "AC_VI", "AC_VO", "BCMC", "ATIM" }; ··· 355 423 /* pointer to most recently allocated wl/wlc */ 356 424 static struct brcms_c_info *wlc_info_dbg = (struct brcms_c_info *) (NULL); 357 425 #endif 426 + 427 + /* Find basic rate for a given rate */ 428 + static u8 brcms_basic_rate(struct brcms_c_info *wlc, u32 rspec) 429 + { 430 + if (is_mcs_rate(rspec)) 431 + return wlc->band->basic_rate[mcs_table[rspec & RSPEC_RATE_MASK] 432 + .leg_ofdm]; 433 + return wlc->band->basic_rate[rspec & RSPEC_RATE_MASK]; 434 + } 435 + 436 + static u16 frametype(u32 rspec, u8 mimoframe) 437 + { 438 + if (is_mcs_rate(rspec)) 439 + return mimoframe; 440 + return is_cck_rate(rspec) ? FT_CCK : FT_OFDM; 441 + } 358 442 359 443 /* currently the best mechanism for determining SIFS is the band in use */ 360 444 static u16 get_sifs(struct brcms_band *band)