brintos

brintos / linux-shallow public Read only

0
0
Text · 6.0 KiB · 17a40c5 Raw
250 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.4 * All rights reserved.5 *6 * Purpose:The header file of descriptor7 *8 * Revision History:9 *10 * Author: Tevin Chen11 *12 * Date: May 21, 199613 *14 */15 16#ifndef __DESC_H__17#define __DESC_H__18 19#include <linux/types.h>20#include <linux/mm.h>21#include "linux/ieee80211.h"22 23#define B_OWNED_BY_CHIP     124#define B_OWNED_BY_HOST     025 26/* Bits in the RSR register */27#define RSR_ADDRBROAD       0x8028#define RSR_ADDRMULTI       0x4029#define RSR_ADDRUNI         0x0030#define RSR_IVLDTYP         0x2031#define RSR_IVLDLEN         0x10        /* invalid len (> 2312 byte) */32#define RSR_BSSIDOK         0x0833#define RSR_CRCOK           0x0434#define RSR_BCNSSIDOK       0x0235#define RSR_ADDROK          0x0136 37/* Bits in the new RSR register */38#define NEWRSR_DECRYPTOK    0x1039#define NEWRSR_CFPIND       0x0840#define NEWRSR_HWUTSF       0x0441#define NEWRSR_BCNHITAID    0x0242#define NEWRSR_BCNHITAID0   0x0143 44/* Bits in the TSR0 register */45#define TSR0_PWRSTS1_2      0xC046#define TSR0_PWRSTS7        0x2047#define TSR0_NCR            0x1F48 49/* Bits in the TSR1 register */50#define TSR1_TERR           0x8051#define TSR1_PWRSTS4_6      0x7052#define TSR1_RETRYTMO       0x0853#define TSR1_TMO            0x0454#define TSR1_PWRSTS3        0x0255#define ACK_DATA            0x0156 57/* Bits in the TCR register */58#define EDMSDU              0x04        /* end of sdu */59#define TCR_EDP             0x02        /* end of packet */60#define TCR_STP             0x01        /* start of packet */61 62/* max transmit or receive buffer size */63#define CB_MAX_BUF_SIZE     2900U64					/* NOTE: must be multiple of 4 */65#define CB_MAX_TX_BUF_SIZE          CB_MAX_BUF_SIZE66#define CB_MAX_RX_BUF_SIZE_NORMAL   CB_MAX_BUF_SIZE67 68#define CB_BEACON_BUF_SIZE  512U69 70#define CB_MAX_RX_DESC      12871#define CB_MIN_RX_DESC      1672#define CB_MAX_TX_DESC      6473#define CB_MIN_TX_DESC      1674 75#define CB_MAX_RECEIVED_PACKETS     1676				/*77				 * limit our receive routine to indicating78				 * this many at a time for 2 reasons:79				 * 1. driver flow control to protocol layer80				 * 2. limit the time used in ISR routine81				 */82 83#define CB_EXTRA_RD_NUM     3284#define CB_RD_NUM           3285#define CB_TD_NUM           3286 87/*88 * max number of physical segments in a single NDIS packet. Above this89 * threshold, the packet is copied into a single physically contiguous buffer90 */91#define CB_MAX_SEGMENT      492 93#define CB_MIN_MAP_REG_NUM  494#define CB_MAX_MAP_REG_NUM  CB_MAX_TX_DESC95 96#define CB_PROTOCOL_RESERVED_SECTION    1697 98/*99 * if retrys excess 15 times , tx will abort, and if tx fifo underflow,100 * tx will fail, we should try to resend it101 */102#define CB_MAX_TX_ABORT_RETRY   3103 104/* WMAC definition FIFO Control */105#define FIFOCTL_AUTO_FB_1   0x1000106#define FIFOCTL_AUTO_FB_0   0x0800107#define FIFOCTL_GRPACK      0x0400108#define FIFOCTL_11GA        0x0300109#define FIFOCTL_11GB        0x0200110#define FIFOCTL_11B         0x0100111#define FIFOCTL_11A         0x0000112#define FIFOCTL_RTS         0x0080113#define FIFOCTL_ISDMA0      0x0040114#define FIFOCTL_GENINT      0x0020115#define FIFOCTL_TMOEN       0x0010116#define FIFOCTL_LRETRY      0x0008117#define FIFOCTL_CRCDIS      0x0004118#define FIFOCTL_NEEDACK     0x0002119#define FIFOCTL_LHEAD       0x0001120 121/* WMAC definition Frag Control */122#define FRAGCTL_AES         0x0300123#define FRAGCTL_TKIP        0x0200124#define FRAGCTL_LEGACY      0x0100125#define FRAGCTL_NONENCRYPT  0x0000126#define FRAGCTL_ENDFRAG     0x0003127#define FRAGCTL_MIDFRAG     0x0002128#define FRAGCTL_STAFRAG     0x0001129#define FRAGCTL_NONFRAG     0x0000130 131#define TYPE_TXDMA0     0132#define TYPE_AC0DMA     1133#define TYPE_ATIMDMA    2134#define TYPE_SYNCDMA    3135#define TYPE_MAXTD      2136 137#define TYPE_BEACONDMA  4138 139#define TYPE_RXDMA0     0140#define TYPE_RXDMA1     1141#define TYPE_MAXRD      2142 143/* TD_INFO flags control bit */144#define TD_FLAGS_NETIF_SKB      0x01    /* check if need release skb */145/* check if called from private skb (hostap) */146#define TD_FLAGS_PRIV_SKB       0x02147#define TD_FLAGS_PS_RETRY       0x04    /* check if PS STA frame re-transmit */148 149/*150 * ref_sk_buff is used for mapping the skb structure between pre-built151 * driver-obj & running kernel. Since different kernel version (2.4x) may152 * change skb structure, i.e. pre-built driver-obj may link to older skb that153 * leads error.154 */155 156struct vnt_rd_info {157	struct sk_buff *skb;158	dma_addr_t  skb_dma;159};160 161struct vnt_rdes0 {162	volatile __le16 res_count;163#ifdef __BIG_ENDIAN164	union {165		volatile u16 f15_reserved;166		struct {167			volatile u8 f8_reserved1;168			volatile u8 owner:1;169			volatile u8 f7_reserved:7;170		} __packed;171	} __packed;172#else173	u16 f15_reserved:15;174	u16 owner:1;175#endif176} __packed;177 178struct vnt_rdes1 {179	__le16 req_count;180	u16 reserved;181} __packed;182 183/* Rx descriptor*/184struct vnt_rx_desc {185	volatile struct vnt_rdes0 rd0;186	volatile struct vnt_rdes1 rd1;187	volatile __le32 buff_addr;188	volatile __le32 next_desc;189	struct vnt_rx_desc *next __aligned(8);190	struct vnt_rd_info *rd_info __aligned(8);191} __packed;192 193struct vnt_tdes0 {194	volatile u8 tsr0;195	volatile u8 tsr1;196#ifdef __BIG_ENDIAN197	union {198		volatile u16 f15_txtime;199		struct {200			volatile u8 f8_reserved;201			volatile u8 owner:1;202			volatile u8 f7_reserved:7;203		} __packed;204	} __packed;205#else206	volatile u16 f15_txtime:15;207	volatile u16 owner:1;208#endif209} __packed;210 211struct vnt_tdes1 {212	volatile __le16 req_count;213	volatile u8 tcr;214	volatile u8 reserved;215} __packed;216 217struct vnt_td_info {218	void *mic_hdr;219	struct sk_buff *skb;220	unsigned char *buf;221	dma_addr_t buf_dma;222	u16 req_count;223	u8 flags;224};225 226/* transmit descriptor */227struct vnt_tx_desc {228	volatile struct vnt_tdes0 td0;229	volatile struct vnt_tdes1 td1;230	volatile __le32 buff_addr;231	volatile __le32 next_desc;232	struct vnt_tx_desc *next __aligned(8);233	struct vnt_td_info *td_info __aligned(8);234} __packed;235 236/* Length, Service, and Signal fields of Phy for Tx */237struct vnt_phy_field {238	u8 signal;239	u8 service;240	__le16 len;241} __packed;242 243union vnt_phy_field_swap {244	struct vnt_phy_field field_read;245	u16 swap[2];246	u32 field_write;247};248 249#endif /* __DESC_H__ */250