2007-05-25 23:40:42 +00:00
/* mac_hd_type2_decoder.c
* WiMax MAC Type II Signaling Header decoder
*
* Copyright ( c ) 2007 by Intel Corporation .
*
* Author : Lu Pan < lu . pan @ intel . com >
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1999 Gerald Combs
*
2018-02-09 08:52:20 +00:00
* SPDX - License - Identifier : GPL - 2.0 - or - later
2007-05-25 23:40:42 +00:00
*/
/* TODO: Add FT_UINT24 and FT_INT24 cases to gtk_widget_get_toplevel()
* to prevent having to make all the changes from BASE_DEC to BASE_HEX
* made to this file today : 10 / 20 / 06.
*/
/*
# define DEBUG
*/
/* Include files */
# include "config.h"
# include <epan/packet.h>
2017-09-29 22:31:48 +00:00
# include "wimax-int.h"
2007-05-25 23:40:42 +00:00
extern gint proto_mac_header_generic_decoder ;
2023-11-06 16:17:58 +00:00
static gint proto_mac_header_type_2_decoder ;
static gint ett_mac_header_type_2_decoder ;
static gint hf_mac_header_type_2_value_bytes ;
2007-05-25 23:40:42 +00:00
# define WIMAX_MAC_HEADER_SIZE 6
/* WiMax MAC Header Type II Feedback Types */
2013-03-20 01:18:10 +00:00
typedef enum
2007-05-25 23:40:42 +00:00
{
CQI_MIMO_FB , /* 0 */
DL_AVG_CINR , /* 1 */
MIMO_COEF_FB , /* 2 */
PREF_DL_CHAN_DIUC_FB , /* 3 */
UL_TX_PWR , /* 4 */
PHY_CHAN_FB , /* 5 */
AMC_BAND_BITMAP , /* 6 */
SHORT_PRECODE_FB , /* 7 */
MULTI_TYPES_FB , /* 8 */
LONG_PRECODE_FB , /* 9 */
COMB_DL_AVG_CINR , /* 10 */
MIMO_CHAN_FB , /* 11 */
CINR_FB , /* 12 */
CL_MIMO_FB , /* 13 */
TYPE_II_FB_TYPE_MAX
2013-03-20 01:18:10 +00:00
} TYPE_II_FB_TYPE_e ;
2007-05-25 23:40:42 +00:00
2012-04-10 10:20:20 +00:00
static const char * type2_fb_type_abbrv [ TYPE_II_FB_TYPE_MAX ] =
2007-05-25 23:40:42 +00:00
{
" CQI and MIMO Feedback " ,
" DL average CINR " ,
" MIMO Coefficients Feedback " ,
" Preferred DL Channel DIUC Feedback " ,
" UL Transmission Power " ,
" PHY Channel Feedback " ,
" AMC Band Indication Bitmap " ,
" Life Span of Short-term Precoding Feedback " ,
" Multiple Types of Feedback " ,
" Long-term Precoding Feedback " ,
" Combined DL Average CINR of Active BSs " ,
" MIMO Channel Feedback " ,
" CINR Feedback " ,
" Close-loop MIMO Feedback "
} ;
/* WIMAX MAC HEADER TYPE II FILEDS */
/* first byte */
# define WIMAX_MAC_HEADER_TYPE_2_HT 0x80
# define WIMAX_MAC_HEADER_TYPE_2_EC 0x40
# define WIMAX_MAC_HEADER_TYPE_2_TYPE 0x20
# define WIMAX_MAC_HEADER_TYPE_2_CII 0x10
# define WIMAX_MAC_HEADER_TYPE_2_FB_TYPE 0x0F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_ht ;
static int hf_mac_header_type_2_ec ;
static int hf_mac_header_type_2_type ;
static int hf_mac_header_type_2_cii ;
static int hf_mac_header_type_2_fb_type ;
2007-05-25 23:40:42 +00:00
/* 2nd to 5th bytes (varies by different fb types) */
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_cid ;
static int hf_mac_header_type_2_no_cid ;
2007-05-25 23:40:42 +00:00
/* CQI and MIMO Feedback */
/* 2nd & 3rd bytes */
# define WIMAX_MAC_HEADER_TYPE_2_CQI_FB_TYPE 0xE000
# define WIMAX_MAC_HEADER_TYPE_2_CQI_PAYLOAD 0x1F80
# define WIMAX_MAC_HEADER_TYPE_2_CQI_RSV 0x007F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_cqi_fb_type ;
static int hf_mac_header_type_2_cqi_payload ;
static int hf_mac_header_type_2_cqi_rsv ;
2007-05-25 23:40:42 +00:00
/* 4th & 5th without CID */
2007-11-26 18:55:17 +00:00
/*#define WIMAX_MAC_HEADER_TYPE_2_NO_CID 0xFFFF*/
2007-05-25 23:40:42 +00:00
/* DL average CINR */
/* 2nd byte */
# define WIMAX_MAC_HEADER_TYPE_2_DL_AVE_CINR 0xF800
# define WIMAX_MAC_HEADER_TYPE_2_DL_AVE_RSV 0x07FF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_dl_ave_cinr ;
static int hf_mac_header_type_2_dl_ave_rsv ;
2007-05-25 23:40:42 +00:00
/* MIMO Coefficients Feedback */
/* 2nd & 3rd bytes */
# define WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_NI 0xC000
# define WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_AI 0x3000
# define WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF 0x0F80
# define WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_RSV 0x007F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_mimo_coef_ni ;
static int hf_mac_header_type_2_mimo_coef_ai ;
static int hf_mac_header_type_2_mimo_coef ;
static int hf_mac_header_type_2_mimo_coef_rsv ;
2007-05-25 23:40:42 +00:00
/* Preferred DL Channel DIUC Feedback */
/* 2nd byte */
# define WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_DIUC 0xF000
# define WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_DCD 0x0F00
# define WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_RSV 0x00FF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_dl_chan_diuc ;
static int hf_mac_header_type_2_dl_chan_dcd ;
static int hf_mac_header_type_2_dl_chan_rsv ;
2007-05-25 23:40:42 +00:00
/* UL Transmission Power */
/* 2nd byte */
# define WIMAX_MAC_HEADER_TYPE_2_UL_TX_PWR 0xFF00
# define WIMAX_MAC_HEADER_TYPE_2_UL_TX_PWR_RSV 0x00FF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_ul_tx_pwr ;
static int hf_mac_header_type_2_ul_tx_pwr_rsv ;
2007-05-25 23:40:42 +00:00
/* PHY Channel Feedback */
/* 2nd to 4th bytes */
# define WIMAX_MAC_HEADER_TYPE_2_PHY_DIUC 0xF00000
# define WIMAX_MAC_HEADER_TYPE_2_PHY_UL_TX_PWR 0x0FF000
# define WIMAX_MAC_HEADER_TYPE_2_PHY_UL_HDRM 0x000FC0
# define WIMAX_MAC_HEADER_TYPE_2_PHY_RSV 0x00003F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_phy_diuc ;
static int hf_mac_header_type_2_phy_ul_tx_pwr ;
static int hf_mac_header_type_2_phy_ul_hdrm ;
static int hf_mac_header_type_2_phy_rsv ;
2007-05-25 23:40:42 +00:00
/* AMC Band Indication Bitmap */
/* 2nd to 5th bytes */
# define WIMAX_MAC_HEADER_TYPE_2_AMC_BITMAP 0xFFF00000
# define WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_1 0x000F8000
# define WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_2 0x00007C00
# define WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_3 0x000003E0
# define WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_4 0x0000001F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_amc_bitmap ;
static int hf_mac_header_type_2_amc_cqi_1 ;
static int hf_mac_header_type_2_amc_cqi_2 ;
static int hf_mac_header_type_2_amc_cqi_3 ;
static int hf_mac_header_type_2_amc_cqi_4 ;
2007-05-25 23:40:42 +00:00
/* Life Span of Short-term Precoding Feedback */
/* 2nd byte */
# define WIMAX_MAC_HEADER_TYPE_2_LIFE_SPAN 0xF000
# define WIMAX_MAC_HEADER_TYPE_2_LIFE_SPAN_RSV 0x0FFF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_life_span ;
static int hf_mac_header_type_2_life_span_rsv ;
2007-05-25 23:40:42 +00:00
/* Multiple Types of Feedback */
/* 2nd to 5th bytes ??? */
# define WIMAX_MAC_HEADER_TYPE_2_MT_NUM_FB_TYPES 0xC0000000
# define WIMAX_MAC_HEADER_TYPE_2_MT_OCCU_FB_TYPE 0x3C000000
# define WIMAX_MAC_HEADER_TYPE_2_MT_FB_CONTENTS 0x03FFFFFF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_mt_num_fb_types ;
static int hf_mac_header_type_2_mt_occu_fb_type ;
static int hf_mac_header_type_2_mt_fb_contents ;
2007-05-25 23:40:42 +00:00
/* Long-term Precoding Feedback */
/* 2nd & 3rd bytes */
# define WIMAX_MAC_HEADER_TYPE_2_LT_ID_FB 0xFC00
# define WIMAX_MAC_HEADER_TYPE_2_LT_RANK 0x0300
# define WIMAX_MAC_HEADER_TYPE_2_LT_FEC_QAM 0x00FC
# define WIMAX_MAC_HEADER_TYPE_2_LT_RSV 0x0003
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_lt_id_fb ;
static int hf_mac_header_type_2_lt_rank ;
static int hf_mac_header_type_2_lt_fec_qam ;
static int hf_mac_header_type_2_lt_rsv ;
2007-05-25 23:40:42 +00:00
/* Combined DL Average CINR of Active BSs */
/* 2nd & 3rd bytes */
# define WIMAX_MAC_HEADER_TYPE_2_COMB_DL_AVE 0xF800
# define WIMAX_MAC_HEADER_TYPE_2_COMB_DL_RSV 0x0EFF
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_comb_dl_ave ;
static int hf_mac_header_type_2_comb_dl_rsv ;
2007-05-25 23:40:42 +00:00
/* MIMO Channel Feedback */
/* 2nd byte */
# define WIMAX_MAC_HEADER_TYPE_2_DIUC 0xF0
# define WIMAX_MAC_HEADER_TYPE_2_PBWI 0x0F
/* 3rd to 5th bytes with CID */
# define WIMAX_MAC_HEADER_TYPE_2_SLPB 0xFE0000
# define WIMAX_MAC_HEADER_TYPE_2_PBRI_CID 0x010000
# define WIMAX_MAC_HEADER_TYPE_2_CID 0x00FFFF
/* 3rd to 5th bytes without CID */
# define WIMAX_MAC_HEADER_TYPE_2_PBRI 0x018000
# define WIMAX_MAC_HEADER_TYPE_2_CTI 0x007000
# define WIMAX_MAC_HEADER_TYPE_2_AI_0 0x000800
# define WIMAX_MAC_HEADER_TYPE_2_AI_1 0x000400
# define WIMAX_MAC_HEADER_TYPE_2_AI_2 0x000200
# define WIMAX_MAC_HEADER_TYPE_2_AI_3 0x000100
# define WIMAX_MAC_HEADER_TYPE_2_MI 0x0000C0
# define WIMAX_MAC_HEADER_TYPE_2_CT 0x000020
# define WIMAX_MAC_HEADER_TYPE_2_CQI 0x00001F
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_mimo_diuc ;
static int hf_mac_header_type_2_mimo_pbwi ;
static int hf_mac_header_type_2_mimo_slpb ;
static int hf_mac_header_type_2_mimo_bpri ;
static int hf_mac_header_type_2_mimo_bpri_cid ;
static int hf_mac_header_type_2_mimo_cid ;
static int hf_mac_header_type_2_mimo_cti ;
static int hf_mac_header_type_2_mimo_ai_0 ;
static int hf_mac_header_type_2_mimo_ai_1 ;
static int hf_mac_header_type_2_mimo_ai_2 ;
static int hf_mac_header_type_2_mimo_ai_3 ;
static int hf_mac_header_type_2_mimo_mi ;
static int hf_mac_header_type_2_mimo_ct ;
static int hf_mac_header_type_2_mimo_cqi ;
2007-05-25 23:40:42 +00:00
/* CINR Feedback */
/* 2nd byte */
2007-11-26 18:55:17 +00:00
/*#define WIMAX_MAC_HEADER_TYPE_2_CINR_MEAN 0xFF*/
2007-05-25 23:40:42 +00:00
/* 3rd byte */
2007-11-26 18:55:17 +00:00
/*#define WIMAX_MAC_HEADER_TYPE_2_CINR_DEVI 0xFF*/
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_cinr_mean ;
static int hf_mac_header_type_2_cinr_devi ;
2007-05-25 23:40:42 +00:00
/* Close-loop MIMO Feedback */
/* 2nd & 3rd bytes */
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_TYPE 0xC000
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_ANT_ID 0x3C00
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI 0x03E0
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV 0x008F
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_STREAMS 0x3000
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_ANT_SEL 0x0E00
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI_1 0x01F0
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV_1 0x000F
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CODEBOOK_ID 0x3F00
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI_2 0x00F8
# define WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV_2 0x000E
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_cl_mimo_type ;
static int hf_mac_header_type_2_cl_mimo_ant_id ;
static int hf_mac_header_type_2_cl_mimo_cqi ;
static int hf_mac_header_type_2_cl_mimo_cqi_1 ;
static int hf_mac_header_type_2_cl_mimo_cqi_2 ;
static int hf_mac_header_type_2_cl_mimo_rsv ;
static int hf_mac_header_type_2_cl_mimo_rsv_1 ;
static int hf_mac_header_type_2_cl_mimo_rsv_2 ;
static int hf_mac_header_type_2_cl_mimo_streams ;
static int hf_mac_header_type_2_cl_mimo_ant_sel ;
static int hf_mac_header_type_2_cl_mimo_codebook_id ;
2007-05-25 23:40:42 +00:00
/* last byte */
2007-11-26 18:55:17 +00:00
/*#define WIMAX_MAC_HEADER_TYPE_2_HCS 0xFF*/
2023-11-06 16:17:58 +00:00
static int hf_mac_header_type_2_hcs ;
2007-05-25 23:40:42 +00:00
/* CID Inclusion Indication messages */
static const value_string cii_msgs [ ] =
{
{ 0 , " without CID " } ,
{ 1 , " with CID " } ,
{ 0 , NULL }
} ;
/* Feedback Types */
static const value_string fb_types [ ] =
{
{ 0 , " CQI and MIMO Feedback " } ,
{ 1 , " DL average CINR " } ,
{ 2 , " MIMO Coefficients Feedback " } ,
{ 3 , " Preferred DL Channel DIUC Feedback " } ,
{ 4 , " UL Transmission Power " } ,
{ 5 , " PHY Channel Feedback " } ,
{ 6 , " AMC Band Indication Bitmap " } ,
{ 7 , " Life Span of Short-term Precoding Feedback " } ,
{ 8 , " Multiple Types of Feedback " } ,
{ 9 , " Long-term Precoding Feedback " } ,
{ 10 , " Combined DL Average CINR of Active BSs " } ,
{ 11 , " MIMO Channel Feedback " } ,
{ 12 , " CINR Feedback " } ,
{ 13 , " Close-loop MIMO Feedback " } ,
{ 14 , " Reserved " } ,
{ 15 , " Reserved " } ,
{ 0 , NULL }
} ;
/* Table of the Preferred Bandwidth Ratio of bandwidth over used channel bandwidth */
static const value_string pbwi_table [ ] =
{
{ 0 , " 1 " } ,
{ 1 , " 3/4 " } ,
{ 2 , " 2/3 " } ,
{ 3 , " 1/2 " } ,
{ 4 , " 1/3 " } ,
{ 5 , " 1/4 " } ,
{ 6 , " 1/5 " } ,
{ 7 , " 1/6 " } ,
{ 8 , " 1/8 " } ,
{ 9 , " 1/10 " } ,
{ 10 , " 1/12 " } ,
{ 11 , " 1/16 " } ,
{ 12 , " 1/24 " } ,
{ 13 , " 1/32 " } ,
{ 14 , " 1/48 " } ,
{ 15 , " 1/64 " } ,
{ 0 , NULL }
} ;
/* Burst Profile Ranking Indicator table */
static const value_string bpri_table [ ] =
{
{ 0 , " 1st preferred burst profile " } ,
{ 1 , " 2nd preferred burst profile " } ,
{ 2 , " 3rd preferred burst profile " } ,
{ 3 , " 4th preferred burst profile " } ,
{ 0 , NULL }
} ;
/* Coherent Time Index Table */
static const value_string cti_table [ ] =
{
{ 0 , " Infinite " } ,
{ 1 , " 1 frame " } ,
{ 2 , " 2 frames " } ,
{ 3 , " 3 frames " } ,
{ 4 , " 4 frames " } ,
{ 5 , " 8 frames " } ,
{ 6 , " 14 frames " } ,
{ 7 , " 24 frames " } ,
{ 0 , NULL }
} ;
/* The MS Matrix Index Table */
static const value_string mi_table [ ] =
{
{ 0 , " No STC " } ,
{ 1 , " Matrix A " } ,
{ 2 , " Matrix B " } ,
{ 3 , " Matrix C " } ,
{ 0 , NULL }
} ;
/* CQI Feedback Types */
static const value_string ct_msgs [ ] =
{
{ 0 , " DL average feedback " } ,
{ 1 , " CQI feedback " } ,
{ 0 , NULL }
} ;
/* Antenna Indication messages */
static const value_string ai_msgs [ ] =
{
{ 0 , " Not applicable " } ,
{ 1 , " Applicable " } ,
{ 0 , NULL }
} ;
2009-08-04 19:01:34 +00:00
2015-11-23 15:56:36 +00:00
static int dissect_mac_header_type_2_decoder ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , void * data _U_ )
2007-05-25 23:40:42 +00:00
{
2009-08-04 19:01:34 +00:00
gint tvb_len , offset = 0 ;
guint cii_bit , first_byte , fb_type , mimo_type ;
proto_item * parent_item = NULL ;
proto_item * ti = NULL ;
proto_tree * ti_tree = NULL ;
{ /* we are being asked for details */
/* Get the tvb reported length */
tvb_len = tvb_reported_length ( tvb ) ;
/* display the MAC Type II Header message */
ti = proto_tree_add_protocol_format ( tree , proto_mac_header_type_2_decoder , tvb , offset , tvb_len , " Mac Type II Header (6 bytes) " ) ;
/* add subtree */
ti_tree = proto_item_add_subtree ( ti , ett_mac_header_type_2_decoder ) ;
if ( tvb_len < WIMAX_MAC_HEADER_SIZE )
2009-06-22 04:58:08 +00:00
{
2009-08-04 19:01:34 +00:00
/* display the error message */
proto_tree_add_protocol_format ( ti_tree , proto_mac_header_type_2_decoder , tvb , offset , tvb_len , " Error: the size of Mac Header Type II tvb is too small! (%u bytes) " , tvb_len ) ;
/* display the MAC Type II Header in Hex */
2011-10-05 01:00:06 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_value_bytes , tvb , offset , tvb_len , ENC_NA ) ;
2015-11-23 15:56:36 +00:00
return tvb_captured_length ( tvb ) ;
2009-08-04 19:01:34 +00:00
}
# ifdef DEBUG
/* update the info column */
2010-04-08 15:21:07 +00:00
col_append_sep_str ( pinfo - > cinfo , COL_INFO , NULL , " MAC Signaling Header Type II " ) ;
2009-08-04 19:01:34 +00:00
# endif
/* get the parent */
parent_item = proto_tree_get_parent ( tree ) ;
/* Decode and display the first byte of the header */
/* header type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_ht , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
/* encryption control */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_ec , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
/* sub-type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
/* CID inclusion indication */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cii , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
/* feedback type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_fb_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
/* Get the first byte */
first_byte = tvb_get_guint8 ( tvb , offset ) ;
/* get the CII field */
cii_bit = ( ( first_byte & WIMAX_MAC_HEADER_TYPE_2_CII ) ? 1 : 0 ) ;
/* check the Type field */
if ( ! ( first_byte & WIMAX_MAC_HEADER_TYPE_2_TYPE ) )
2009-06-22 04:58:08 +00:00
{
2009-08-04 19:01:34 +00:00
/* Get the feedback type */
fb_type = ( first_byte & WIMAX_MAC_HEADER_TYPE_2_FB_TYPE ) ;
if ( fb_type < TYPE_II_FB_TYPE_MAX )
2009-06-22 04:58:08 +00:00
{
2009-08-04 19:01:34 +00:00
/* update the info column */
2010-04-08 15:21:07 +00:00
col_append_sep_str ( pinfo - > cinfo , COL_INFO , NULL , type2_fb_type_abbrv [ fb_type ] ) ;
2009-06-22 04:58:08 +00:00
}
2009-08-04 19:01:34 +00:00
else
2009-06-22 04:58:08 +00:00
{
2009-08-04 19:01:34 +00:00
/* update the info column */
2010-04-08 15:21:07 +00:00
col_append_sep_str ( pinfo - > cinfo , COL_INFO , NULL , " Unknown type 2 fb type " ) ;
2009-08-04 19:01:34 +00:00
/* display the MAC Type I Header in Hex */
2011-10-05 01:00:06 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_value_bytes , tvb , offset , tvb_len , ENC_NA ) ;
2015-11-23 15:56:36 +00:00
return tvb_captured_length ( tvb ) ;
2009-06-22 04:58:08 +00:00
}
2009-08-04 19:01:34 +00:00
/* move to the second byte */
offset + + ;
/* add the MAC header info */
proto_item_append_text ( parent_item , " %s " , type2_fb_type_abbrv [ fb_type ] ) ;
/* process the feedback header based on the fb type */
switch ( fb_type )
2007-05-25 23:40:42 +00:00
{
case CQI_MIMO_FB :
/* Decode and display the CQI and MIMO feedback */
/* CQI feedback type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cqi_fb_type , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* CQI payload */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cqi_payload , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cqi_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case DL_AVG_CINR :
/* Decode and display the DL average CINR feedback */
/* DL average CINR payload */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_dl_ave_cinr , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_dl_ave_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case MIMO_COEF_FB :
/* Decode and display the MIMO coefficients feedback */
/* number of index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_coef_ni , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* occurrences of antenna index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_coef_ai , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* MIMO coefficients */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_coef , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_coef_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* Decode and display the CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case PREF_DL_CHAN_DIUC_FB :
/* Decode and display the Preffed DL Channel DIUC feedback */
/* Preferred DIUC */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_dl_chan_diuc , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* DCD Change Count */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_dl_chan_dcd , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_dl_chan_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case UL_TX_PWR :
/* Decode and display the UL TX Power feedback */
/* UL TX Power */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_ul_tx_pwr , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_ul_tx_pwr_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case PHY_CHAN_FB :
/* Decode and display the PHY Channel feedback */
/* Preffed DIUC */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_phy_diuc , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* UL TX Power */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_phy_ul_tx_pwr , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* UL Headroom */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_phy_ul_hdrm , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_phy_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case AMC_BAND_BITMAP :
/* Decode and display the AMC Band CQIs feedback */
/* AMC Band Indication Bitmap */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_amc_bitmap , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* AMC CQI 1 */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_amc_cqi_1 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* AMC CQI 2 */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_amc_cqi_2 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* AMC CQI 3 */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_amc_cqi_3 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* AMC CQI 4 */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_amc_cqi_4 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
#if 0
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
# endif
break ;
case SHORT_PRECODE_FB :
/* Decode and display the Life Span of Short-term precoding feedback */
/* Life Span */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_life_span , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_life_span_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case MULTI_TYPES_FB :
/* Decode and display the Multi types of feedback */
/* Number of feedback types */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mt_num_fb_types , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Occurrences of feedback type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mt_occu_fb_type , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* feedback contents */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mt_fb_contents , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
#if 0
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
# endif
break ;
case LONG_PRECODE_FB :
/* Decode and display the Long-term precoding feedback */
/* Feedback of index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_lt_id_fb , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2024-02-06 10:46:08 +00:00
/* rank of precoding codebook */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_lt_rank , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* EFC and QAM feedback */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_lt_fec_qam , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_lt_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case COMB_DL_AVG_CINR :
/* Decode and display the Combined DL Average CINR feedback */
/* Combined DL average CINR of Active BSs */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_comb_dl_ave , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_comb_dl_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case MIMO_CHAN_FB :
/* Decode and display the second byte of the header */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_diuc , tvb , ( offset + 1 ) , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_pbwi , tvb , ( offset + 1 ) , 1 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the 3rd to 5th bytes of the header */
/* Decode and display the SLPB */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_slpb , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* Decode and display the BPRI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_bpri_cid , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_cid , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* Decode and display the BPRI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_bpri , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the CTI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_cti , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the AI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_ai_0 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_ai_1 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_ai_2 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_ai_3 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the MI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_mi , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the CT */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_ct , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the CQI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_mimo_cqi , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case CINR_FB :
/* Decode and display the CINRC feedback */
/* CINR Mean */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cinr_mean , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* CINR Standard Deviation */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cinr_devi , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* Decode and display the CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
case CL_MIMO_FB :
/* Get the MIMO type */
mimo_type = ( ( tvb_get_guint8 ( tvb , offset ) & 0xC0 ) > > 6 ) ;
/* Decode and display the MIMO type */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_type , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
if ( mimo_type = = 1 )
{
/* Decode and display the umber of streams */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_streams , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the antenna selection option index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_ant_sel , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the average CQI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_cqi_1 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_rsv_1 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else if ( mimo_type = = 2 )
{
/* Decode and display the umber of streams */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_streams , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the antenna selection option index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_codebook_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the average CQI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_cqi_2 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_rsv_2 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{
/* Decode and display the antenna grouping index */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_ant_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* Decode and display the average CQI */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_cqi , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cl_mimo_rsv , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
/* check the CII field */
if ( cii_bit )
{ /* with CID */
/* Decode and display the CID */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
else
{ /* without CID */
/* reserved */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_no_cid , tvb , ( offset + 2 ) , 2 , ENC_BIG_ENDIAN ) ;
2007-05-25 23:40:42 +00:00
}
break ;
default :
break ;
}
2009-08-04 19:01:34 +00:00
/* Decode and display the HCS */
2011-10-06 14:46:34 +00:00
proto_tree_add_item ( ti_tree , hf_mac_header_type_2_hcs , tvb , ( offset + 4 ) , 1 , ENC_BIG_ENDIAN ) ;
2009-08-04 19:01:34 +00:00
}
else
{
/* update the info column */
2010-04-08 15:21:07 +00:00
col_append_sep_str ( pinfo - > cinfo , COL_INFO , NULL , " Error - Undefined Type " ) ;
2009-08-04 19:01:34 +00:00
}
}
2015-11-23 15:56:36 +00:00
return tvb_captured_length ( tvb ) ;
2009-08-04 19:01:34 +00:00
}
/* Register Wimax Mac Header Type II Protocol and Dissector */
2017-09-29 22:31:48 +00:00
void wimax_proto_register_mac_header_type_2 ( void )
2009-08-04 19:01:34 +00:00
{
/* MAC HEADER TYPE II display */
static hf_register_info hf [ ] =
{
{
& hf_mac_header_type_2_value_bytes ,
{
" Values " , " wmx.type2ValueBytes " ,
FT_BYTES , BASE_NONE , NULL , 0x0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_ht ,
{
" MAC Header Type " , " wmx.type2Ht " ,
FT_UINT8 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_HT ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_ec ,
{
" MAC Encryption Control " , " wmx.type2Ec " ,
FT_UINT8 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_EC ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_type ,
{
" MAC Sub-Type " , " wmx.type2Type " ,
FT_UINT8 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_TYPE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cii ,
{
" CID Inclusion Indication " , " wmx.type2Cii " ,
FT_UINT8 , BASE_DEC , VALS ( cii_msgs ) , WIMAX_MAC_HEADER_TYPE_2_CII ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_fb_type ,
{
" Feedback Type " , " wmx.type2FbType " ,
FT_UINT8 , BASE_DEC , VALS ( fb_types ) , WIMAX_MAC_HEADER_TYPE_2_FB_TYPE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cqi_fb_type ,
{
" Mimo Feedback Type " , " wmx.type2MimoFbType " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CQI_FB_TYPE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cqi_payload ,
{
" CQI and Mimo Feedback Payload " , " wmx.type2MimoFbPayload " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CQI_PAYLOAD ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cqi_rsv ,
{
" Reserved " , " wmx.type2MimoFbRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CQI_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_dl_ave_cinr ,
{
" DL Average CINR " , " wmx.type2DlAveCinr " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DL_AVE_CINR ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_dl_ave_rsv ,
{
" Reserved " , " wmx.type2DlAveRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DL_AVE_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_coef_ni ,
{
" Number of Index " , " wmx.type2MimoCoefNi " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_NI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_coef_ai ,
{
" Occurrences of Antenna Index " , " wmx.type2MimoCoefAi " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_AI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_coef ,
{
" MIMO Coefficients " , " wmx.type2MimoCoef " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_coef_rsv ,
{
" Reserved " , " wmx.type2MimoCoefRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MIMO_COEF_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_dl_chan_diuc ,
{
" Preferred DIUC " , " wmx.type2DlChanDiuc " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_DIUC ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_dl_chan_dcd ,
{
" DCD Change Count " , " wmx.type2DlChanDcd " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_DCD ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_dl_chan_rsv ,
{
" Reserved " , " wmx.type2DlChanRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DL_CHAN_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_ul_tx_pwr ,
{
" UL TX Power " , " wmx.type2UlTxPwr " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_UL_TX_PWR ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_ul_tx_pwr_rsv ,
{
" Reserved " , " wmx.type2UlTxPwrRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_UL_TX_PWR_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_phy_diuc ,
{
" Preferred DIUC Index " , " wmx.type2PhyDiuc " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_PHY_DIUC ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_phy_ul_tx_pwr ,
{
" UL TX Power " , " wmx.type2PhyUlTxPwr " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_PHY_UL_TX_PWR ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_phy_ul_hdrm ,
{
" UL Headroom " , " wmx.type2PhyHdRm " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_PHY_UL_HDRM ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_phy_rsv ,
{
" Reserved " , " wmx.type2PhyRsv " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_PHY_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_amc_bitmap ,
{
" AMC Band Indication Bitmap " , " wmx.type2AmcBitmap " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_AMC_BITMAP ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_amc_cqi_1 ,
{
" CQI 1 " , " wmx.type2AmcCqi1 " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_1 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_amc_cqi_2 ,
{
" CQI 2 " , " wmx.type2AmcCqi2 " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_2 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_amc_cqi_3 ,
{
" CQI 3 " , " wmx.type2AmcCqi3 " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_3 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_amc_cqi_4 ,
{
" CQI 4 " , " wmx.type2AmcCqi4 " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_AMC_CQI_4 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_life_span ,
{
" Life Span of Short-term " , " wmx.type2LifeSpan " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LIFE_SPAN ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_life_span_rsv ,
{
" Reserved " , " wmx.type2LifeSpanRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LIFE_SPAN_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mt_num_fb_types ,
{
" Number of Feedback Types " , " wmx.type2MtNumFbTypes " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MT_NUM_FB_TYPES ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mt_occu_fb_type ,
{
" Occurrences of Feedback Type " , " wmx.type2MtOccuFbType " ,
FT_UINT32 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_MT_OCCU_FB_TYPE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mt_fb_contents ,
{
" Number of Feedback Types " , " wmx.type2MtNumFbTypes " ,
FT_UINT32 , BASE_HEX , NULL , WIMAX_MAC_HEADER_TYPE_2_MT_FB_CONTENTS ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_lt_id_fb ,
{
" Long-term Feedback Index " , " wmx.type2LtFbId " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LT_ID_FB ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_lt_rank ,
{
" Rank of Precoding Codebook " , " wmx.type2LtRank " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LT_RANK ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_lt_fec_qam ,
{
" FEC and QAM " , " wmx.type2LtFecQam " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LT_FEC_QAM ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_lt_rsv ,
{
" Reserved " , " wmx.type2LtFbId " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_LT_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_comb_dl_ave ,
{
" Combined DL Average CINR of Active BSs " , " wmx.type2CombDlAve " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_COMB_DL_AVE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_comb_dl_rsv ,
{
" Reserved " , " wmx.type2CombDlRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_COMB_DL_RSV ,
NULL , HFILL
}
} ,
2007-05-25 23:40:42 +00:00
{
2009-08-04 19:01:34 +00:00
& hf_mac_header_type_2_mimo_diuc ,
2007-05-25 23:40:42 +00:00
{
2009-08-04 19:01:34 +00:00
" Preferred DIUC Index " , " wmx.type2MimoDiuc " ,
FT_UINT8 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_DIUC ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_pbwi ,
{
" Preferred Bandwidth Index " , " wmx.type2MimoPbwi " ,
FT_UINT8 , BASE_DEC , VALS ( pbwi_table ) , WIMAX_MAC_HEADER_TYPE_2_PBWI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_slpb ,
{
" Starting Location of Preferred Bandwidth " , " wmx.type2MimoSlpb " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_SLPB ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_bpri_cid ,
{
" Burst Profile Ranking Indicator with CID " , " wmx.type2MimoBpriCid " ,
FT_UINT24 , BASE_HEX , VALS ( bpri_table ) , WIMAX_MAC_HEADER_TYPE_2_PBRI_CID ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_cid ,
{
" Connection ID " , " wmx.type2MimoCid " ,
FT_UINT24 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CID ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_bpri ,
{
" Burst Profile Ranking Indicator without CID " , " wmx.type2MimoBpri " ,
FT_UINT24 , BASE_HEX , VALS ( bpri_table ) , WIMAX_MAC_HEADER_TYPE_2_PBRI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_cti ,
{
" Coherent Time Index " , " wmx.type2MimoCti " ,
FT_UINT24 , BASE_HEX , VALS ( cti_table ) , WIMAX_MAC_HEADER_TYPE_2_CTI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_ai_0 ,
{
" Antenna 0 Indication " , " wmx.type2MimoAi " ,
FT_UINT24 , BASE_HEX , VALS ( ai_msgs ) , WIMAX_MAC_HEADER_TYPE_2_AI_0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_ai_1 ,
{
" Antenna 1 Indication " , " wmx.type2MimoAi " ,
FT_UINT24 , BASE_HEX , VALS ( ai_msgs ) , WIMAX_MAC_HEADER_TYPE_2_AI_1 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_ai_2 ,
{
" Antenna 2 Indication " , " wmx.type2MimoAi " ,
FT_UINT24 , BASE_HEX , VALS ( ai_msgs ) , WIMAX_MAC_HEADER_TYPE_2_AI_2 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_ai_3 ,
{
" Antenna 3 Indication " , " wmx.type2MimoAi " ,
FT_UINT24 , BASE_HEX , VALS ( ai_msgs ) , WIMAX_MAC_HEADER_TYPE_2_AI_3 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_mi ,
{
" MS Matrix Indicator " , " wmx.type2MimoMi " ,
FT_UINT24 , BASE_HEX , VALS ( mi_table ) , WIMAX_MAC_HEADER_TYPE_2_MI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_ct ,
{
" CQI Type " , " wmx.type2MimoCt " ,
FT_UINT24 , BASE_HEX , VALS ( ct_msgs ) , WIMAX_MAC_HEADER_TYPE_2_CT ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_mimo_cqi ,
{
" CQI Feedback " , " wmx.type2MimoCqi " ,
FT_UINT24 , BASE_HEX , NULL , WIMAX_MAC_HEADER_TYPE_2_CQI ,
NULL , HFILL
}
} ,
{ & hf_mac_header_type_2_cinr_mean ,
{
" CINR Mean " , " wmx.type2CinrMean " ,
FT_UINT8 , BASE_HEX , NULL , 0x0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cinr_devi ,
{
" CINR Standard Deviation " , " wmx.type2CinrDevi " ,
FT_UINT8 , BASE_HEX , NULL , 0x0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_type ,
{
" Closed-Loop MIMO Type " , " wmx.type2ClMimoType " ,
FT_UINT16 , BASE_HEX , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_TYPE ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_ant_id ,
{
" Antenna Grouping Index " , " wmx.type2ClMimoAntId " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_ANT_ID ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_cqi ,
{
" Average CQI " , " wmx.type2ClMimoCqi " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_cqi_1 ,
{
" Average CQI " , " wmx.type2ClMimoCqi " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI_1 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_cqi_2 ,
{
" Average CQI " , " wmx.type2ClMimoCqi " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CQI_2 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_rsv ,
{
" Reserved " , " wmx.type2ClMimoRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_rsv_1 ,
{
" Reserved " , " wmx.type2ClMimoRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV_1 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_rsv_2 ,
{
" Reserved " , " wmx.type2ClMimoRsv " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_RSV_2 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_streams ,
{
" Number of Streams " , " wmx.type2ClMimoStreams " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_STREAMS ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_ant_sel ,
{
" Antenna Selection Option Index " , " wmx.type2ClMimoAntSel " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_ANT_SEL ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cl_mimo_codebook_id ,
{
" Codebook Index " , " wmx.type2ClMimoCodeBkId " ,
FT_UINT16 , BASE_DEC , NULL , WIMAX_MAC_HEADER_TYPE_2_CL_MIMO_CODEBOOK_ID ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_cid ,
{
" Connection ID " , " wmx.type2Cid " ,
FT_UINT16 , BASE_DEC , NULL , 0x0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_no_cid ,
{
" Reserved " , " wmx.type2NoCid " ,
FT_UINT16 , BASE_HEX , NULL , 0x0 ,
NULL , HFILL
}
} ,
{
& hf_mac_header_type_2_hcs ,
{
" Header Check Sequence " , " wmx.type2Hcs " ,
FT_UINT8 , BASE_HEX , NULL , 0x0 ,
NULL , HFILL
2007-05-25 23:40:42 +00:00
}
}
2009-08-04 19:01:34 +00:00
} ;
/* Setup protocol subtree array */
static gint * ett [ ] =
{
& ett_mac_header_type_2_decoder ,
} ;
proto_mac_header_type_2_decoder = proto_mac_header_generic_decoder ;
proto_register_field_array ( proto_mac_header_type_2_decoder , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
2015-12-11 01:56:03 +00:00
register_dissector ( " mac_header_type_2_handler " , dissect_mac_header_type_2_decoder , proto_mac_header_type_2_decoder ) ;
2007-05-25 23:40:42 +00:00
}
2014-10-06 01:34:19 +00:00
/*
2019-07-26 18:43:17 +00:00
* Editor modelines - https : //www.wireshark.org/tools/modelines.html
2014-10-06 01:34:19 +00:00
*
* Local variables :
* c - basic - offset : 8
* tab - width : 8
* indent - tabs - mode : t
* End :
*
* vi : set shiftwidth = 8 tabstop = 8 noexpandtab :
* : indentSize = 8 : tabSize = 8 : noTabs = false :
*/