diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1251_acx.h')
| -rw-r--r-- | drivers/net/wireless/wl12xx/wl1251_acx.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1251_acx.h b/drivers/net/wireless/wl12xx/wl1251_acx.h index 652371432cd8..26160c45784c 100644 --- a/drivers/net/wireless/wl12xx/wl1251_acx.h +++ b/drivers/net/wireless/wl12xx/wl1251_acx.h | |||
| @@ -1166,6 +1166,87 @@ struct wl1251_acx_wr_tbtt_and_dtim { | |||
| 1166 | u8 padding; | 1166 | u8 padding; |
| 1167 | } __attribute__ ((packed)); | 1167 | } __attribute__ ((packed)); |
| 1168 | 1168 | ||
| 1169 | struct wl1251_acx_ac_cfg { | ||
| 1170 | struct acx_header header; | ||
| 1171 | |||
| 1172 | /* | ||
| 1173 | * Access Category - The TX queue's access category | ||
| 1174 | * (refer to AccessCategory_enum) | ||
| 1175 | */ | ||
| 1176 | u8 ac; | ||
| 1177 | |||
| 1178 | /* | ||
| 1179 | * The contention window minimum size (in slots) for | ||
| 1180 | * the access class. | ||
| 1181 | */ | ||
| 1182 | u8 cw_min; | ||
| 1183 | |||
| 1184 | /* | ||
| 1185 | * The contention window maximum size (in slots) for | ||
| 1186 | * the access class. | ||
| 1187 | */ | ||
| 1188 | u16 cw_max; | ||
| 1189 | |||
| 1190 | /* The AIF value (in slots) for the access class. */ | ||
| 1191 | u8 aifsn; | ||
| 1192 | |||
| 1193 | u8 reserved; | ||
| 1194 | |||
| 1195 | /* The TX Op Limit (in microseconds) for the access class. */ | ||
| 1196 | u16 txop_limit; | ||
| 1197 | } __attribute__ ((packed)); | ||
| 1198 | |||
| 1199 | |||
| 1200 | enum wl1251_acx_channel_type { | ||
| 1201 | CHANNEL_TYPE_DCF = 0, | ||
| 1202 | CHANNEL_TYPE_EDCF = 1, | ||
| 1203 | CHANNEL_TYPE_HCCA = 2, | ||
| 1204 | }; | ||
| 1205 | |||
| 1206 | enum wl1251_acx_ps_scheme { | ||
| 1207 | /* regular ps: simple sending of packets */ | ||
| 1208 | WL1251_ACX_PS_SCHEME_LEGACY = 0, | ||
| 1209 | |||
| 1210 | /* sending a packet triggers a unscheduled apsd downstream */ | ||
| 1211 | WL1251_ACX_PS_SCHEME_UPSD_TRIGGER = 1, | ||
| 1212 | |||
| 1213 | /* a pspoll packet will be sent before every data packet */ | ||
| 1214 | WL1251_ACX_PS_SCHEME_LEGACY_PSPOLL = 2, | ||
| 1215 | |||
| 1216 | /* scheduled apsd mode */ | ||
| 1217 | WL1251_ACX_PS_SCHEME_SAPSD = 3, | ||
| 1218 | }; | ||
| 1219 | |||
| 1220 | enum wl1251_acx_ack_policy { | ||
| 1221 | WL1251_ACX_ACK_POLICY_LEGACY = 0, | ||
| 1222 | WL1251_ACX_ACK_POLICY_NO_ACK = 1, | ||
| 1223 | WL1251_ACX_ACK_POLICY_BLOCK = 2, | ||
| 1224 | }; | ||
| 1225 | |||
| 1226 | struct wl1251_acx_tid_cfg { | ||
| 1227 | struct acx_header header; | ||
| 1228 | |||
| 1229 | /* tx queue id number (0-7) */ | ||
| 1230 | u8 queue; | ||
| 1231 | |||
| 1232 | /* channel access type for the queue, enum wl1251_acx_channel_type */ | ||
| 1233 | u8 type; | ||
| 1234 | |||
| 1235 | /* EDCA: ac index (0-3), HCCA: traffic stream id (8-15) */ | ||
| 1236 | u8 tsid; | ||
| 1237 | |||
| 1238 | /* ps scheme of the specified queue, enum wl1251_acx_ps_scheme */ | ||
| 1239 | u8 ps_scheme; | ||
| 1240 | |||
| 1241 | /* the tx queue ack policy, enum wl1251_acx_ack_policy */ | ||
| 1242 | u8 ack_policy; | ||
| 1243 | |||
| 1244 | u8 padding[3]; | ||
| 1245 | |||
| 1246 | /* not supported */ | ||
| 1247 | u32 apsdconf[2]; | ||
| 1248 | } __attribute__ ((packed)); | ||
| 1249 | |||
| 1169 | /************************************************************************* | 1250 | /************************************************************************* |
| 1170 | 1251 | ||
| 1171 | Host Interrupt Register (WiLink -> Host) | 1252 | Host Interrupt Register (WiLink -> Host) |
| @@ -1322,5 +1403,11 @@ int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime); | |||
| 1322 | int wl1251_acx_rate_policies(struct wl1251 *wl); | 1403 | int wl1251_acx_rate_policies(struct wl1251 *wl); |
| 1323 | int wl1251_acx_mem_cfg(struct wl1251 *wl); | 1404 | int wl1251_acx_mem_cfg(struct wl1251 *wl); |
| 1324 | int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim); | 1405 | int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim); |
| 1406 | int wl1251_acx_ac_cfg(struct wl1251 *wl, u8 ac, u8 cw_min, u16 cw_max, | ||
| 1407 | u8 aifs, u16 txop); | ||
| 1408 | int wl1251_acx_tid_cfg(struct wl1251 *wl, u8 queue, | ||
| 1409 | enum wl1251_acx_channel_type type, | ||
| 1410 | u8 tsid, enum wl1251_acx_ps_scheme ps_scheme, | ||
| 1411 | enum wl1251_acx_ack_policy ack_policy); | ||
| 1325 | 1412 | ||
| 1326 | #endif /* __WL1251_ACX_H__ */ | 1413 | #endif /* __WL1251_ACX_H__ */ |
