aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h')
-rw-r--r--target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h328
1 files changed, 328 insertions, 0 deletions
diff --git a/target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h b/target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h
new file mode 100644
index 0000000000..dff61769df
--- /dev/null
+++ b/target/linux/mediatek/files-5.10/drivers/net/phy/rtk/rtl8367c/include/trunk.h
@@ -0,0 +1,328 @@
+/*
+ * Copyright (C) 2013 Realtek Semiconductor Corp.
+ * All Rights Reserved.
+ *
+ * Unless you and Realtek execute a separate written software license
+ * agreement governing use of this software, this software is licensed
+ * to you under the terms of the GNU General Public License version 2,
+ * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
+ *
+ * Purpose : RTL8367/RTL8367C switch high-level API
+ *
+ * Feature : The file includes Trunk module high-layer TRUNK defination
+ *
+ */
+
+#ifndef __RTK_API_TRUNK_H__
+#define __RTK_API_TRUNK_H__
+
+/*
+ * Data Type Declaration
+ */
+#define RTK_TRUNK_DPORT_HASH_MASK 0x40
+#define RTK_TRUNK_SPORT_HASH_MASK 0x20
+#define RTK_TRUNK_DIP_HASH_MASK 0x10
+#define RTK_TRUNK_SIP_HASH_MASK 0x8
+#define RTK_TRUNK_DMAC_HASH_MASK 0x4
+#define RTK_TRUNK_SMAC_HASH_MASK 0x2
+#define RTK_TRUNK_SPA_HASH_MASK 0x1
+
+
+#define RTK_MAX_NUM_OF_TRUNK_HASH_VAL 16
+
+typedef struct rtk_trunk_hashVal2Port_s
+{
+ rtk_uint8 value[RTK_MAX_NUM_OF_TRUNK_HASH_VAL];
+} rtk_trunk_hashVal2Port_t;
+
+typedef enum rtk_trunk_group_e
+{
+ TRUNK_GROUP0 = 0,
+ TRUNK_GROUP1,
+ TRUNK_GROUP2,
+ TRUNK_GROUP3,
+ TRUNK_GROUP_END
+} rtk_trunk_group_t;
+
+typedef enum rtk_trunk_separateType_e
+{
+ SEPARATE_NONE = 0,
+ SEPARATE_FLOOD,
+ SEPARATE_END
+
+} rtk_trunk_separateType_t;
+
+typedef enum rtk_trunk_mode_e
+{
+ TRUNK_MODE_NORMAL = 0,
+ TRUNK_MODE_DUMB,
+ TRUNK_MODE_END
+} rtk_trunk_mode_t;
+
+/* Function Name:
+ * rtk_trunk_port_set
+ * Description:
+ * Set trunking group available port mask
+ * Input:
+ * trk_gid - trunk group id
+ * pTrunk_member_portmask - Logic trunking member port mask
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK - OK
+ * RT_ERR_FAILED - Failed
+ * RT_ERR_SMI - SMI access error
+ * RT_ERR_LA_TRUNK_ID - Invalid trunking group
+ * RT_ERR_PORT_MASK - Invalid portmask.
+ * Note:
+ * The API can set port trunking group port mask. Each port trunking group has max 4 ports.
+ * If enabled port mask has less than 2 ports available setting, then this trunking group function is disabled.
+ */
+extern rtk_api_ret_t rtk_trunk_port_set(rtk_trunk_group_t trk_gid, rtk_portmask_t *pTrunk_member_portmask);
+
+/* Function Name:
+ * rtk_trunk_port_get
+ * Description:
+ * Get trunking group available port mask
+ * Input:
+ * trk_gid - trunk group id
+ * Output:
+ * pTrunk_member_portmask - Logic trunking member port mask
+ * Return:
+ * RT_ERR_OK - OK
+ * RT_ERR_FAILED - Failed
+ * RT_ERR_SMI - SMI access error
+ * RT_ERR_LA_TRUNK_ID - Invalid trunking group
+ * Note:
+ * The API can get 2 port trunking group.
+ */
+extern rtk_api_ret_t rtk_trunk_port_get(rtk_trunk_group_t trk_gid, rtk_portmask_t *pTrunk_member_portmask);
+
+/* Function Name:
+ * rtk_trunk_distributionAlgorithm_set
+ * Description:
+ * Set port trunking hash select sources
+ * Input:
+ * trk_gid - trunk group id
+ * algo_bitmask - Bitmask of the distribution algorithm
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK - OK
+ * RT_ERR_FAILED - Failed
+ * RT_ERR_SMI - SMI access error
+ * RT_ERR_LA_TRUNK_ID - Invalid trunking group
+ * RT_ERR_LA_HASHMASK - Hash algorithm selection error.
+ * RT_ERR_PORT_MASK - Invalid portmask.
+ * Note:
+ * The API can set port trunking hash algorithm sources.
+ * 7 bits mask for link aggregation group0 hash parameter selection {DIP, SIP, DMAC, SMAC, SPA}
+ * - 0b0000001: SPA
+ * - 0b0000010: SMAC
+ * - 0b0000100: DMAC
+ * - 0b0001000: SIP
+ * - 0b0010000: DIP
+ * - 0b0100000: TCP/UDP Source Port
+ * - 0b1000000: TCP/UDP Destination Port
+ * Example:
+ * - 0b0000011: SMAC & SPA
+ * - Note that it could be an arbitrary combination or independent set
+ */
+extern rtk_api_ret_t rtk_trunk_distributionAlgorithm_set(rtk_trunk_group_t trk_gid, rtk_uint32 algo_bitmask);
+
+/* Function Name:
+ * rtk_trunk_distributionAlgorithm_get
+ * Description:
+ * Get port trunking hash select sources
+ * Input:
+ * trk_gid - trunk group id
+ * Output:
+ * pAlgo_bitmask - Bitmask of the distribution algorithm
+ * Return:
+ * RT_ERR_OK - OK
+ * RT_ERR_FAILED - Failed
+ * RT_ERR_SMI - SMI access error
+ * RT_ERR_LA_TRUNK_ID - Invalid trunking group
+ * Note:
+ * The API can get port trunking hash algorithm sources.
+ */
+extern rtk_api_ret_t rtk_trunk_distributionAlgorithm_get(rtk_trunk_group_t trk_gid, rtk_uint32 *pAlgo_bitmask);
+
+/* Function Name:
+ * rtk_trunk_trafficSeparate_set
+ * Description:
+ * Set the traffic separation setting of a trunk group from the specified device.
+ * Input:
+ * trk_gid - trunk group id
+ * separateType - traffic separation setting
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_UNIT_ID - invalid unit id
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * RT_ERR_LA_HASHMASK - invalid hash mask
+ * Note:
+ * SEPARATE_NONE: disable traffic separation
+ * SEPARATE_FLOOD: trunk MSB link up port is dedicated to TX flooding (L2 lookup miss) traffic
+ */
+extern rtk_api_ret_t rtk_trunk_trafficSeparate_set(rtk_trunk_group_t trk_gid, rtk_trunk_separateType_t separateType);
+
+/* Function Name:
+ * rtk_trunk_trafficSeparate_get
+ * Description:
+ * Get the traffic separation setting of a trunk group from the specified device.
+ * Input:
+ * trk_gid - trunk group id
+ * Output:
+ * pSeparateType - pointer separated traffic type
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_UNIT_ID - invalid unit id
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * Note:
+ * SEPARATE_NONE: disable traffic separation
+ * SEPARATE_FLOOD: trunk MSB link up port is dedicated to TX flooding (L2 lookup miss) traffic
+ */
+extern rtk_api_ret_t rtk_trunk_trafficSeparate_get(rtk_trunk_group_t trk_gid, rtk_trunk_separateType_t *pSeparateType);
+
+
+/* Function Name:
+ * rtk_trunk_mode_set
+ * Description:
+ * Set the trunk mode to the specified device.
+ * Input:
+ * mode - trunk mode
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_INPUT - invalid input parameter
+ * Note:
+ * The enum of the trunk mode as following
+ * - TRUNK_MODE_NORMAL
+ * - TRUNK_MODE_DUMB
+ */
+extern rtk_api_ret_t rtk_trunk_mode_set(rtk_trunk_mode_t mode);
+
+/* Function Name:
+ * rtk_trunk_mode_get
+ * Description:
+ * Get the trunk mode from the specified device.
+ * Input:
+ * None
+ * Output:
+ * pMode - pointer buffer of trunk mode
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * Note:
+ * The enum of the trunk mode as following
+ * - TRUNK_MODE_NORMAL
+ * - TRUNK_MODE_DUMB
+ */
+extern rtk_api_ret_t rtk_trunk_mode_get(rtk_trunk_mode_t *pMode);
+
+/* Function Name:
+ * rtk_trunk_trafficPause_set
+ * Description:
+ * Set the traffic pause setting of a trunk group.
+ * Input:
+ * trk_gid - trunk group id
+ * enable - traffic pause state
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * Note:
+ * None.
+ */
+extern rtk_api_ret_t rtk_trunk_trafficPause_set(rtk_trunk_group_t trk_gid, rtk_enable_t enable);
+
+/* Function Name:
+ * rtk_trunk_trafficPause_get
+ * Description:
+ * Get the traffic pause setting of a trunk group.
+ * Input:
+ * trk_gid - trunk group id
+ * Output:
+ * pEnable - pointer of traffic pause state.
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * Note:
+ * None.
+ */
+extern rtk_api_ret_t rtk_trunk_trafficPause_get(rtk_trunk_group_t trk_gid, rtk_enable_t *pEnable);
+
+/* Function Name:
+ * rtk_trunk_hashMappingTable_set
+ * Description:
+ * Set hash value to port array in the trunk group id from the specified device.
+ * Input:
+ * trk_gid - trunk group id
+ * pHash2Port_array - ports associate with the hash value
+ * Output:
+ * None
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_UNIT_ID - invalid unit id
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * RT_ERR_LA_TRUNK_NOT_EXIST - the trunk doesn't exist
+ * RT_ERR_LA_NOT_MEMBER_PORT - the port is not a member port of the trunk
+ * RT_ERR_LA_CPUPORT - CPU port can not be aggregated port
+ * Note:
+ * Trunk group 0 & 1 shares the same hash mapping table.
+ * Trunk group 2 uses a independent table.
+ */
+extern rtk_api_ret_t rtk_trunk_hashMappingTable_set(rtk_trunk_group_t trk_gid, rtk_trunk_hashVal2Port_t *pHash2Port_array);
+
+/* Function Name:
+ * rtk_trunk_hashMappingTable_get
+ * Description:
+ * Get hash value to port array in the trunk group id from the specified device.
+ * Input:
+ * trk_gid - trunk group id
+ * Output:
+ * pHash2Port_array - pointer buffer of ports associate with the hash value
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_UNIT_ID - invalid unit id
+ * RT_ERR_LA_TRUNK_ID - invalid trunk ID
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * Note:
+ * Trunk group 0 & 1 shares the same hash mapping table.
+ * Trunk group 2 uses a independent table.
+ */
+extern rtk_api_ret_t rtk_trunk_hashMappingTable_get(rtk_trunk_group_t trk_gid, rtk_trunk_hashVal2Port_t *pHash2Port_array);
+
+/* Function Name:
+ * rtk_trunk_portQueueEmpty_get
+ * Description:
+ * Get the port mask which all queues are empty.
+ * Input:
+ * None.
+ * Output:
+ * pEmpty_portmask - pointer empty port mask
+ * Return:
+ * RT_ERR_OK
+ * RT_ERR_FAILED
+ * RT_ERR_NULL_POINTER - input parameter may be null pointer
+ * Note:
+ * None.
+ */
+extern rtk_api_ret_t rtk_trunk_portQueueEmpty_get(rtk_portmask_t *pEmpty_portmask);
+
+#endif /* __RTK_API_TRUNK_H__ */