hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
 * HND Run Time Environment ioctl.
 *
 * Copyright (C) 2020, Broadcom.
 *
 *      Unless you and Broadcom execute a separate written software license
 * agreement governing use of this software, this software is licensed to you
 * under the terms of the GNU General Public License version 2 (the "GPL"),
 * available at http://www.broadcom.com/licenses/GPLv2.php, with the
 * following added to such license:
 *
 *      As a special exception, the copyright holders of this software give you
 * permission to link this software with independent modules, and to copy and
 * distribute the resulting executable under terms of your choice, provided that
 * you also meet, for each linked independent module, the terms and conditions of
 * the license of that module.  An independent module is a module which is not
 * derived from this software.  The special exception does not apply to any
 * modifications of the software.
 *
 *
 * <<Broadcom-WL-IPTag/Dual:>>
 */
 
#ifndef _dngl_ioctl_h_
#define _dngl_ioctl_h_
 
/* ==== Dongle IOCTLs i.e. non-d11 IOCTLs ==== */
 
#ifndef _rte_ioctl_h_
/* ================================================================ */
/* These are the existing ioctls moved from src/include/rte_ioctl.h */
/* ================================================================ */
 
/* RTE IOCTL definitions for generic ether devices */
#define RTEIOCTLSTART        0x8901
#define RTEGHWADDR        0x8901
#define RTESHWADDR        0x8902
#define RTEGMTU            0x8903
#define RTEGSTATS        0x8904
#define RTEGALLMULTI        0x8905
#define RTESALLMULTI        0x8906
#define RTEGPROMISC        0x8907
#define RTESPROMISC        0x8908
#define RTESMULTILIST    0x8909
#define RTEGUP            0x890A
#define RTEGPERMADDR        0x890B
#define RTEDEVPWRSTCHG        0x890C    /* Device pwr state change for PCIedev */
#define RTEDEVPMETOGGLE        0x890D    /* Toggle PME# to wake up the host */
#define RTEDEVTIMESYNC        0x890E    /* Device TimeSync */
#define RTEDEVDSNOTIFY        0x890F    /* Bus DS state notification */
#define RTED11DMALPBK_INIT    0x8910    /* D11 DMA loopback init */
#define RTED11DMALPBK_UNINIT    0x8911    /* D11 DMA loopback uninit */
#define RTED11DMALPBK_RUN    0x8912    /* D11 DMA loopback run */
#define RTEDEVTSBUFPOST        0x8913    /* Async interface for tsync buffer post */
#define RTED11DMAHOSTLPBK_RUN    0x8914  /* D11 DMA host memory loopback run */
#define RTEDEVGETTSF        0x8915  /* Get device TSF */
#define RTEDURATIONUNIT        0x8916  /* Duration unit */
#define RTEWRITE_WAR_REGS    0x8917  /* write workaround regs */
#define RTEDEVRMPMK        0x8918  /* Remove PMK */
#define RTEDEVDBGVAL        0x8919  /* Set debug val */
/* Ensure last RTE IOCTL define val is assigned to RTEIOCTLEND */
#define RTEIOCTLEND        0x8919  /* LAST RTE IOCTL value */
 
#define RTE_IOCTL_QUERY        0x00
#define RTE_IOCTL_SET        0x01
#define RTE_IOCTL_OVL_IDX_MASK    0x1e
#define RTE_IOCTL_OVL_RSV    0x20
#define RTE_IOCTL_OVL        0x40
#define RTE_IOCTL_OVL_IDX_SHIFT    1
 
enum hnd_ioctl_cmd {
   HND_RTE_DNGL_IS_SS = 1, /* true if device connected at super speed */
 
