2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-08 15:13:58 +0800 (¶g¤T, 08 ¤T¤ë 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : Flow control related functions
18 #ifndef _RTL8367C_ASICDRV_FC_H_
19 #define _RTL8367C_ASICDRV_FC_H_
21 #include <rtl8367c_asicdrv.h>
23 #define RTL8367C_PAGE_NUMBER 0x600
26 enum FLOW_CONTROL_TYPE
43 extern ret_t
rtl8367c_setAsicFlowControlSelect(rtk_uint32 select
);
44 extern ret_t
rtl8367c_getAsicFlowControlSelect(rtk_uint32
*pSelect
);
45 extern ret_t
rtl8367c_setAsicFlowControlJumboMode(rtk_uint32 enabled
);
46 extern ret_t
rtl8367c_getAsicFlowControlJumboMode(rtk_uint32
* pEnabled
);
47 extern ret_t
rtl8367c_setAsicFlowControlJumboModeSize(rtk_uint32 size
);
48 extern ret_t
rtl8367c_getAsicFlowControlJumboModeSize(rtk_uint32
* pSize
);
49 extern ret_t
rtl8367c_setAsicFlowControlQueueEgressEnable(rtk_uint32 port
, rtk_uint32 qid
, rtk_uint32 enabled
);
50 extern ret_t
rtl8367c_getAsicFlowControlQueueEgressEnable(rtk_uint32 port
, rtk_uint32 qid
, rtk_uint32
* pEnabled
);
51 extern ret_t
rtl8367c_setAsicFlowControlDropAll(rtk_uint32 dropall
);
52 extern ret_t
rtl8367c_getAsicFlowControlDropAll(rtk_uint32
* pDropall
);
53 extern ret_t
rtl8367c_setAsicFlowControlPauseAllThreshold(rtk_uint32 threshold
);
54 extern ret_t
rtl8367c_getAsicFlowControlPauseAllThreshold(rtk_uint32
*pThreshold
);
55 extern ret_t
rtl8367c_setAsicFlowControlSystemThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
56 extern ret_t
rtl8367c_getAsicFlowControlSystemThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
57 extern ret_t
rtl8367c_setAsicFlowControlSharedThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
58 extern ret_t
rtl8367c_getAsicFlowControlSharedThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
59 extern ret_t
rtl8367c_setAsicFlowControlPortThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
60 extern ret_t
rtl8367c_getAsicFlowControlPortThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
61 extern ret_t
rtl8367c_setAsicFlowControlPortPrivateThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
62 extern ret_t
rtl8367c_getAsicFlowControlPortPrivateThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
63 extern ret_t
rtl8367c_setAsicFlowControlSystemDropThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
64 extern ret_t
rtl8367c_getAsicFlowControlSystemDropThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
65 extern ret_t
rtl8367c_setAsicFlowControlSharedDropThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
66 extern ret_t
rtl8367c_getAsicFlowControlSharedDropThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
67 extern ret_t
rtl8367c_setAsicFlowControlPortDropThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
68 extern ret_t
rtl8367c_getAsicFlowControlPortDropThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
69 extern ret_t
rtl8367c_setAsicFlowControlPortPrivateDropThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
70 extern ret_t
rtl8367c_getAsicFlowControlPortPrivateDropThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
71 extern ret_t
rtl8367c_setAsicFlowControlSystemJumboThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
72 extern ret_t
rtl8367c_getAsicFlowControlSystemJumboThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
73 extern ret_t
rtl8367c_setAsicFlowControlSharedJumboThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
74 extern ret_t
rtl8367c_getAsicFlowControlSharedJumboThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
75 extern ret_t
rtl8367c_setAsicFlowControlPortJumboThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
76 extern ret_t
rtl8367c_getAsicFlowControlPortJumboThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
77 extern ret_t
rtl8367c_setAsicFlowControlPortPrivateJumboThreshold(rtk_uint32 onThreshold
, rtk_uint32 offThreshold
);
78 extern ret_t
rtl8367c_getAsicFlowControlPortPrivateJumboThreshold(rtk_uint32
*pOnThreshold
, rtk_uint32
*pOffThreshold
);
80 extern ret_t
rtl8367c_setAsicEgressFlowControlPortDropGap(rtk_uint32 gap
);
81 extern ret_t
rtl8367c_getAsicEgressFlowControlPortDropGap(rtk_uint32
*pGap
);
82 extern ret_t
rtl8367c_setAsicEgressFlowControlQueueDropGap(rtk_uint32 gap
);
83 extern ret_t
rtl8367c_getAsicEgressFlowControlQueueDropGap(rtk_uint32
*pGap
);
84 extern ret_t
rtl8367c_setAsicEgressFlowControlPortDropThreshold(rtk_uint32 port
, rtk_uint32 threshold
);
85 extern ret_t
rtl8367c_getAsicEgressFlowControlPortDropThreshold(rtk_uint32 port
, rtk_uint32
*pThreshold
);
86 extern ret_t
rtl8367c_setAsicEgressFlowControlQueueDropThreshold(rtk_uint32 qid
, rtk_uint32 threshold
);
87 extern ret_t
rtl8367c_getAsicEgressFlowControlQueueDropThreshold(rtk_uint32 qid
, rtk_uint32
*pThreshold
);
88 extern ret_t
rtl8367c_getAsicEgressQueueEmptyPortMask(rtk_uint32
*pPortmask
);
89 extern ret_t
rtl8367c_getAsicTotalPage(rtk_uint32
*pPageCount
);
90 extern ret_t
rtl8367c_getAsicPulbicPage(rtk_uint32
*pPageCount
);
91 extern ret_t
rtl8367c_getAsicMaxTotalPage(rtk_uint32
*pPageCount
);
92 extern ret_t
rtl8367c_getAsicMaxPulbicPage(rtk_uint32
*pPageCount
);
93 extern ret_t
rtl8367c_getAsicPortPage(rtk_uint32 port
, rtk_uint32
*pPageCount
);
94 extern ret_t
rtl8367c_getAsicPortPageMax(rtk_uint32 port
, rtk_uint32
*pPageCount
);
95 extern ret_t
rtl8367c_setAsicFlowControlEgressPortIndep(rtk_uint32 port
, rtk_uint32 enable
);
96 extern ret_t
rtl8367c_getAsicFlowControlEgressPortIndep(rtk_uint32 port
, rtk_uint32
*pEnable
);
98 #endif /*_RTL8367C_ASICDRV_FC_H_*/