1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef _LINUX_NICSTAR_H_
14#define _LINUX_NICSTAR_H_
15
16
17
18#include <linux/types.h>
19#include <linux/pci.h>
20#include <linux/idr.h>
21#include <linux/uio.h>
22#include <linux/skbuff.h>
23#include <linux/atmdev.h>
24#include <linux/atm_nicstar.h>
25
26
27
28#define NS_MAX_CARDS 4
29
30
31
32#undef RCQ_SUPPORT
33
34#define NS_TST_NUM_ENTRIES 2340
35#define NS_TST_RESERVED 340
36
37#define NS_SMBUFSIZE 48
38#define NS_LGBUFSIZE 16384
39#define NS_RSQSIZE 8192
40#define NS_VPIBITS 2
41
42#define NS_MAX_RCTSIZE 4096
43
44
45
46
47
48
49
50
51
52
53
54#define NUM_SB 32
55#define NUM_LB 24
56#define NUM_HB 8
57#define NUM_IOVB 48
58
59
60#define MIN_SB 8
61#define MIN_LB 8
62#define MIN_HB 6
63#define MIN_IOVB 8
64
65
66#define MAX_SB 64
67#define MAX_LB 48
68#define MAX_HB 10
69#define MAX_IOVB 80
70
71
72#define TOP_SB 256
73#define TOP_LB 128
74#define TOP_HB 64
75#define TOP_IOVB 256
76
77#define MAX_TBD_PER_VC 1
78#define MAX_TBD_PER_SCQ 10
79
80#undef ENABLE_TSQFIE
81
82#define SCQFULL_TIMEOUT (5 * HZ)
83
84#define NS_POLL_PERIOD (HZ)
85
86#define PCR_TOLERANCE (1.0001)
87
88
89
90#define NICSTAR_EPROM_MAC_ADDR_OFFSET 0x6C
91#define NICSTAR_EPROM_MAC_ADDR_OFFSET_ALT 0xF6
92
93
94
95#define NS_IOREMAP_SIZE 4096
96
97
98
99
100
101
102#define BUF_SM 0x00000000
103#define BUF_LG 0x00000001
104#define BUF_NONE 0xffffffff
105
106#define NS_HBUFSIZE 65568
107#define NS_MAX_IOVECS (2 + (65568 - NS_SMBUFSIZE) / \
108 (NS_LGBUFSIZE - (NS_LGBUFSIZE % 48)))
109#define NS_IOVBUFSIZE (NS_MAX_IOVECS * (sizeof(struct iovec)))
110
111#define NS_SMBUFSIZE_USABLE (NS_SMBUFSIZE - NS_SMBUFSIZE % 48)
112#define NS_LGBUFSIZE_USABLE (NS_LGBUFSIZE - NS_LGBUFSIZE % 48)
113
114#define NS_AAL0_HEADER (ATM_AAL0_SDU - ATM_CELL_PAYLOAD)
115
116#define NS_SMSKBSIZE (NS_SMBUFSIZE + NS_AAL0_HEADER)
117#define NS_LGSKBSIZE (NS_SMBUFSIZE + NS_LGBUFSIZE)
118
119
120
121
122
123
124
125
126
127typedef struct ns_rsqe {
128 u32 word_1;
129 u32 buffer_handle;
130 u32 final_aal5_crc32;
131 u32 word_4;
132} ns_rsqe;
133
134#define ns_rsqe_vpi(ns_rsqep) \
135 ((le32_to_cpu((ns_rsqep)->word_1) & 0x00FF0000) >> 16)
136#define ns_rsqe_vci(ns_rsqep) \
137 (le32_to_cpu((ns_rsqep)->word_1) & 0x0000FFFF)
138
139#define NS_RSQE_VALID 0x80000000
140#define NS_RSQE_NZGFC 0x00004000
141#define NS_RSQE_EOPDU 0x00002000
142#define NS_RSQE_BUFSIZE 0x00001000
143#define NS_RSQE_CONGESTION 0x00000800
144#define NS_RSQE_CLP 0x00000400
145#define NS_RSQE_CRCERR 0x00000200
146
147#define NS_RSQE_BUFSIZE_SM 0x00000000
148#define NS_RSQE_BUFSIZE_LG 0x00001000
149
150#define ns_rsqe_valid(ns_rsqep) \
151 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_VALID)
152#define ns_rsqe_nzgfc(ns_rsqep) \
153 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_NZGFC)
154#define ns_rsqe_eopdu(ns_rsqep) \
155 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_EOPDU)
156#define ns_rsqe_bufsize(ns_rsqep) \
157 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_BUFSIZE)
158#define ns_rsqe_congestion(ns_rsqep) \
159 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CONGESTION)
160#define ns_rsqe_clp(ns_rsqep) \
161 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CLP)
162#define ns_rsqe_crcerr(ns_rsqep) \
163 (le32_to_cpu((ns_rsqep)->word_4) & NS_RSQE_CRCERR)
164
165#define ns_rsqe_cellcount(ns_rsqep) \
166 (le32_to_cpu((ns_rsqep)->word_4) & 0x000001FF)
167#define ns_rsqe_init(ns_rsqep) \
168 ((ns_rsqep)->word_4 = cpu_to_le32(0x00000000))
169
170#define NS_RSQ_NUM_ENTRIES (NS_RSQSIZE / 16)
171#define NS_RSQ_ALIGNMENT NS_RSQSIZE
172
173
174
175
176
177
178
179typedef struct cell_payload {
180 u32 word[12];
181} cell_payload;
182
183typedef struct ns_rcqe {
184 u32 word_1;
185 u32 word_2;
186 u32 word_3;
187 u32 word_4;
188 cell_payload payload;
189} ns_rcqe;
190
191#define NS_RCQE_SIZE 64
192
193#define ns_rcqe_islast(ns_rcqep) \
194 (le32_to_cpu((ns_rcqep)->word_2) != 0x00000000)
195#define ns_rcqe_cellheader(ns_rcqep) \
196 (le32_to_cpu((ns_rcqep)->word_1))
197#define ns_rcqe_nextbufhandle(ns_rcqep) \
198 (le32_to_cpu((ns_rcqep)->word_2))
199
200
201
202
203
204
205
206typedef struct ns_scqe {
207 u32 word_1;
208 u32 word_2;
209 u32 word_3;
210 u32 word_4;
211} ns_scqe;
212
213
214
215
216#define NS_SCQE_TYPE_TBD 0x00000000
217#define NS_SCQE_TYPE_TSR 0x80000000
218
219#define NS_TBD_EOPDU 0x40000000
220#define NS_TBD_AAL0 0x00000000
221#define NS_TBD_AAL34 0x04000000
222#define NS_TBD_AAL5 0x08000000
223
224#define NS_TBD_VPI_MASK 0x0FF00000
225#define NS_TBD_VCI_MASK 0x000FFFF0
226#define NS_TBD_VC_MASK (NS_TBD_VPI_MASK | NS_TBD_VCI_MASK)
227
228#define NS_TBD_VPI_SHIFT 20
229#define NS_TBD_VCI_SHIFT 4
230
231#define ns_tbd_mkword_1(flags, m, n, buflen) \
232 (cpu_to_le32((flags) | (m) << 23 | (n) << 16 | (buflen)))
233#define ns_tbd_mkword_1_novbr(flags, buflen) \
234 (cpu_to_le32((flags) | (buflen) | 0x00810000))
235#define ns_tbd_mkword_3(control, pdulen) \
236 (cpu_to_le32((control) << 16 | (pdulen)))
237#define ns_tbd_mkword_4(gfc, vpi, vci, pt, clp) \
238 (cpu_to_le32((gfc) << 28 | (vpi) << 20 | (vci) << 4 | (pt) << 1 | (clp)))
239
240#define NS_TSR_INTENABLE 0x20000000
241
242#define NS_TSR_SCDISVBR 0xFFFF
243
244#define ns_tsr_mkword_1(flags) \
245 (cpu_to_le32(NS_SCQE_TYPE_TSR | (flags)))
246#define ns_tsr_mkword_2(scdi, scqi) \
247 (cpu_to_le32((scdi) << 16 | 0x00008000 | (scqi)))
248
249#define ns_scqe_is_tsr(ns_scqep) \
250 (le32_to_cpu((ns_scqep)->word_1) & NS_SCQE_TYPE_TSR)
251
252#define VBR_SCQ_NUM_ENTRIES 512
253#define VBR_SCQSIZE 8192
254#define CBR_SCQ_NUM_ENTRIES 64
255#define CBR_SCQSIZE 1024
256
257#define NS_SCQE_SIZE 16
258
259
260
261
262
263
264
265typedef struct ns_tsi {
266 u32 word_1;
267 u32 word_2;
268} ns_tsi;
269
270
271
272
273
274#define NS_TSI_EMPTY 0x80000000
275#define NS_TSI_TIMESTAMP_MASK 0x00FFFFFF
276
277#define ns_tsi_isempty(ns_tsip) \
278 (le32_to_cpu((ns_tsip)->word_2) & NS_TSI_EMPTY)
279#define ns_tsi_gettimestamp(ns_tsip) \
280 (le32_to_cpu((ns_tsip)->word_2) & NS_TSI_TIMESTAMP_MASK)
281
282#define ns_tsi_init(ns_tsip) \
283 ((ns_tsip)->word_2 = cpu_to_le32(NS_TSI_EMPTY))
284
285#define NS_TSQSIZE 8192
286#define NS_TSQ_NUM_ENTRIES 1024
287#define NS_TSQ_ALIGNMENT 8192
288
289#define NS_TSI_SCDISVBR NS_TSR_SCDISVBR
290
291#define ns_tsi_tmrof(ns_tsip) \
292 (le32_to_cpu((ns_tsip)->word_1) == 0x00000000)
293#define ns_tsi_getscdindex(ns_tsip) \
294 ((le32_to_cpu((ns_tsip)->word_1) & 0xFFFF0000) >> 16)
295#define ns_tsi_getscqpos(ns_tsip) \
296 (le32_to_cpu((ns_tsip)->word_1) & 0x00007FFF)
297
298
299
300
301
302
303
304
305
306typedef struct ns_rcte {
307 u32 word_1;
308 u32 buffer_handle;
309 u32 dma_address;
310 u32 aal5_crc32;
311} ns_rcte;
312
313#define NS_RCTE_BSFB 0x00200000
314#define NS_RCTE_NZGFC 0x00100000
315#define NS_RCTE_CONNECTOPEN 0x00080000
316#define NS_RCTE_AALMASK 0x00070000
317#define NS_RCTE_AAL0 0x00000000
318#define NS_RCTE_AAL34 0x00010000
319#define NS_RCTE_AAL5 0x00020000
320#define NS_RCTE_RCQ 0x00030000
321#define NS_RCTE_RAWCELLINTEN 0x00008000
322#define NS_RCTE_RXCONSTCELLADDR 0x00004000
323#define NS_RCTE_BUFFVALID 0x00002000
324#define NS_RCTE_FBDSIZE 0x00001000
325#define NS_RCTE_EFCI 0x00000800
326#define NS_RCTE_CLP 0x00000400
327#define NS_RCTE_CRCERROR 0x00000200
328#define NS_RCTE_CELLCOUNT_MASK 0x000001FF
329
330#define NS_RCTE_FBDSIZE_SM 0x00000000
331#define NS_RCTE_FBDSIZE_LG 0x00001000
332
333#define NS_RCT_ENTRY_SIZE 4
334
335
336
337
338
339
340
341
342
343
344typedef struct ns_fbd {
345 u32 buffer_handle;
346 u32 dma_address;
347} ns_fbd;
348
349
350
351
352
353
354
355typedef u32 ns_tste;
356
357#define NS_TST_OPCODE_MASK 0x60000000
358
359#define NS_TST_OPCODE_NULL 0x00000000
360#define NS_TST_OPCODE_FIXED 0x20000000
361#define NS_TST_OPCODE_VARIABLE 0x40000000
362#define NS_TST_OPCODE_END 0x60000000
363
364#define ns_tste_make(opcode, sramad) (opcode | sramad)
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380typedef struct ns_scd {
381 u32 word_1;
382 u32 word_2;
383 u32 partial_aal5_crc;
384 u32 reserved;
385 ns_scqe cache_a;
386 ns_scqe cache_b;
387} ns_scd;
388
389#define NS_SCD_BASE_MASK_VAR 0xFFFFE000
390#define NS_SCD_BASE_MASK_FIX 0xFFFFFC00
391#define NS_SCD_TAIL_MASK_VAR 0x00001FF0
392#define NS_SCD_TAIL_MASK_FIX 0x000003F0
393#define NS_SCD_HEAD_MASK_VAR 0x00001FF0
394#define NS_SCD_HEAD_MASK_FIX 0x000003F0
395#define NS_SCD_XMITFOREVER 0x02000000
396
397
398
399
400
401
402#define NS_RCT 0x00000
403#define NS_RCT_32_END 0x03FFF
404#define NS_RCT_128_END 0x0FFFF
405#define NS_UNUSED_32 0x04000
406#define NS_UNUSED_128 0x10000
407#define NS_UNUSED_END 0x1BFFF
408#define NS_TST_FRSCD 0x1C000
409#define NS_TST_FRSCD_END 0x1E7DB
410#define NS_VRSCD2 0x1E7DC
411#define NS_VRSCD2_END 0x1E7E7
412#define NS_VRSCD1 0x1E7E8
413#define NS_VRSCD1_END 0x1E7F3
414#define NS_VRSCD0 0x1E7F4
415#define NS_VRSCD0_END 0x1E7FF
416#define NS_RXFIFO 0x1E800
417#define NS_RXFIFO_END 0x1F7FF
418#define NS_SMFBQ 0x1F800
419#define NS_SMFBQ_END 0x1FBFF
420#define NS_LGFBQ 0x1FC00
421#define NS_LGFBQ_END 0x1FFFF
422
423
424
425
426
427enum ns_regs {
428 DR0 = 0x00,
429 DR1 = 0x04,
430 DR2 = 0x08,
431 DR3 = 0x0C,
432 CMD = 0x10,
433 CFG = 0x14,
434 STAT = 0x18,
435 RSQB = 0x1C,
436 RSQT = 0x20,
437 RSQH = 0x24,
438 CDC = 0x28,
439 VPEC = 0x2C,
440 ICC = 0x30,
441 RAWCT = 0x34,
442 TMR = 0x38,
443 TSTB = 0x3C,
444 TSQB = 0x40,
445 TSQT = 0x44,
446 TSQH = 0x48,
447 GP = 0x4C,
448 VPM = 0x50
449};
450
451
452
453
454
455#define NS_CMD_NO_OPERATION 0x00000000
456
457
458#define NS_CMD_OPENCLOSE_CONNECTION 0x20000000
459
460
461#define NS_CMD_WRITE_SRAM 0x40000000
462
463
464#define NS_CMD_READ_SRAM 0x50000000
465
466
467#define NS_CMD_WRITE_FREEBUFQ 0x60000000
468
469
470#define NS_CMD_READ_UTILITY 0x80000000
471
472
473#define NS_CMD_WRITE_UTILITY 0x90000000
474
475
476#define NS_CMD_OPEN_CONNECTION (NS_CMD_OPENCLOSE_CONNECTION | 0x00080000)
477#define NS_CMD_CLOSE_CONNECTION NS_CMD_OPENCLOSE_CONNECTION
478
479
480
481#define NS_CFG_SWRST 0x80000000
482#define NS_CFG_RXPATH 0x20000000
483#define NS_CFG_SMBUFSIZE_MASK 0x18000000
484#define NS_CFG_LGBUFSIZE_MASK 0x06000000
485#define NS_CFG_EFBIE 0x01000000
486
487#define NS_CFG_RSQSIZE_MASK 0x00C00000
488#define NS_CFG_ICACCEPT 0x00200000
489#define NS_CFG_IGNOREGFC 0x00100000
490#define NS_CFG_VPIBITS_MASK 0x000C0000
491#define NS_CFG_RCTSIZE_MASK 0x00030000
492#define NS_CFG_VCERRACCEPT 0x00008000
493#define NS_CFG_RXINT_MASK 0x00007000
494
495#define NS_CFG_RAWIE 0x00000800
496#define NS_CFG_RSQAFIE 0x00000400
497
498#define NS_CFG_RXRM 0x00000200
499#define NS_CFG_TMRROIE 0x00000080
500
501#define NS_CFG_TXEN 0x00000020
502#define NS_CFG_TXIE 0x00000010
503
504#define NS_CFG_TXURIE 0x00000008
505
506#define NS_CFG_UMODE 0x00000004
507#define NS_CFG_TSQFIE 0x00000002
508
509#define NS_CFG_PHYIE 0x00000001
510
511#define NS_CFG_SMBUFSIZE_48 0x00000000
512#define NS_CFG_SMBUFSIZE_96 0x08000000
513#define NS_CFG_SMBUFSIZE_240 0x10000000
514#define NS_CFG_SMBUFSIZE_2048 0x18000000
515
516#define NS_CFG_LGBUFSIZE_2048 0x00000000
517#define NS_CFG_LGBUFSIZE_4096 0x02000000
518#define NS_CFG_LGBUFSIZE_8192 0x04000000
519#define NS_CFG_LGBUFSIZE_16384 0x06000000
520
521#define NS_CFG_RSQSIZE_2048 0x00000000
522#define NS_CFG_RSQSIZE_4096 0x00400000
523#define NS_CFG_RSQSIZE_8192 0x00800000
524
525#define NS_CFG_VPIBITS_0 0x00000000
526#define NS_CFG_VPIBITS_1 0x00040000
527#define NS_CFG_VPIBITS_2 0x00080000
528#define NS_CFG_VPIBITS_8 0x000C0000
529
530#define NS_CFG_RCTSIZE_4096_ENTRIES 0x00000000
531#define NS_CFG_RCTSIZE_8192_ENTRIES 0x00010000
532#define NS_CFG_RCTSIZE_16384_ENTRIES 0x00020000
533
534#define NS_CFG_RXINT_NOINT 0x00000000
535#define NS_CFG_RXINT_NODELAY 0x00001000
536#define NS_CFG_RXINT_314US 0x00002000
537#define NS_CFG_RXINT_624US 0x00003000
538#define NS_CFG_RXINT_899US 0x00004000
539
540
541
542#define NS_STAT_SFBQC_MASK 0xFF000000
543#define NS_STAT_LFBQC_MASK 0x00FF0000
544#define NS_STAT_TSIF 0x00008000
545#define NS_STAT_TXICP 0x00004000
546#define NS_STAT_TSQF 0x00001000
547#define NS_STAT_TMROF 0x00000800
548#define NS_STAT_PHYI 0x00000400
549#define NS_STAT_CMDBZ 0x00000200
550#define NS_STAT_SFBQF 0x00000100
551#define NS_STAT_LFBQF 0x00000080
552#define NS_STAT_RSQF 0x00000040
553#define NS_STAT_EOPDU 0x00000020
554#define NS_STAT_RAWCF 0x00000010
555#define NS_STAT_SFBQE 0x00000008
556#define NS_STAT_LFBQE 0x00000004
557#define NS_STAT_RSQAF 0x00000002
558
559#define ns_stat_sfbqc_get(stat) (((stat) & NS_STAT_SFBQC_MASK) >> 23)
560#define ns_stat_lfbqc_get(stat) (((stat) & NS_STAT_LFBQC_MASK) >> 15)
561
562
563
564#define NS_TST0 NS_TST_FRSCD
565#define NS_TST1 (NS_TST_FRSCD + NS_TST_NUM_ENTRIES + 1)
566
567#define NS_FRSCD (NS_TST1 + NS_TST_NUM_ENTRIES + 1)
568#define NS_FRSCD_SIZE 12
569#define NS_FRSCD_NUM ((NS_TST_FRSCD_END + 1 - NS_FRSCD) / NS_FRSCD_SIZE)
570
571#if (NS_SMBUFSIZE == 48)
572#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_48
573#elif (NS_SMBUFSIZE == 96)
574#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_96
575#elif (NS_SMBUFSIZE == 240)
576#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_240
577#elif (NS_SMBUFSIZE == 2048)
578#define NS_CFG_SMBUFSIZE NS_CFG_SMBUFSIZE_2048
579#else
580#error NS_SMBUFSIZE is incorrect in nicstar.h
581#endif
582
583#if (NS_LGBUFSIZE == 2048)
584#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_2048
585#elif (NS_LGBUFSIZE == 4096)
586#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_4096
587#elif (NS_LGBUFSIZE == 8192)
588#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_8192
589#elif (NS_LGBUFSIZE == 16384)
590#define NS_CFG_LGBUFSIZE NS_CFG_LGBUFSIZE_16384
591#else
592#error NS_LGBUFSIZE is incorrect in nicstar.h
593#endif
594
595#if (NS_RSQSIZE == 2048)
596#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_2048
597#elif (NS_RSQSIZE == 4096)
598#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_4096
599#elif (NS_RSQSIZE == 8192)
600#define NS_CFG_RSQSIZE NS_CFG_RSQSIZE_8192
601#else
602#error NS_RSQSIZE is incorrect in nicstar.h
603#endif
604
605#if (NS_VPIBITS == 0)
606#define NS_CFG_VPIBITS NS_CFG_VPIBITS_0
607#elif (NS_VPIBITS == 1)
608#define NS_CFG_VPIBITS NS_CFG_VPIBITS_1
609#elif (NS_VPIBITS == 2)
610#define NS_CFG_VPIBITS NS_CFG_VPIBITS_2
611#elif (NS_VPIBITS == 8)
612#define NS_CFG_VPIBITS NS_CFG_VPIBITS_8
613#else
614#error NS_VPIBITS is incorrect in nicstar.h
615#endif
616
617#ifdef RCQ_SUPPORT
618#define NS_CFG_RAWIE_OPT NS_CFG_RAWIE
619#else
620#define NS_CFG_RAWIE_OPT 0x00000000
621#endif
622
623#ifdef ENABLE_TSQFIE
624#define NS_CFG_TSQFIE_OPT NS_CFG_TSQFIE
625#else
626#define NS_CFG_TSQFIE_OPT 0x00000000
627#endif
628
629
630
631#ifndef PCI_VENDOR_ID_IDT
632#define PCI_VENDOR_ID_IDT 0x111D
633#endif
634
635#ifndef PCI_DEVICE_ID_IDT_IDT77201
636#define PCI_DEVICE_ID_IDT_IDT77201 0x0001
637#endif
638
639
640
641struct ns_skb_prv {
642 u32 buf_type;
643 u32 dma;
644 int iovcnt;
645};
646
647#define NS_PRV_BUFTYPE(skb) \
648 (((struct ns_skb_prv *)(ATM_SKB(skb)+1))->buf_type)
649#define NS_PRV_DMA(skb) \
650 (((struct ns_skb_prv *)(ATM_SKB(skb)+1))->dma)
651#define NS_PRV_IOVCNT(skb) \
652 (((struct ns_skb_prv *)(ATM_SKB(skb)+1))->iovcnt)
653
654typedef struct tsq_info {
655 void *org;
656 dma_addr_t dma;
657 ns_tsi *base;
658 ns_tsi *next;
659 ns_tsi *last;
660} tsq_info;
661
662typedef struct scq_info {
663 void *org;
664 dma_addr_t dma;
665 ns_scqe *base;
666 ns_scqe *last;
667 ns_scqe *next;
668 volatile ns_scqe *tail;
669 unsigned num_entries;
670 struct sk_buff **skb;
671
672 u32 scd;
673
674 int tbd_count;
675 wait_queue_head_t scqfull_waitq;
676 volatile char full;
677 spinlock_t lock;
678} scq_info;
679
680typedef struct rsq_info {
681 void *org;
682 dma_addr_t dma;
683 ns_rsqe *base;
684 ns_rsqe *next;
685 ns_rsqe *last;
686} rsq_info;
687
688typedef struct skb_pool {
689 volatile int count;
690 struct sk_buff_head queue;
691} skb_pool;
692
693
694
695
696
697typedef struct vc_map {
698 volatile unsigned int tx:1;
699 volatile unsigned int rx:1;
700 struct atm_vcc *tx_vcc, *rx_vcc;
701 struct sk_buff *rx_iov;
702 scq_info *scq;
703 u32 cbr_scd;
704
705 int tbd_count;
706} vc_map;
707
708typedef struct ns_dev {
709 int index;
710 int sram_size;
711 void __iomem *membase;
712 unsigned long max_pcr;
713 int rct_size;
714 int vpibits;
715 int vcibits;
716 struct pci_dev *pcidev;
717 struct idr idr;
718 struct atm_dev *atmdev;
719 tsq_info tsq;
720 rsq_info rsq;
721 scq_info *scq0, *scq1, *scq2;
722 skb_pool sbpool;
723 skb_pool lbpool;
724 skb_pool hbpool;
725 skb_pool iovpool;
726 volatile int efbie;
727 volatile u32 tst_addr;
728 volatile int tst_free_entries;
729 vc_map vcmap[NS_MAX_RCTSIZE];
730 vc_map *tste2vc[NS_TST_NUM_ENTRIES];
731 vc_map *scd2vc[NS_FRSCD_NUM];
732 buf_nr sbnr;
733 buf_nr lbnr;
734 buf_nr hbnr;
735 buf_nr iovnr;
736 int sbfqc;
737 int lbfqc;
738 struct sk_buff *sm_handle;
739 u32 sm_addr;
740 struct sk_buff *lg_handle;
741 u32 lg_addr;
742 struct sk_buff *rcbuf;
743 struct ns_rcqe *rawcell;
744 u32 rawch;
745 unsigned intcnt;
746 spinlock_t int_lock;
747 spinlock_t res_lock;
748} ns_dev;
749
750
751
752
753
754
755
756
757
758
759#endif
760