xref: /freebsd/sys/dev/rtwn/rtl8192c/r92c_rx_desc.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
17453645fSAndriy Voskoboinyk /*-
27453645fSAndriy Voskoboinyk  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
37453645fSAndriy Voskoboinyk  * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
47453645fSAndriy Voskoboinyk  *
57453645fSAndriy Voskoboinyk  * Permission to use, copy, modify, and distribute this software for any
67453645fSAndriy Voskoboinyk  * purpose with or without fee is hereby granted, provided that the above
77453645fSAndriy Voskoboinyk  * copyright notice and this permission notice appear in all copies.
87453645fSAndriy Voskoboinyk  *
97453645fSAndriy Voskoboinyk  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
107453645fSAndriy Voskoboinyk  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
117453645fSAndriy Voskoboinyk  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
127453645fSAndriy Voskoboinyk  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
137453645fSAndriy Voskoboinyk  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
147453645fSAndriy Voskoboinyk  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
157453645fSAndriy Voskoboinyk  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
167453645fSAndriy Voskoboinyk  *
177453645fSAndriy Voskoboinyk  * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $
187453645fSAndriy Voskoboinyk  */
197453645fSAndriy Voskoboinyk 
207453645fSAndriy Voskoboinyk #ifndef R92C_RX_DESC_H
217453645fSAndriy Voskoboinyk #define R92C_RX_DESC_H
227453645fSAndriy Voskoboinyk 
237453645fSAndriy Voskoboinyk /* Rx MAC descriptor (common parts / USB). */
247453645fSAndriy Voskoboinyk struct r92c_rx_stat {
257453645fSAndriy Voskoboinyk 	uint32_t	rxdw0;
267453645fSAndriy Voskoboinyk #define R92C_RXDW0_PKTLEN_M	0x00003fff
277453645fSAndriy Voskoboinyk #define R92C_RXDW0_PKTLEN_S	0
287453645fSAndriy Voskoboinyk #define R92C_RXDW0_CRCERR	0x00004000
297453645fSAndriy Voskoboinyk #define R92C_RXDW0_ICVERR	0x00008000
307453645fSAndriy Voskoboinyk #define R92C_RXDW0_INFOSZ_M	0x000f0000
317453645fSAndriy Voskoboinyk #define R92C_RXDW0_INFOSZ_S	16
327453645fSAndriy Voskoboinyk #define R92C_RXDW0_CIPHER_M	0x00700000
337453645fSAndriy Voskoboinyk #define R92C_RXDW0_CIPHER_S	20
347453645fSAndriy Voskoboinyk #define R92C_RXDW0_QOS		0x00800000
357453645fSAndriy Voskoboinyk #define R92C_RXDW0_SHIFT_M	0x03000000
367453645fSAndriy Voskoboinyk #define R92C_RXDW0_SHIFT_S	24
377453645fSAndriy Voskoboinyk #define R92C_RXDW0_PHYST	0x04000000
387453645fSAndriy Voskoboinyk #define R92C_RXDW0_SWDEC	0x08000000
397453645fSAndriy Voskoboinyk #define R92C_RXDW0_LS		0x10000000
407453645fSAndriy Voskoboinyk #define R92C_RXDW0_FS		0x20000000
417453645fSAndriy Voskoboinyk #define R92C_RXDW0_EOR		0x40000000
427453645fSAndriy Voskoboinyk #define R92C_RXDW0_OWN		0x80000000
437453645fSAndriy Voskoboinyk 
447453645fSAndriy Voskoboinyk 	uint32_t	rxdw1;
457453645fSAndriy Voskoboinyk #define R92C_RXDW1_MACID_M	0x0000001f
467453645fSAndriy Voskoboinyk #define R92C_RXDW1_MACID_S	0
47*09606165SAndriy Voskoboinyk #define R92C_RXDW1_AMSDU	0x00002000
48*09606165SAndriy Voskoboinyk #define R92C_RXDW1_AMPDU_MORE	0x00004000
49*09606165SAndriy Voskoboinyk #define R92C_RXDW1_AMPDU	0x00008000
507453645fSAndriy Voskoboinyk #define R92C_RXDW1_MC		0x40000000
517453645fSAndriy Voskoboinyk #define R92C_RXDW1_BC		0x80000000
527453645fSAndriy Voskoboinyk 
537453645fSAndriy Voskoboinyk 	uint32_t	rxdw2;
547453645fSAndriy Voskoboinyk 	uint32_t	rxdw3;
557453645fSAndriy Voskoboinyk #define R92C_RXDW3_RATE_M	0x0000003f
567453645fSAndriy Voskoboinyk #define R92C_RXDW3_RATE_S	0
577453645fSAndriy Voskoboinyk #define R92C_RXDW3_HT		0x00000040
587453645fSAndriy Voskoboinyk #define R92C_RXDW3_SPLCP	0x00000100
597453645fSAndriy Voskoboinyk #define R92C_RXDW3_HT40		0x00000200
607453645fSAndriy Voskoboinyk #define R92C_RXDW3_HTC		0x00000400
61*09606165SAndriy Voskoboinyk #define R92C_RXDW3_BSSID_FIT_M	0x00003000
62*09606165SAndriy Voskoboinyk #define R92C_RXDW3_BSSID_FIT_S	12
637453645fSAndriy Voskoboinyk 
647453645fSAndriy Voskoboinyk 	uint32_t	rxdw4;
657453645fSAndriy Voskoboinyk 	uint32_t	tsf_low;
667453645fSAndriy Voskoboinyk } __packed __attribute__((aligned(4)));
677453645fSAndriy Voskoboinyk 
687453645fSAndriy Voskoboinyk /* Rx PHY CCK descriptor. */
697453645fSAndriy Voskoboinyk struct r92c_rx_cck {
707453645fSAndriy Voskoboinyk 	uint8_t		adc_pwdb[4];
717453645fSAndriy Voskoboinyk 	uint8_t		sq_rpt;
727453645fSAndriy Voskoboinyk 	uint8_t		agc_rpt;
737453645fSAndriy Voskoboinyk } __packed;
747453645fSAndriy Voskoboinyk 
757453645fSAndriy Voskoboinyk /* Rx PHY descriptor. */
767453645fSAndriy Voskoboinyk struct r92c_rx_phystat {
777453645fSAndriy Voskoboinyk 	uint8_t		trsw_gain[4];
787453645fSAndriy Voskoboinyk 	uint8_t		pwdb_all;
797453645fSAndriy Voskoboinyk 	uint8_t		cfosho[4];
807453645fSAndriy Voskoboinyk 	uint8_t		cfotail[4];
817453645fSAndriy Voskoboinyk 	uint8_t		rxevm[2];
827453645fSAndriy Voskoboinyk 	uint8_t		rxsnr[4];
837453645fSAndriy Voskoboinyk 	uint8_t		pdsnr[2];
847453645fSAndriy Voskoboinyk 	uint8_t		csi_current[2];
857453645fSAndriy Voskoboinyk 	uint8_t		csi_target[2];
867453645fSAndriy Voskoboinyk 	uint8_t		sigevm;
877453645fSAndriy Voskoboinyk 	uint8_t		max_ex_pwr;
887453645fSAndriy Voskoboinyk 	uint8_t		phy_byte28;
897453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_ANTSEL		0x01
907453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_ANTSEL_B	0x02
917453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_ANT_TRAIN_EN	0x04
927453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_IDLE_LONG	0x08
937453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_RXSC_M		0x30
947453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_RXSC_S		4
957453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_SGI_EN		0x40
967453645fSAndriy Voskoboinyk #define R92C_PHY_BYTE28_EX_INTF_FLG	0x80
977453645fSAndriy Voskoboinyk } __packed;
987453645fSAndriy Voskoboinyk 
997453645fSAndriy Voskoboinyk #endif	/* R92C_RX_DESC_H */
100