linux/drivers/staging/rtl8192u/ieee80211/rtl819x_TS.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   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/*  This define the Tx/Rx directions */
  12enum tr_select {
  13        TX_DIR = 0,
  14        RX_DIR = 1,
  15};
  16
  17union 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
  67struct 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
  78struct 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
  90struct 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
 103