blob: 60308e480a2d74cb4743dbcaef4ef36c7a4bafd0 [file] [log] [blame]
/*
<:copyright-BRCM:2016:proprietary:standard
Broadcom Proprietary and Confidential.(c) 2016 Broadcom
All Rights Reserved
This program is the proprietary software of Broadcom Corporation and/or its
licensors, and may only be used, duplicated, modified or distributed pursuant
to the terms and conditions of a separate, written license agreement executed
between you and Broadcom (an "Authorized License"). Except as set forth in
an Authorized License, Broadcom grants no license (express or implied), right
to use, or waiver of any kind with respect to the Software, and Broadcom
expressly reserves all rights in and to the Software and all intellectual
property rights therein. IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE
NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY
BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
Except as expressly set forth in the Authorized License,
1. This program, including its structure, sequence and organization,
constitutes the valuable trade secrets of Broadcom, and you shall use
all reasonable efforts to protect the confidentiality thereof, and to
use this information only in connection with your use of Broadcom
integrated circuit products.
2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
RESPECT TO THE SOFTWARE. BROADCOM SPECIFICALLY DISCLAIMS ANY AND
ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT,
FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE
TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF USE OR
PERFORMANCE OF THE SOFTWARE.
3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR
ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY
WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES;
OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE
SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
LIMITED REMEDY.
:>
*/
#ifndef _BCM_COMMON_GPON_CONSTANTS_H_
#define _BCM_COMMON_GPON_CONSTANTS_H_
#include "bcmolt_model_data.h"
/* maximum number of PONs for any supported PON mode */
#define MAX_NUM_OF_PONS 16
/** Generic "PON mode" used to simplify logic when specific "system mode" is too complex. */
typedef enum
{
BCMOLT_PON_MODE_GPON,
BCMOLT_PON_MODE_XGPON,
BCMOLT_PON_MODE_XGS,
BCMOLT_PON_MODE_NGPON2,
} bcmolt_pon_mode;
/** Object type used by the API layer for provisioning each PON mode. */
typedef enum
{
BCMOLT_PON_API_TYPE_GPON,
BCMOLT_PON_API_TYPE_XGPON,
} bcmolt_pon_api_type;
typedef enum
{
BCMOLT_PON_US_RATE_1G,
BCMOLT_PON_US_RATE_2P5G,
BCMOLT_PON_US_RATE_10G,
} bcmolt_pon_us_rate;
/* Number of PON NIs per PON mode */
#define GPON_MAX_NUM_OF_PONS 16
#define XGPON_MAX_NUM_OF_PONS 8
#define XGPON_HALF_CHIP_MAX_NUM_OF_PONS 4
#define XGS_2X_NUM_OF_PONS 2
#define NGPON2_2X_NUM_OF_PONS 2
#define NGPON2_8X_NUM_OF_PONS 8
/* ONU's per PON */
#define GPON_NUM_OF_ONUS 128
#define XGPON_NUM_OF_ONUS 256
#define XGPON_MAX_NUM_OF_ONUS 510
/* Alloc ID's per PON */
#define GPON_NUM_OF_DYNAMIC_ALLOC_INDICES 640
#define GPON_NUM_OF_ALLOC_IDS 1024
#define XGPON_NUM_OF_DYNAMIC_ALLOC_INDICES 1280
#define XGPON_NUM_OF_ALLOC_IDS 2048
/* Alloc ID's per ONU */
#define GPON_NUM_OF_ALLOC_IDS_PER_ONU 32
#define XGPON_NUM_OF_ALLOC_IDS_PER_ONU 32
#define NUM_OF_ALLOC_IDS_PER_ONU (MAX(GPON_NUM_OF_ALLOC_IDS_PER_ONU, XGPON_NUM_OF_ALLOC_IDS_PER_ONU))
#define GPON_ONU_ID_BROADCAST ((bcmolt_pon_onu_id)0xFF)
#define XGPON_ONU_ID_BROADCAST ((bcmolt_pon_onu_id)0x3FF)
#define GPON_ONU_ID_UNASSIGNED GPON_ONU_ID_BROADCAST
#define XGPON_ONU_ID_UNASSIGNED XGPON_ONU_ID_BROADCAST
#define XGPON_DUMMY_ONU_ID ((bcmolt_pon_onu_id)511)
#define GPON_ALLOC_ID_BROADCAST ((bcmolt_pon_alloc_id)0xFE)
#define XGPON_ALLOC_ID_BROADCAST ((bcmolt_pon_alloc_id)0x3FF) /* Used for 2.5G upstream in XGPON/XGS/NGPON2 */
#define TEN_GIG_ALLOC_ID_BROADCAST ((bcmolt_pon_alloc_id)0x3FE) /* Used for 10G upstream in XGS/NGPON2 */
#define TEN_OR_2P5_GIG_ALLOC_ID_BROADCAST ((bcmolt_pon_alloc_id)0x3FD) /* Used for either 2.5G/10G upstream in XGS/NGPON2 */
#define GPON_ALLOC_ID_UNASSIGNED ((bcmolt_pon_alloc_id)0xFF)
#define XGPON_ALLOC_ID_UNASSIGNED ((bcmolt_pon_alloc_id)512) /* In XGPON we have up to 512 ONU's, and alloc ID is unused for sure. */
#define XGPON_DUMMY_ALLOC_ID ((bcmolt_pon_alloc_id)511)
/* GEM PORT ID's per PON */
#define GPON_NUM_OF_GEM_PORT_IDS_PER_PON 4096
#define XGPON_NUM_OF_GEM_PORT_IDS_PER_PON 8192
/* GEM PORT ID's per ONU */
#define MAX_NUM_OF_GEM_PORT_IDS_PER_ONU 256
/* OMCI/CPU packets */
#define OMCI_CRC_LEN 4
/* Packet sizes - all values in bytes resolution */
#define OMCI_MIN_PKT_SIZE_WITH_CRC 14
#define OMCI_MIN_PKT_SIZE_WO_CRC 10
#define OMCI_MAX_PKT_SIZE_WITH_CRC 1980
#define OMCI_MAX_PKT_SIZE_WO_CRC 1976
#define OMCI_BASELINE_PKT_SIZE_WO_CRC 44
#define OMCI_EXTENDED_PKT_SIZE_WO_CRC OMCI_MAX_PKT_SIZE_WO_CRC
#define CPU_MIN_PKT_SIZE_WITH_CRC 64
#define CPU_MIN_PKT_SIZE_WO_CRC 60
#define CPU_MAX_PKT_SIZE_WITH_CRC 2048
#define CPU_MAX_PKT_SIZE_WO_CRC 2044
#endif