1*7453645fSAndriy Voskoboinyk /*- 2*7453645fSAndriy Voskoboinyk * Copyright (c) 2015 Kevin Lo <kevlo@FreeBSD.org> 3*7453645fSAndriy Voskoboinyk * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org> 4*7453645fSAndriy Voskoboinyk * 5*7453645fSAndriy Voskoboinyk * Permission to use, copy, modify, and distribute this software for any 6*7453645fSAndriy Voskoboinyk * purpose with or without fee is hereby granted, provided that the above 7*7453645fSAndriy Voskoboinyk * copyright notice and this permission notice appear in all copies. 8*7453645fSAndriy Voskoboinyk * 9*7453645fSAndriy Voskoboinyk * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*7453645fSAndriy Voskoboinyk * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*7453645fSAndriy Voskoboinyk * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*7453645fSAndriy Voskoboinyk * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*7453645fSAndriy Voskoboinyk * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*7453645fSAndriy Voskoboinyk * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*7453645fSAndriy Voskoboinyk * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*7453645fSAndriy Voskoboinyk * 17*7453645fSAndriy Voskoboinyk * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ 18*7453645fSAndriy Voskoboinyk */ 19*7453645fSAndriy Voskoboinyk 20*7453645fSAndriy Voskoboinyk #ifndef R88E_FW_CMD_H 21*7453645fSAndriy Voskoboinyk #define R88E_FW_CMD_H 22*7453645fSAndriy Voskoboinyk 23*7453645fSAndriy Voskoboinyk /* 24*7453645fSAndriy Voskoboinyk * Host to firmware commands. 25*7453645fSAndriy Voskoboinyk */ 26*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd { 27*7453645fSAndriy Voskoboinyk uint8_t id; 28*7453645fSAndriy Voskoboinyk #define R88E_CMD_RSVD_PAGE 0x00 29*7453645fSAndriy Voskoboinyk #define R88E_CMD_MSR_RPT 0x01 30*7453645fSAndriy Voskoboinyk #define R88E_CMD_SET_PWRMODE 0x20 31*7453645fSAndriy Voskoboinyk 32*7453645fSAndriy Voskoboinyk uint8_t msg[7]; 33*7453645fSAndriy Voskoboinyk } __packed __attribute__((aligned(4))); 34*7453645fSAndriy Voskoboinyk 35*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_RSVD_PAGE. */ 36*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_rsvdpage { 37*7453645fSAndriy Voskoboinyk uint8_t probe_resp; 38*7453645fSAndriy Voskoboinyk uint8_t ps_poll; 39*7453645fSAndriy Voskoboinyk uint8_t null_data; 40*7453645fSAndriy Voskoboinyk uint8_t null_data_qos; 41*7453645fSAndriy Voskoboinyk uint8_t null_data_qos_bt; 42*7453645fSAndriy Voskoboinyk } __packed; 43*7453645fSAndriy Voskoboinyk 44*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_MSR_RPT. */ 45*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_msrrpt { 46*7453645fSAndriy Voskoboinyk uint8_t msrb0; 47*7453645fSAndriy Voskoboinyk #define R88E_MSRRPT_B0_DISASSOC 0x00 48*7453645fSAndriy Voskoboinyk #define R88E_MSRRPT_B0_ASSOC 0x01 49*7453645fSAndriy Voskoboinyk 50*7453645fSAndriy Voskoboinyk uint8_t macid; 51*7453645fSAndriy Voskoboinyk } __packed; 52*7453645fSAndriy Voskoboinyk 53*7453645fSAndriy Voskoboinyk /* Structure for R88E_CMD_SET_PWRMODE. */ 54*7453645fSAndriy Voskoboinyk struct r88e_fw_cmd_pwrmode { 55*7453645fSAndriy Voskoboinyk uint8_t mode; 56*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_CAM 0 57*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_LEG 1 58*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_UAPSD 2 59*7453645fSAndriy Voskoboinyk 60*7453645fSAndriy Voskoboinyk uint8_t pwrb1; 61*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_RLBM_M 0x0f 62*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_RLBM_S 0 63*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_MIN 0 64*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_MAX 1 65*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_MODE_DTIM 2 66*7453645fSAndriy Voskoboinyk 67*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_SMART_PS_M 0xf0 68*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_SMART_PS_S 4 69*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_PSPOLL0 0 70*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_PSPOLL1 1 71*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_LEG_NULLDATA 2 72*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_WMM_PSPOLL 0 73*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_B1_WMM_NULLDATA 1 74*7453645fSAndriy Voskoboinyk 75*7453645fSAndriy Voskoboinyk uint8_t bcn_pass; 76*7453645fSAndriy Voskoboinyk uint8_t queue_uapsd; 77*7453645fSAndriy Voskoboinyk uint8_t pwr_state; 78*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_RFOFF 0x00 79*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_RFON 0x04 80*7453645fSAndriy Voskoboinyk #define R88E_PWRMODE_STATE_ALLON 0x0c 81*7453645fSAndriy Voskoboinyk } __packed; 82*7453645fSAndriy Voskoboinyk 83*7453645fSAndriy Voskoboinyk #endif /* R88E_FW_CMD_H */ 84