| /*******************************************************************************
|
| Copyright (C) Marvell International Ltd. and its affiliates
|
|
|
| This software file (the "File") is owned and distributed by Marvell
|
| International Ltd. and/or its affiliates ("Marvell") under the following
|
| alternative licensing terms. Once you have made an election to distribute the
|
| File under one of the following license alternatives, please (i) delete this
|
| introductory statement regarding license alternatives, (ii) delete the two
|
| license alternatives that you have not elected to use and (iii) preserve the
|
| Marvell copyright notice above.
|
|
|
| ********************************************************************************
|
| Marvell Commercial License Option
|
|
|
| If you received this File from Marvell and you have entered into a commercial
|
| license agreement (a "Commercial License") with Marvell, the File is licensed
|
| to you under the terms of the applicable Commercial License.
|
|
|
| ********************************************************************************
|
| Marvell GPL License Option
|
|
|
| If you received this File from Marvell, you may opt to use, redistribute and/or
|
| modify this File in accordance with the terms and conditions of the General
|
| Public License Version 2, June 1991 (the "GPL License"), a copy of which is
|
| available along with the File in the license.txt file or by writing to the Free
|
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
|
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
|
|
|
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
|
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
|
| DISCLAIMED. The GPL License provides additional details about this warranty
|
| disclaimer.
|
| ********************************************************************************
|
| Marvell BSD License Option
|
|
|
| If you received this File from Marvell, you may opt to use, redistribute and/or
|
| modify this File under the following licensing terms.
|
| Redistribution and use in source and binary forms, with or without modification,
|
| are permitted provided that the following conditions are met:
|
|
|
| * Redistributions of source code must retain the above copyright notice,
|
| this list of conditions and the following disclaimer.
|
|
|
| * Redistributions in binary form must reproduce the above copyright
|
| notice, this list of conditions and the following disclaimer in the
|
| documentation and/or other materials provided with the distribution.
|
|
|
| * Neither the name of Marvell nor the names of its contributors may be
|
| used to endorse or promote products derived from this software without
|
| specific prior written permission.
|
|
|
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| ******************************************************************************/
|
|
|
| /******************************************************************************
|
| ** FILE : eponOnuLnxKsMI.h **
|
| ** **
|
| ** DESCRIPTION : This file contains ONU GPON Management Interface **
|
| *******************************************************************************
|
| * *
|
| * MODIFICATION HISTORY: *
|
| * *
|
| * 29Oct06 Oren Ben Hayun created *
|
| * =========================================================================== *
|
| ******************************************************************************/
|
| #ifndef _ONU_EPON_LINUX_KS_MNG_INTERFACE_H
|
| #define _ONU_EPON_LINUX_KS_MNG_INTERFACE_H
|
|
|
| /* Include Files
|
| ------------------------------------------------------------------------------*/
|
|
|
| /* Definitions
|
| ------------------------------------------------------------------------------*/
|
| #define MVEPON_IOCTL_INIT _IOW(MVPON_IOCTL_MAGIC, 1, unsigned int)
|
| #define MVEPON_IOCTL_FEC_CONFIG _IOW(MVPON_IOCTL_MAGIC, 2, unsigned int)
|
| #define MVEPON_IOCTL_ENC_CONFIG _IOW(MVPON_IOCTL_MAGIC, 3, unsigned int)
|
| #define MVEPON_IOCTL_ENC_KEY _IOW(MVPON_IOCTL_MAGIC, 4, unsigned int)
|
| #define MVEPON_IOCTL_INFO _IOR(MVPON_IOCTL_MAGIC, 5, unsigned int)
|
| #define MVEPON_IOCTL_PM _IOR(MVPON_IOCTL_MAGIC, 6, unsigned int)
|
| #define MVEPON_IOCTL_OAM_TX _IOW(MVPON_IOCTL_MAGIC, 7, unsigned int)
|
| #define MVEPON_IOCTL_DBA_CFG _IOW(MVPON_IOCTL_MAGIC, 8, unsigned int)
|
| #define MVEPON_IOCTL_DBA_RPRT _IOR(MVPON_IOCTL_MAGIC, 8, unsigned int)
|
| #define MVEPON_IOCTL_HOLDOVER_CFG _IOW(MVPON_IOCTL_MAGIC, 9, unsigned int)
|
| #define MVEPON_IOCTL_HOLDOVER_RPRT _IOW(MVPON_IOCTL_MAGIC, 10, unsigned int)
|
| #define MVEPON_IOCTL_SILENCE _IOW(MVPON_IOCTL_MAGIC, 11, unsigned int)
|
| #define MVEPON_IOCTL_P2P_SET _IOW(MVPON_IOCTL_MAGIC, 12, unsigned int)
|
| #define MVEPON_IOCTL_P2P_FORCE_MODE_SET _IOW(MVPON_IOCTL_MAGIC, 13, unsigned int)
|
| #define MVEPON_IOCTL_TDM_QUE_CFG _IOW(MVPON_IOCTL_MAGIC, 14, unsigned int)
|
| #define MVEPON_IOCTL_ALARM_GET _IOR(MVPON_IOCTL_MAGIC, 15, unsigned int)
|
| #define MVEPON_IOCTL_ROGUE_ONU_SET _IOW(MVPON_IOCTL_MAGIC, 16, unsigned int) |
| #define MVEPON_IOCTL_LOS_TIME _IOW(MVPON_IOCTL_MAGIC, 17, unsigned int)
|
| #define MVEPON_IOCTL_TX_CONTROL _IOW(MVPON_IOCTL_MAGIC, 18, unsigned int)
|
| #define MVEPON_IOCTL_POWER_SAVING _IOW(MVPON_IOCTL_MAGIC, 19, unsigned int)
|
| #define MVEPON_IOCTL_CONTROL_SLEEP _IOW(MVPON_IOCTL_MAGIC, 20, unsigned int)
|
|
|
| #define EPON_MAX_NUM_OF_MAC (8)
|
| #define EPON_MAX_NUM_OF_QUEUE (8)
|
| #define EPON_MAC_LEN (6)
|
|
|
| #define EPON_API_MAX_OAM_FRAME_SIZE (512)
|
| /*db threshold set*/
|
| #define EPON_MIN_QUEUE_SET_NUMBER (2)
|
| #define EPON_MAX_QUEUE_SET_NUMBER (4)
|
| #define EPON_MAX_THRESHOLD_SET_RER_QUEUE (8)
|
| #define EPON_MAX_QUEUE (8)
|
|
|
| /* Enums
|
| ------------------------------------------------------------------------------*/
|
| typedef enum
|
| {
|
| E_EPON_IOCTL_PM_RX = 1,
|
| E_EPON_IOCTL_PM_TX = 2,
|
| E_EPON_IOCTL_PM_SW = 3,
|
| E_EPON_IOCTL_PM_GPM = 4
|
| }E_EponIoctlPmSection;
|
|
|
| typedef enum
|
| {
|
| E_EPON_IOCTL_MPCP_TX_FRAME_CNT = 0,
|
| E_EPON_IOCTL_MPCP_TX_ERROR_FRAME_CNT = 1,
|
| E_EPON_IOCTL_MAX_TX_SW_CNT
|
| }E_EponIoctlTxSwCnt;
|
|
|
| typedef enum
|
| {
|
| E_EPON_IOCTL_MPCP_RX_FRAME_CNT = 0,
|
| E_EPON_IOCTL_MPCP_RX_ERROR_FRAME_CNT = 1,
|
| E_EPON_IOCTL_MPCP_REGISTER_ACK_CNT = 2,
|
| E_EPON_IOCTL_MPCP_REGISTER_NACK_CNT = 3,
|
| E_EPON_IOCTL_MPCP_REGISTER_DEREG_FRAME_CNT = 4,
|
| E_EPON_IOCTL_MPCP_REGISTER_REREG_FRAME_CNT = 5,
|
| E_EPON_IOCTL_MAX_RX_SW_CNT
|
| }E_EponIoctlRxSwCnt;
|
|
|
| typedef enum
|
| {
|
| E_EPON_IOCTL_STD_MODE,
|
| E_EPON_IOCTL_P2P_MODE,
|
| E_EPON_IOCTL_MAX_MODE_NUM,
|
| }E_EponIoctlMode;
|
|
|
| typedef enum
|
| {
|
| E_EPON_IOCTL_ENABLE_TX = 0,
|
| E_EPON_IOCTL_DISABLE_TX = 1,
|
| E_EPON_IOCTL_DISABLE_TX_DELAY = 2,
|
| } E_EponIoctlTxControl;
|
|
|
| typedef enum
|
| {
|
| E_GPON_SLEEP_ACTION_DISABLE = 0,
|
| E_GPON_SLEEP_ACTION_ENABLE = 1,
|
| E_GPON_SLEEP_ACTION_CONFIG = 2,
|
| } E_GponSleepAction;
|
|
|
| typedef enum
|
| {
|
| E_GPON_SLEEP_MODE_DO_NOTHING = 0,
|
| E_GPON_SLEEP_MODE_TX = 1,
|
| E_GPON_SLEEP_MODE_TX_RX = 2,
|
| } E_GponSleepMode;
|
|
|
| /* Typedefs
|
| ------------------------------------------------------------------------------*/
|
| /* TX Counters */
|
| typedef struct
|
| {
|
| MV_U32 ctrlRegReqFramesCnt; /* Count number of register request frames transmitted */
|
| MV_U32 ctrlRegAckFramesCnt; /* Count number of register acknowledge frames transmitted */
|
| MV_U32 reportFramesCnt; /* Count number of report frames transmitted */
|
| MV_U32 dataFramesCnt; /* Count number of data frames transmitted */
|
| MV_U32 txAllowedBytesCnt; /* Count number of Tx Byte Allow counter */
|
| }S_EponIoctlTxPm;
|
|
|
| /* RX Counters */
|
| typedef struct
|
| {
|
| MV_U32 fcsErrorFramesCnt; /* Count number of received frames with FCS errors */
|
| MV_U32 shortFramesCnt; /* Count number of short frames received */
|
| MV_U32 longFramesCnt; /* Count number of long frames received */
|
| MV_U32 dataFramesCnt; /* Count number of data frames received */
|
| MV_U32 ctrlFramesCnt; /* Count number of control frames received */
|
| MV_U32 reportFramesCnt; /* Count number of report frames received */
|
| MV_U32 gateFramesCnt; /* Count number of gate frames received */
|
| }S_EponIoctlRxPm;
|
|
|
| /* SW Counters */
|
| typedef struct
|
| {
|
| MV_U32 swTxCnt[E_EPON_IOCTL_MAX_TX_SW_CNT];
|
| MV_U32 swRxCnt[E_EPON_IOCTL_MAX_RX_SW_CNT];
|
| }S_EponIoctlSwPm;
|
|
|
| /* GEM Counters */
|
| typedef struct
|
| {
|
| MV_U32 grantValidCnt; /* Count number of valid grant */
|
| MV_U32 grantMaxFutureTimeErrorCnt; /* Count number of grant max future time error */
|
| MV_U32 minProcTimeErrorCnt; /* Count number of min proc time error */
|
| MV_U32 lengthErrorCnt; /* Count number of length error */
|
| MV_U32 discoveryAndRegCnt; /* Count number of discovery & register */
|
| MV_U32 fifoFullErrorCnt; /* Count number of fifo full error */
|
| MV_U32 opcDiscoveryNotRegBcastCnt; /* Count number of opc discoveryNotRegBcastCnt */
|
| MV_U32 opcRegisterNotDiscoveryCnt; /* Count number of opc register not discovery */
|
| MV_U32 opcDiscoveryNotRegNotBcastCnt; /* Count number of opc discovery not register not bcast */
|
| MV_U32 opcDropGrantCnt; /* Count number of opc drop grant */
|
| MV_U32 opcHiddenGrantCnt; /* Count number of opc hidden grant */
|
| MV_U32 opcBackToBackCnt; /* Count number of opc back to back */
|
| }S_EponIoctlGpmPm;
|
|
|
| /* PM Counters */
|
| typedef struct
|
| {
|
| MV_U32 macId;
|
| MV_U32 section;
|
| union
|
| {
|
| S_EponIoctlRxPm rxCnt;
|
| S_EponIoctlTxPm txCnt;
|
| S_EponIoctlSwPm swCnt;
|
| S_EponIoctlGpmPm gpmCnt;
|
| };
|
| }S_EponIoctlPm;
|
|
|
| /* INFO */
|
| typedef struct
|
| {
|
| MV_U32 macId;
|
| MV_U32 onuEponState; /* ONU State */
|
| MV_U32 onuEponSignalDetect; /* ONU Signal Detect */
|
| MV_U32 onuEponDsSyncOkPcs; /* ONU DS Sync OK - PCS */
|
| MV_U32 onuEponCtrlType; /* ONU Control Type */
|
| MV_U8 onuEponMacAddr[EPON_MAC_LEN]; /* ONU MAC Address */
|
| MV_U8 onuEponBcastAddr[EPON_MAC_LEN]; /* ONU MAC Broadcast Address */
|
| MV_U32 onuEponRxLLID; /* ONU Rx Packet Rx LLID Array */
|
| MV_U32 onuEponTxLLID; /* ONU Rx Packet Tx LLID Array */
|
| MV_U32 onuEponMode; /* ONU mode (EPON, P2P) */
|
| }S_EponIoctlInfo;
|
|
|
| /* Init */
|
| typedef struct
|
| {
|
| MV_U32 ponXvrBurstEnPolarity;
|
| MV_U32 ponXvrPolarity;
|
| MV_U32 p2pXvrBurstEnPolarity;
|
| MV_U32 p2pXvrPolarity;
|
| MV_U32 dgPolarity;
|
| MV_U32 pkt2kSupported;
|
| MV_U8 macAddr[EPON_MAX_NUM_OF_MAC][EPON_MAC_LEN];
|
| }S_EponIoctlInit;
|
|
|
| /* FEC */
|
| typedef struct
|
| {
|
| MV_U32 rxGenFecEn;
|
| MV_U32 txGenFecEn;
|
| MV_U32 txMacFecEn[EPON_MAX_NUM_OF_MAC];
|
| }S_EponIoctlFec;
|
|
|
| /* Encryption */
|
| typedef struct
|
| {
|
| MV_U32 macId;
|
| MV_U32 encEnable;
|
| MV_U32 encKey;
|
| MV_U32 encKeyIndex;
|
| }S_EponIoctlEnc;
|
|
|
| /* OAM Transmission */
|
| typedef struct
|
| {
|
| MV_U32 length;
|
| MV_U8 data[EPON_API_MAX_OAM_FRAME_SIZE];
|
| }S_EponOamFrame;
|
|
|
| typedef struct
|
| {
|
| MV_U32 macId;
|
| S_EponOamFrame oamFrame;
|
| }S_EponIoctlOamTx;
|
|
|
| /* DBA */
|
| typedef struct
|
| {
|
| MV_U8 state; /* Is threshold configuration active for the queue */
|
| MV_U16 threshold; /* Queue threshold: range 0 - 65535 */
|
| }S_EponDbaThreshold;
|
|
|
| typedef struct
|
| {
|
| MV_U32 numOfQueueSets;
|
| MV_U32 numOfQueues;
|
| MV_U32 aggrThreshold;
|
| S_EponDbaThreshold threshold[EPON_MAX_QUEUE_SET_NUMBER][EPON_MAX_THRESHOLD_SET_RER_QUEUE];
|
| }S_EponIoctlDbaLlid;
|
|
|
| typedef struct
|
| {
|
| MV_U8 validLlid[EPON_MAX_NUM_OF_MAC];
|
| S_EponIoctlDbaLlid dbaLlid[EPON_MAX_NUM_OF_MAC];
|
| }S_EponIoctlDba;
|
|
|
| /* Holdover */
|
| typedef struct
|
| {
|
| MV_U32 holdoverState; /* 0 - Deactivate, 1 - Activate */
|
| MV_U32 holdoverTime;
|
| }S_EponIoctlHoldOver;
|
|
|
| typedef struct
|
| {
|
| uint16_t optical_los_time;
|
| uint16_t mac_los_time;
|
| } S_EponIoctlLosTime;
|
|
|
| typedef struct
|
| {
|
| uint16_t action;
|
| uint16_t time;
|
| } S_EponIoctlTxControl;
|
|
|
| typedef struct
|
| {
|
| uint8_t earlyWakeUp;
|
| uint64_t maxSleepDuration;
|
| } S_EponIoctlPowerSaving;
|
|
|
| typedef struct
|
| {
|
| uint8_t action;
|
| uint8_t sleepMode;
|
| uint32_t sleepDuration;
|
| uint32_t waitDuration;
|
| } S_EponIoctlControlSleep;
|
|
|
| /* Silence */
|
| typedef struct
|
| {
|
| MV_U32 silenceState; /* 0 - Deactivate, 1 - Activate */
|
| }S_EponIoctlSilence;
|
|
|
| typedef struct
|
| {
|
| uint32_t tdmQueCnt[EPON_MAX_NUM_OF_MAC][EPON_MAX_NUM_OF_QUEUE];
|
| }S_EponIoctlTdmQueue;
|
| |
| /* Rogue ONU */ |
| typedef struct |
| { |
| uint32_t macId; |
| uint32_t enable; |
| }S_EponIoctlRogueOnu; |
|
|
| typedef struct
|
| {
|
| S_EponIoctlInit init;
|
| S_EponIoctlInfo e_info;
|
| S_EponIoctlPm e_pm;
|
| S_EponIoctlFec fec;
|
| S_EponIoctlEnc enc;
|
| S_EponIoctlDba dba;
|
| S_EponIoctlHoldOver holdover;
|
| S_EponIoctlSilence silence;
|
| S_EponIoctlTdmQueue tdmQueue;
|
| S_EponIoctlRogueOnu rogueOnu; |
| struct cdev cdev;
|
| }S_EponModuleCdev;
|
|
|
| /* Global variables
|
| ------------------------------------------------------------------------------*/
|
|
|
| /* Global functions
|
| ------------------------------------------------------------------------------*/
|
|
|
| MV_STATUS onuEponMngInterfaceCreate(void);
|
| MV_STATUS onuEponMngInterfaceRelease(void);
|
| void onuEponMiNotifyCallback(MV_U32 onuState);
|
|
|
| MV_STATUS onuEponMiLosTimeConfig(S_EponIoctlLosTime *ioctlLosTime);
|
| MV_STATUS onuEponMiTxPowerControlConfig(S_EponIoctlTxControl *ioctlTxControl);
|
| MV_STATUS onuEponMiPowerSavingConfig(S_EponIoctlPowerSaving *ioctlPowerSaving);
|
| MV_STATUS onuEponMiControlSleepConfig(S_EponIoctlControlSleep *ioctlControlSleep);
|
|
|
| MV_STATUS mvP2PStart(void);
|
| MV_STATUS mvP2PStop(void);
|
| /* Macros
|
| ------------------------------------------------------------------------------*/
|
|
|
| #endif /* _ONU_EPON_LINUX_KS_MNG_INTERFACE_H */
|
|
|
|
|
|
|