cd78ee4ffa220bd9c54adb80e8fef38e8d434a61
[linux-2.6-microblaze.git] / 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 struct bcm_phs_rule {
41         u8 u8PHSI;
42         u8 u8PHSFLength;
43         u8 u8PHSF[MAX_PHS_LENGTHS];
44         u8 u8PHSMLength;
45         u8 u8PHSM[MAX_PHS_LENGTHS];
46         u8 u8PHSS;
47         u8 u8PHSV;
48         u8 u8RefCnt;
49         u8 bUnclassifiedPHSRule;
50         u8 u8Reserved[3];
51         long PHSModifiedBytes;
52         unsigned long PHSModifiedNumPackets;
53         unsigned long PHSErrorNumPackets;
54 };
55
56 enum bcm_phs_classifier_context {
57         eActiveClassifierRuleContext,
58         eOldClassifierRuleContext
59 };
60
61 struct bcm_phs_classifier_entry {
62         u8  bUsed;
63         u16 uiClassifierRuleId;
64         u8  u8PHSI;
65         struct bcm_phs_rule *pstPhsRule;
66         u8  bUnclassifiedPHSRule;
67 };
68
69 struct bcm_phs_classifier_table {
70         u16 uiTotalClassifiers;
71         struct bcm_phs_classifier_entry stActivePhsRulesList[MAX_PHSRULE_PER_SF];
72         struct bcm_phs_classifier_entry stOldPhsRulesList[MAX_PHSRULE_PER_SF];
73         u16 uiOldestPhsRuleIndex;
74 };
75
76 struct bcm_phs_entry {
77         u8  bUsed;
78         u16 uiVcid;
79         struct bcm_phs_classifier_table *pstClassifierTable;
80 };
81
82 struct bcm_phs_table {
83         u16 uiTotalServiceFlows;
84         struct bcm_phs_entry stSFList[MAX_SERVICEFLOWS];
85 };
86
87 struct bcm_phs_extension {
88         /* PHS Specific data */
89         struct bcm_phs_table *pstServiceFlowPhsRulesTable;
90         void *CompressedTxBuffer;
91         void *UnCompressedRxBuffer;
92 };
93
94 #endif