   /* PCIEDEV specific wl <--> bus ioctls */
   BUS_GET_VAR = 2,
   BUS_SET_VAR = 3,
   BUS_FLUSH_RXREORDER_Q = 4,
   BUS_SET_LTR_STATE = 5,
   BUS_FLUSH_CHAINED_PKTS = 6,
   BUS_SET_COPY_COUNT = 7,
   BUS_UPDATE_FLOW_PKTS_MAX = 8,
   BUS_UPDATE_EXTRA_TXLFRAGS = 9,
   BUS_UPDATE_FRWD_RESRV_BUFCNT = 10,
   BUS_PCIE_CONFIG_ACCESS = 11,
   BUS_HC_EVENT_MASK_UPDATE = 12,
   BUS_SET_MAC_WAKE_STATE = 13,
   BUS_FRWD_PKT_RXCMPLT = 14,
   BUS_PCIE_LATENCY_ENAB = 15, /* to enable latency feature in pcie */
   BUS_GET_MAXITEMS = 16,
   BUS_SET_BUS_CSO_CAP = 17,    /* Update the CSO cap from wl layer to bus layer */
   BUS_DUMP_RX_DMA_STALL_RELATED_INFO = 18,
   BUS_UPDATE_RESVPOOL_STATE = 19    /* Update resvpool state */
};
 
#define SDPCMDEV_SET_MAXTXPKTGLOM    1
#define RTE_MEMUSEINFO_VER 0x00
 
typedef struct memuse_info {
   uint16 ver;            /* version of this struct */
   uint16 len;            /* length in bytes of this structure */
   uint32 tot;            /* Total memory */
   uint32 text_len;    /* Size of Text segment memory */
   uint32 data_len;    /* Size of Data segment memory */
   uint32 bss_len;        /* Size of BSS segment memory */
 
   uint32 arena_size;    /* Total Heap size */
   uint32 arena_free;    /* Heap memory available or free */
   uint32 inuse_size;    /* Heap memory currently in use */
   uint32 inuse_hwm;    /* High watermark of memory - reclaimed memory */
   uint32 inuse_overhead;    /* tally of allocated mem_t blocks */
   uint32 inuse_total;    /* Heap in-use + Heap overhead memory  */
   uint32 free_lwm;        /* Least free size since reclaim */
   uint32 mf_count;        /* Malloc failure count */
} memuse_info_t;
 
/* Different DMA loopback modes */
#define M2M_DMA_LOOPBACK    0    /* PCIE M2M mode */
#define D11_DMA_LOOPBACK    1    /* PCIE M2M and D11 mode without ucode */
#define BMC_DMA_LOOPBACK    2    /* PCIE M2M and D11 mode with ucode */
#define M2M_NON_DMA_LOOPBACK    3    /* Non DMA(indirect) mode */
#define D11_DMA_HOST_MEM_LPBK    4    /* D11 mode */
#define M2M_DMA_WRITE_TO_RAM    6    /* PCIE M2M write to specific memory mode */
#define M2M_DMA_READ_FROM_RAM    7    /* PCIE M2M read from specific memory mode */
#define D11_DMA_WRITE_TO_RAM    8    /* D11 write to specific memory mode */
#define D11_DMA_READ_FROM_RAM    9    /* D11 read from specific memory mode */
 
/* For D11 DMA loopback test */
typedef struct d11_dmalpbk_init_args {
   uint8 core_num;
   uint8 lpbk_mode;
} d11_dmalpbk_init_args_t;
 
typedef struct d11_dmalpbk_args {
   uint8 *buf;
   int32 len;
   void *p;
   uint8 core_num;
   uint8 pad[3];
} d11_dmalpbk_args_t;
 
typedef enum wl_config_var {
   WL_VAR_TX_PKTFETCH_INDUCE = 1,
   WL_VAR_LAST
} wl_config_var_t;
 
typedef struct wl_config_buf {
   wl_config_var_t var;
   uint32 val;
} wl_config_buf_t;
 
/* ================================================================ */
/* These are the existing ioctls moved from src/include/rte_ioctl.h */
/* ================================================================ */
#endif /* _rte_ioctl_h_ */
 
/* MPU test iovar version */
#define MPU_TEST_STRUCT_VER    0
 
/* MPU test OP */
#define MPU_TEST_OP_READ    0
#define MPU_TEST_OP_WRITE    1
#define MPU_TEST_OP_EXECUTE    2
 
/* Debug iovar for MPU testing */
typedef struct mpu_test_args {
   /* version control */
   uint16 ver;
   uint16 len;    /* the length of this structure */
   /* data */
   uint32 addr;
   uint8 op;    /* see MPU_TEST_OP_XXXX */
   uint8 rsvd;
   uint16 size;    /* valid for read/write */
   uint8 val[];
} mpu_test_args_t;
 
#endif /* _dngl_ioctl_h_ */