/******************************************************************************/
/*                 Copyright C 1998-2004 Broadcom Corporation                 */
/*                                                                            */
/* This material is the confidential trade secret and proprietary information */
/* of Broadcom Corporation.  It may not be reproduced, used, sold or          */
/* transferred to any third party without the prior written consent of        */
/* Broadcom Corporation.   All rights reserved.                               */
/******************************************************************************/
/*   FileName        : bcm_hmiBondingMsg.h                                    */
/*   Purpose         : Header for all bonding messages BasicTypes             */
/*   Limitations     : None                                                   */
/*   Author          : Emmanuel Hanssens                                      */
/*   Creation Date   : 09-Jul-2004                                            */
/*   History         : Compiled by CVS                                        */
/******************************************************************************/
/*   $Id: bcm_hmiBondingMsg.h,v 1.3 2004/09/29 08:10:14 hanssens Exp $  */
/******************************************************************************/
#ifndef BCM_HMI_BONDING_MSG_H
# define BCM_HMI_BONDING_MSG_H

# include "bcm_userdef.h"
# include "bcm_layout.h"

/* {{{ Application ID */

# define BONDING_MANAGER_ID(group) (0x500 + (BCM_DEV_BONDGRP_ID(group)))

/* }}} */
/* {{{ Available services */

# define SET_BONDING_CONFIG             0x0501
# define GET_BONDING_CONFIG             0x0502
# define GET_BONDING_STATUS             0x0503

/* }}} */

/* {{{ Set- and GetBondingConfig services */

typedef struct BondingConfig BondingConfig;
struct BondingConfig
{
  uint32 bearerBitmap;          /* defines the bearers to be included in the
                                 * group 
                                 * (line x, bearer y) enabled by bit (2*x+y),
                                 * x=[0:11], y=[0:1] */
  uint32 maxDsGroupRate;
  uint16 maxUsGroupRate;
  uint16 uniqueBondingGroupId;
  uint8  mainLineIndex;         /* indicates which line/bearer utopia FIFO
                                 * will be used */
  uint8  reserved[3];
} BCM_PACKING_ATTRIBUTE ;

typedef BondingConfig SetBondingConfigMsgReq;
extern  MsgLayout     SetBondingConfigLayout;

typedef BondingConfig GetBondingConfigMsgRep;
extern  MsgLayout     GetBondingConfigLayout;

/* }}} */
/* {{{ GetBondingStatus service */

typedef struct GetBondingStatusMsgRep GetBondingStatusMsgRep;
struct GetBondingStatusMsgRep
{
  uint32 groupDsRate;           /* this includes all active links */
  uint16 groupUsRate;           /* this includes all active links */
  uint16 reserved;
} BCM_PACKING_ATTRIBUTE ;

extern  MsgLayout GetBondingStatusLayout;

/* }}} */

#endif
