1
2 #ifndef _TSTYPE_H_
3 #define _TSTYPE_H_
4 #include "rtl819x_Qos.h"
5
6 #define TS_ADDBA_DELAY 60
7
8 #define TOTAL_TS_NUM 16
9 #define TCLAS_NUM 4
10
11
12 enum tr_select {
13 TX_DIR = 0,
14 RX_DIR = 1,
15 };
16
17 union qos_tclas {
18 struct type_general {
19 u8 priority;
20 u8 classifier_type;
21 u8 mask;
22 } type_general;
23
24 struct type0_eth {
25 u8 priority;
26 u8 classifier_type;
27 u8 mask;
28 u8 src_addr[6];
29 u8 dst_addr[6];
30 u16 type;
31 } type0_eth;
32
33 struct type1_ipv4 {
34 u8 priority;
35 u8 classifier_type;
36 u8 mask;
37 u8 version;
38 u8 src_ip[4];
39 u8 dst_ip[4];
40 u16 src_port;
41 u16 dst_port;
42 u8 dscp;
43 u8 protocol;
44 u8 reserved;
45 } type1_ipv4;
46
47 struct type1_ipv6 {
48 u8 priority;
49 u8 classifier_type;
50 u8 mask;
51 u8 version;
52 u8 src_ip[16];
53 u8 dst_ip[16];
54 u16 src_port;
55 u16 dst_port;
56 u8 flow_label[3];
57 } type1_ipv6;
58
59 struct type2_8021q {
60 u8 priority;
61 u8 classifier_type;
62 u8 mask;
63 u16 tag_type;
64 } type2_8021q;
65 };
66
67 struct ts_common_info {
68 struct list_head list;
69 struct timer_list setup_timer;
70 struct timer_list inact_timer;
71 u8 addr[6];
72 struct tspec_body t_spec;
73 union qos_tclas t_class[TCLAS_NUM];
74 u8 t_clas_proc;
75 u8 t_clas_num;
76 };
77
78 struct tx_ts_record {
79 struct ts_common_info ts_common_info;
80 u16 tx_cur_seq;
81 struct ba_record tx_pending_ba_record;
82 struct ba_record tx_admitted_ba_record;
83 u8 add_ba_req_in_progress;
84 u8 add_ba_req_delayed;
85 u8 using_ba;
86 struct timer_list ts_add_ba_timer;
87 u8 num;
88 };
89
90 struct rx_ts_record {
91 struct ts_common_info ts_common_info;
92 u16 rx_indicate_seq;
93 u16 rx_timeout_indicate_seq;
94 struct list_head rx_pending_pkt_list;
95 struct timer_list rx_pkt_pending_timer;
96 struct ba_record rx_admitted_ba_record;
97 u16 rx_last_seq_num;
98 u8 rx_last_frag_num;
99 u8 num;
100 };
101
102 #endif