![Anders Broman](/assets/img/avatar_default.png)
RLC: changed so reassembly fail flag is set per channel instead of globally. RLC: added reset channel function Added support for reconfigurin HSDSCH flows, and E-DCH flows (just needs to figure out when it should become active for 'overloaded' ports), also changed slightly how ehs headers are configured in nbap. Removed extra (debugging) port in nbap This is the last patch set for a while. svn path=/trunk/; revision=44423
192 lines
6 KiB
C
192 lines
6 KiB
C
/* packet-fp.h
|
|
*
|
|
* Martin Mathieson
|
|
* $Id$
|
|
*
|
|
* Wireshark - Network traffic analyzer
|
|
* By Gerald Combs <gerald@wireshark.org>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
|
|
#include <glib.h>
|
|
|
|
/* Channel types */
|
|
#define CHANNEL_RACH_FDD 1
|
|
#define CHANNEL_RACH_TDD 2
|
|
#define CHANNEL_FACH_FDD 3
|
|
#define CHANNEL_FACH_TDD 4
|
|
#define CHANNEL_DSCH_FDD 5 /* DSCH Downlink Shared Channel */
|
|
#define CHANNEL_DSCH_TDD 6
|
|
#define CHANNEL_USCH_TDD_384 8
|
|
#define CHANNEL_USCH_TDD_128 24
|
|
#define CHANNEL_PCH 9
|
|
#define CHANNEL_CPCH 10
|
|
#define CHANNEL_BCH 11
|
|
#define CHANNEL_DCH 12 /* DCH Dedicated Transport Channel */
|
|
#define CHANNEL_HSDSCH 13 /* HS-DSCH - High Speed Downlink Shared Channel */
|
|
#define CHANNEL_IUR_CPCHF 14
|
|
#define CHANNEL_IUR_FACH 15
|
|
#define CHANNEL_IUR_DSCH 16
|
|
#define CHANNEL_EDCH 17 /* E-DCH Enhanced DCH */
|
|
#define CHANNEL_RACH_TDD_128 18
|
|
#define CHANNEL_HSDSCH_COMMON 19 /* HS-DSCH - High Speed Downlink Shared Channel */
|
|
#define CHANNEL_HSDSCH_COMMON_T3 20
|
|
#define CHANNEL_EDCH_COMMON 21
|
|
|
|
enum fp_interface_type
|
|
{
|
|
IuB_Interface,
|
|
IuR_Interface
|
|
};
|
|
|
|
enum division_type
|
|
{
|
|
Division_FDD = 1,
|
|
Division_TDD_384 = 2,
|
|
Division_TDD_128 = 3,
|
|
Division_TDD_768 = 4
|
|
};
|
|
|
|
enum fp_hsdsch_entity
|
|
{
|
|
entity_not_specified = 0,
|
|
hs = 1,
|
|
ehs = 2
|
|
};
|
|
|
|
enum fp_link_type
|
|
{
|
|
FP_Link_Unknown,
|
|
FP_Link_ATM,
|
|
FP_Link_Ethernet
|
|
};
|
|
|
|
enum fp_rlc_mode {
|
|
FP_RLC_MODE_UNKNOWN,
|
|
FP_RLC_TM,
|
|
FP_RLC_UM,
|
|
FP_RLC_AM
|
|
};
|
|
|
|
/* Info attached to each FP packet */
|
|
typedef struct fp_info
|
|
{
|
|
enum fp_interface_type iface_type;
|
|
enum division_type division;
|
|
guint8 release; /* e.g. 99, 4, 5, 6, 7 */
|
|
guint16 release_year; /* e.g. 2001 */
|
|
guint8 release_month; /* e.g. 12 for December */
|
|
gboolean is_uplink;
|
|
gint channel; /* see Channel types definitions above */
|
|
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
|
|
gint paging_indications;
|
|
gint num_chans;
|
|
#define MAX_FP_CHANS 64
|
|
gint chan_tf_size[MAX_FP_CHANS];
|
|
gint chan_num_tbs[MAX_FP_CHANS];
|
|
|
|
#define MAX_EDCH_DDIS 16
|
|
gint no_ddi_entries;
|
|
guint8 edch_ddi[MAX_EDCH_DDIS];
|
|
guint edch_macd_pdu_size[MAX_EDCH_DDIS];
|
|
|
|
guint edch_lchId[MAX_EDCH_DDIS]; /* Logical Channel Id for E-DCH*/
|
|
|
|
guint8 edch_type; /* 1 means T2 */
|
|
|
|
gint cur_tb; /* current transport block (required for dissecting of single TBs */
|
|
gint cur_chan; /* current channel, required to retrieve the correct channel configuration for UMTS MAC */
|
|
gint com_context_id; /*Identifies a single UE in the network*/
|
|
guint16 srcport, destport;
|
|
|
|
/* HSDSCH Related data */
|
|
enum fp_hsdsch_entity hsdsch_entity;
|
|
gint hsdsch_macflowd_id;
|
|
#define MAX_NUM_HSDHSCH_MACDFLOW 8
|
|
gboolean hsdhsch_macfdlow_is_mux[MAX_NUM_HSDHSCH_MACDFLOW];
|
|
enum fp_link_type link_type;
|
|
guint urnti; /*Used for tracking a "sequence" over diffrent transport channels*/
|
|
|
|
gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
|
|
} fp_info;
|
|
|
|
/* From NBAC-Constants.asn */
|
|
#define FP_maxNrOfTFs 32
|
|
|
|
typedef struct
|
|
{
|
|
gint num_ul_chans;
|
|
gint ul_chan_tf_size[MAX_FP_CHANS];
|
|
gint ul_chan_num_tbs[MAX_FP_CHANS];
|
|
gint num_dl_chans;
|
|
gint dl_chan_tf_size[MAX_FP_CHANS];
|
|
gint dl_chan_num_tbs[MAX_FP_CHANS];
|
|
|
|
} fp_dch_channel_info_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
enum fp_interface_type iface_type;
|
|
enum division_type division;
|
|
gint channel; /* see Channel types definitions above */
|
|
guint32 dl_frame_number; /* the frame where this conversation is started from CRNC */
|
|
guint32 ul_frame_number; /* the frame where this conversation is started from Node B */
|
|
address crnc_address;
|
|
guint16 crnc_port;
|
|
gint com_context_id; /*Identifies a single UE in the network*/
|
|
|
|
/* For PCH channel */
|
|
gint paging_indications;
|
|
|
|
/* DCH's in this flow */
|
|
gint num_dch_in_flow;
|
|
gint dchs_in_flow_list[FP_maxNrOfTFs];
|
|
|
|
guint8 dch_crc_present; /* 0=No, 1=Yes, 2=Unknown */
|
|
enum fp_rlc_mode rlc_mode;
|
|
|
|
/* DCH type channel data */
|
|
fp_dch_channel_info_t fp_dch_channel_info[FP_maxNrOfTFs];
|
|
|
|
/* E-DCH related data */
|
|
gint no_ddi_entries;
|
|
guint8 edch_ddi[MAX_EDCH_DDIS];
|
|
guint edch_macd_pdu_size[MAX_EDCH_DDIS];
|
|
guint8 edch_lchId[MAX_EDCH_DDIS];
|
|
guint8 edch_type; /* 1 means T2 */
|
|
|
|
/* HSDSCH Related data */
|
|
enum fp_hsdsch_entity hsdsch_entity;
|
|
guint8 hsdsch_macdflow_id;
|
|
|
|
guint8 hsdsch_num_chans_per_flow[MAX_NUM_HSDHSCH_MACDFLOW];
|
|
|
|
/*HSDSCH Common related data*/
|
|
guint8 common_macdflow_id;
|
|
|
|
guint urnti; /*Used for tracking a "sequence" over diffrent transport channels*/
|
|
guint hrnti; /*Used for tracking a HS-DSCH flow*/
|
|
gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
|
|
guint32 cfn;
|
|
guint32 cfn_index;
|
|
} umts_fp_conversation_info_t;
|
|
|
|
void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);
|
|
|