xref: /freebsd/sys/dev/rtwn/rtl8812a/r12a_rx_desc.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
17453645fSAndriy Voskoboinyk /*-
27453645fSAndriy Voskoboinyk  * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
37453645fSAndriy Voskoboinyk  * All rights reserved.
47453645fSAndriy Voskoboinyk  *
57453645fSAndriy Voskoboinyk  * Redistribution and use in source and binary forms, with or without
67453645fSAndriy Voskoboinyk  * modification, are permitted provided that the following conditions
77453645fSAndriy Voskoboinyk  * are met:
87453645fSAndriy Voskoboinyk  * 1. Redistributions of source code must retain the above copyright
97453645fSAndriy Voskoboinyk  *    notice, this list of conditions and the following disclaimer.
107453645fSAndriy Voskoboinyk  * 2. Redistributions in binary form must reproduce the above copyright
117453645fSAndriy Voskoboinyk  *    notice, this list of conditions and the following disclaimer in the
127453645fSAndriy Voskoboinyk  *    documentation and/or other materials provided with the distribution.
137453645fSAndriy Voskoboinyk  *
147453645fSAndriy Voskoboinyk  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
157453645fSAndriy Voskoboinyk  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
167453645fSAndriy Voskoboinyk  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
177453645fSAndriy Voskoboinyk  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
187453645fSAndriy Voskoboinyk  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
197453645fSAndriy Voskoboinyk  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
207453645fSAndriy Voskoboinyk  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
217453645fSAndriy Voskoboinyk  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
227453645fSAndriy Voskoboinyk  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
237453645fSAndriy Voskoboinyk  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
247453645fSAndriy Voskoboinyk  * SUCH DAMAGE.
257453645fSAndriy Voskoboinyk  */
267453645fSAndriy Voskoboinyk 
277453645fSAndriy Voskoboinyk #ifndef R12A_RX_DESC_H
287453645fSAndriy Voskoboinyk #define R12A_RX_DESC_H
297453645fSAndriy Voskoboinyk 
307453645fSAndriy Voskoboinyk #include <dev/rtwn/rtl8192c/r92c_rx_desc.h>
317453645fSAndriy Voskoboinyk 
327453645fSAndriy Voskoboinyk /* Rx MAC descriptor defines (chip-specific). */
337453645fSAndriy Voskoboinyk /* Rx dword 1 */
347453645fSAndriy Voskoboinyk #define R12A_RXDW1_AMSDU	0x00002000
35*09606165SAndriy Voskoboinyk #define R12A_RXDW1_AMPDU	0x00008000
367453645fSAndriy Voskoboinyk #define R12A_RXDW1_CKSUM_ERR	0x00100000
377453645fSAndriy Voskoboinyk #define R12A_RXDW1_IPV6		0x00200000
387453645fSAndriy Voskoboinyk #define R12A_RXDW1_UDP		0x00400000
397453645fSAndriy Voskoboinyk #define R12A_RXDW1_CKSUM	0x00800000
407453645fSAndriy Voskoboinyk /* Rx dword 2 */
417453645fSAndriy Voskoboinyk #define R12A_RXDW2_RPT_C2H	0x10000000
42*09606165SAndriy Voskoboinyk /* Rx dword 3 */
43*09606165SAndriy Voskoboinyk #define R12A_RXDW3_RATE_M	0x0000007f
44*09606165SAndriy Voskoboinyk #define R12A_RXDW3_RATE_S	0
457453645fSAndriy Voskoboinyk /* Rx dword 4 */
467453645fSAndriy Voskoboinyk #define R12A_RXDW4_SPLCP	0x00000001
477453645fSAndriy Voskoboinyk #define R12A_RXDW4_LDPC		0x00000002
487453645fSAndriy Voskoboinyk #define R12A_RXDW4_STBC		0x00000004
497453645fSAndriy Voskoboinyk #define R12A_RXDW4_BW_M		0x00000030
507453645fSAndriy Voskoboinyk #define R12A_RXDW4_BW_S		4
51*09606165SAndriy Voskoboinyk #define R12A_RXDW4_BW20		0
52*09606165SAndriy Voskoboinyk #define R12A_RXDW4_BW40		1
53*09606165SAndriy Voskoboinyk #define R12A_RXDW4_BW80		2
54*09606165SAndriy Voskoboinyk #define R12A_RXDW4_BW160	3
557453645fSAndriy Voskoboinyk 
567453645fSAndriy Voskoboinyk /* Rx PHY descriptor. */
577453645fSAndriy Voskoboinyk struct r12a_rx_phystat {
587453645fSAndriy Voskoboinyk 	uint8_t		gain_trsw[2];
597453645fSAndriy Voskoboinyk 	uint16_t	phyw1;
607453645fSAndriy Voskoboinyk #define R12A_PHYW1_CHAN_M	0x03ff
617453645fSAndriy Voskoboinyk #define R12A_PHYW1_CHAN_S	0
627453645fSAndriy Voskoboinyk #define R12A_PHYW1_CHAN_EXT_M	0x3c00
637453645fSAndriy Voskoboinyk #define R12A_PHYW1_CHAN_EXT_S	10
647453645fSAndriy Voskoboinyk #define R12A_PHYW1_RFMOD_M	0xc000
657453645fSAndriy Voskoboinyk #define R12A_PHYW1_RFMOD_S	14
667453645fSAndriy Voskoboinyk 
677453645fSAndriy Voskoboinyk 	uint8_t		pwdb_all;
687453645fSAndriy Voskoboinyk 	uint8_t		cfosho[4];
697453645fSAndriy Voskoboinyk 	uint8_t		cfotail[4];
707453645fSAndriy Voskoboinyk 	uint8_t		rxevm[2];
717453645fSAndriy Voskoboinyk 	uint8_t		rxsnr[2];
727453645fSAndriy Voskoboinyk 	uint8_t		pcts_msk_rpt[2];
737453645fSAndriy Voskoboinyk 	uint8_t		pdsnr[2];
747453645fSAndriy Voskoboinyk 	uint8_t		csi_current[2];
757453645fSAndriy Voskoboinyk 	uint8_t		rx_gain_c;
767453645fSAndriy Voskoboinyk 	uint8_t		rx_gain_d;
777453645fSAndriy Voskoboinyk 	uint8_t		sigevm;
787453645fSAndriy Voskoboinyk 	uint16_t	phyw13;
797453645fSAndriy Voskoboinyk #define R12A_PHYW13_ANTIDX_A_M	0x0700
807453645fSAndriy Voskoboinyk #define R12A_PHYW13_ANTIDX_A_S	8
817453645fSAndriy Voskoboinyk #define R12A_PHYW13_ANTIDX_B_M	0x3800
827453645fSAndriy Voskoboinyk #define R12A_PHYW13_ANTIDX_B_S	11
837453645fSAndriy Voskoboinyk } __packed;
847453645fSAndriy Voskoboinyk 
857453645fSAndriy Voskoboinyk #endif	/* R12A_RX_DESC_H */
86