]> Pileus Git - ~andy/linux/blob - drivers/staging/bcm/PHSDefines.h
ec29ee7480ebeaad70d2e3ddebdb532e265bc428
[~andy/linux] / drivers / staging / bcm / PHSDefines.h
1 #ifndef BCM_PHS_DEFINES_H
2 #define BCM_PHS_DEFINES_H
3
4 #define PHS_INVALID_TABLE_INDEX 0xffffffff
5 #define PHS_MEM_TAG "_SHP"
6
7 /* PHS Defines */
8 #define STATUS_PHS_COMPRESSED           0xa1
9 #define STATUS_PHS_NOCOMPRESSION        0xa2
10 #define APPLY_PHS                       1
11 #define MAX_NO_BIT                      7
12 #define ZERO_PHSI                       0
13 #define VERIFY                          0
14 #define SIZE_MULTIPLE_32                4
15 #define UNCOMPRESSED_PACKET             0
16 #define DYNAMIC                         0
17 #define SUPPRESS                        0x80
18 #define NO_CLASSIFIER_MATCH             0
19 #define SEND_PACKET_UNCOMPRESSED        0
20 #define PHSI_IS_ZERO                    0
21 #define PHSI_LEN                        1
22 #define ERROR_LEN                       0
23 #define PHS_BUFFER_SIZE                 1532
24 #define MAX_PHSRULE_PER_SF              20
25 #define MAX_SERVICEFLOWS                17
26
27 /* PHS Error Defines */
28 #define PHS_SUCCESS                             0
29 #define ERR_PHS_INVALID_DEVICE_EXETENSION       0x800
30 #define ERR_PHS_INVALID_PHS_RULE                0x801
31 #define ERR_PHS_RULE_ALREADY_EXISTS             0x802
32 #define ERR_SF_MATCH_FAIL                       0x803
33 #define ERR_INVALID_CLASSIFIERTABLE_FOR_SF      0x804
34 #define ERR_SFTABLE_FULL                        0x805
35 #define ERR_CLSASSIFIER_TABLE_FULL              0x806
36 #define ERR_PHSRULE_MEMALLOC_FAIL               0x807
37 #define ERR_CLSID_MATCH_FAIL                    0x808
38 #define ERR_PHSRULE_MATCH_FAIL                  0x809
39
40 typedef struct _S_PHS_RULE {
41         B_UINT8 u8PHSI;
42         B_UINT8 u8PHSFLength;
43         B_UINT8 u8PHSF[MAX_PHS_LENGTHS];
44         B_UINT8 u8PHSMLength;
45         B_UINT8 u8PHSM[MAX_PHS_LENGTHS];
46         B_UINT8 u8PHSS;
47         B_UINT8 u8PHSV;
48         B_UINT8 u8RefCnt;
49         B_UINT8 bUnclassifiedPHSRule;
50         B_UINT8 u8Reserved[3];
51         LONG    PHSModifiedBytes;
52         ULONG   PHSModifiedNumPackets;
53         ULONG   PHSErrorNumPackets;
54 } S_PHS_RULE;
55
56 typedef enum _E_CLASSIFIER_ENTRY_CONTEXT {
57         eActiveClassifierRuleContext,
58         eOldClassifierRuleContext
59 } E_CLASSIFIER_ENTRY_CONTEXT;
60
61 typedef struct _S_CLASSIFIER_ENTRY {
62         B_UINT8  bUsed;
63         B_UINT16 uiClassifierRuleId;
64         B_UINT8  u8PHSI;
65         S_PHS_RULE *pstPhsRule;
66         B_UINT8  bUnclassifiedPHSRule;
67 } S_CLASSIFIER_ENTRY;
68
69 typedef struct _S_CLASSIFIER_TABLE {
70         B_UINT16 uiTotalClassifiers;
71         S_CLASSIFIER_ENTRY stActivePhsRulesList[MAX_PHSRULE_PER_SF];
72         S_CLASSIFIER_ENTRY stOldPhsRulesList[MAX_PHSRULE_PER_SF];
73         B_UINT16 uiOldestPhsRuleIndex;
74 } S_CLASSIFIER_TABLE;
75
76 typedef struct _S_SERVICEFLOW_ENTRY {
77         B_UINT8  bUsed;
78         B_UINT16 uiVcid;
79         S_CLASSIFIER_TABLE  *pstClassifierTable;
80 } S_SERVICEFLOW_ENTRY;
81
82 typedef struct _S_SERVICEFLOW_TABLE {
83         B_UINT16 uiTotalServiceFlows;
84         S_SERVICEFLOW_ENTRY stSFList[MAX_SERVICEFLOWS];
85 } S_SERVICEFLOW_TABLE;
86
87 typedef struct _PHS_DEVICE_EXTENSION {
88         /* PHS Specific data */
89         S_SERVICEFLOW_TABLE *pstServiceFlowPhsRulesTable;
90         void *CompressedTxBuffer;
91         void *UnCompressedRxBuffer;
92 } PHS_DEVICE_EXTENSION, *PPHS_DEVICE_EXTENSION;
93
94 #endif