blob: 4d7d84ffafd96ca400b4ad674977dd000964b404 [file] [log] [blame]
/*
* Copyright (c) 2012, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* @defgroup fal_cosmap FAL_COSMAP
* @{
*/
#include "sw.h"
#include "fal_cosmap.h"
#include "hsl_api.h"
#ifndef IN_COSMAP_MINI
static sw_error_t
_fal_cosmap_dscp_to_pri_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_pri_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_pri_set(dev_id, dscp, pri);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_pri_get(a_uint32_t dev_id, a_uint32_t dscp,
a_uint32_t * pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_pri_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_pri_get(dev_id, dscp, pri);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_dp_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_dp_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_dp_set(dev_id, dscp, dp);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_dp_get(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t * dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_dp_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_dp_get(dev_id, dscp, dp);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_pri_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_pri_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_pri_set(dev_id, up, pri);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_pri_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_pri_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_pri_get(dev_id, up, pri);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_dp_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_dp_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_dp_set(dev_id, up, dp);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_dp_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_dp_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_dp_get(dev_id, up, dp);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_ehpri_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_ehpri_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_ehpri_set(dev_id, dscp, pri);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_ehpri_get(a_uint32_t dev_id, a_uint32_t dscp,
a_uint32_t * pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_ehpri_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_ehpri_get(dev_id, dscp, pri);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_ehdp_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_ehdp_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_ehdp_set(dev_id, dscp, dp);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_to_ehdp_get(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t * dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_dscp_to_ehdp_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_to_ehdp_get(dev_id, dscp, dp);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_ehpri_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_ehpri_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_ehpri_set(dev_id, up, pri);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_ehpri_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * pri)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_ehpri_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_ehpri_get(dev_id, up, pri);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_ehdp_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_ehdp_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_ehdp_set(dev_id, up, dp);
return rv;
}
static sw_error_t
_fal_cosmap_up_to_ehdp_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * dp)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_up_to_ehdp_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_to_ehdp_get(dev_id, up, dp);
return rv;
}
#endif
static sw_error_t
_fal_cosmap_pri_to_queue_set(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t queue)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_pri_to_queue_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_pri_to_queue_set(dev_id, pri, queue);
return rv;
}
static sw_error_t
_fal_cosmap_pri_to_ehqueue_set(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t queue)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_pri_to_ehqueue_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_pri_to_ehqueue_set(dev_id, pri, queue);
return rv;
}
#ifndef IN_COSMAP_MINI
static sw_error_t
_fal_cosmap_pri_to_queue_get(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t * queue)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_pri_to_queue_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_pri_to_queue_get(dev_id, pri, queue);
return rv;
}
static sw_error_t
_fal_cosmap_pri_to_ehqueue_get(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t * queue)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_pri_to_ehqueue_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_pri_to_ehqueue_get(dev_id, pri, queue);
return rv;
}
static sw_error_t
_fal_cosmap_egress_remark_set(a_uint32_t dev_id, a_uint32_t tbl_id,
fal_egress_remark_table_t * tbl)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_egress_remark_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_egress_remark_set(dev_id, tbl_id, tbl);
return rv;
}
static sw_error_t
_fal_cosmap_egress_remark_get(a_uint32_t dev_id, a_uint32_t tbl_id,
fal_egress_remark_table_t * tbl)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->cosmap_egress_remark_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_egress_remark_get(dev_id, tbl_id, tbl);
return rv;
}
/**
* @brief Set dscp to internal priority mapping on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[in] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_pri_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_pri_set(dev_id, dscp, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dscp to internal priority mapping on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[out] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_pri_get(a_uint32_t dev_id, a_uint32_t dscp,
a_uint32_t * pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_pri_get(dev_id, dscp, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dscp to internal drop precedence mapping on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_dp_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_dp_set(dev_id, dscp, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dscp to internal drop precedence mapping on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[out] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_dp_get(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t * dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_dp_get(dev_id, dscp, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dot1p to internal priority mapping on one particular device.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_pri_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_pri_set(dev_id, up, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dot1p to internal priority mapping on one particular device.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[out] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_pri_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_pri_get(dev_id, up, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dot1p to internal drop precedence mapping on one particular device.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_dp_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_dp_set(dev_id, up, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dot1p to internal drop precedence mapping on one particular device.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_dp_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_dp_get(dev_id, up, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dscp to internal priority mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[in] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_ehpri_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_ehpri_set(dev_id, dscp, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dscp to internal priority mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[out] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_ehpri_get(a_uint32_t dev_id, a_uint32_t dscp,
a_uint32_t * pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_ehpri_get(dev_id, dscp, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dscp to internal drop precedence mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_ehdp_set(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_ehdp_set(dev_id, dscp, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dscp to internal drop precedence mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[out] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_to_ehdp_get(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t * dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_to_ehdp_get(dev_id, dscp, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dot1p to internal priority mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_ehpri_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_ehpri_set(dev_id, up, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dot1p to internal priority mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[out] pri internal priority
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_ehpri_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_ehpri_get(dev_id, up, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set dot1p to internal drop precedence mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_ehdp_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_ehdp_set(dev_id, up, dp);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get dot1p to internal drop precedence mapping on one particular device for WAN port.
* @param[in] dev_id device id
* @param[in] up dot1p
* @param[in] dp internal drop precedence
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_to_ehdp_get(a_uint32_t dev_id, a_uint32_t up, a_uint32_t * dp)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_to_ehdp_get(dev_id, up, dp);
FAL_API_UNLOCK;
return rv;
}
#endif
/**
* @brief Set internal priority to queue mapping on one particular device.
* @details Comments:
* This function is for port 1/2/3/4 which have four egress queues
* @param[in] dev_id device id
* @param[in] pri internal priority
* @param[in] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_pri_to_queue_set(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_pri_to_queue_set(dev_id, pri, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set internal priority to queue mapping on one particular device.
* @details Comments:
* This function is for port 0/5/6 which have six egress queues
* @param[in] dev_id device id
* @param[in] pri internal priority
* @param[in] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_pri_to_ehqueue_set(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_pri_to_ehqueue_set(dev_id, pri, queue);
FAL_API_UNLOCK;
return rv;
}
#ifndef IN_COSMAP_MINI
/**
* @brief Get internal priority to queue mapping on one particular device.
* @details Comments:
* This function is for port 1/2/3/4 which have four egress queues
* @param[in] dev_id device id
* @param[in] pri internal priority
* @param[out] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_pri_to_queue_get(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t * queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_pri_to_queue_get(dev_id, pri, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get internal priority to queue mapping on one particular device.
* @details Comments:
* This function is for port 0/5/6 which have six egress queues
* @param[in] dev_id device id
* @param[in] pri internal priority
* @param[in] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_pri_to_ehqueue_get(a_uint32_t dev_id, a_uint32_t pri,
a_uint32_t * queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_pri_to_ehqueue_get(dev_id, pri, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set egress queue based CoS remap table on one particular device.
* @param[in] dev_id device id
* @param[in] tbl_id CoS remap table id
* @param[in] tbl CoS remap table
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_egress_remark_set(a_uint32_t dev_id, a_uint32_t tbl_id,
fal_egress_remark_table_t * tbl)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_egress_remark_set(dev_id, tbl_id, tbl);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get egress queue based CoS remap table on one particular device.
* @param[in] dev_id device id
* @param[in] tbl_id CoS remap table id
* @param[out] tbl CoS remap table
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_egress_remark_get(a_uint32_t dev_id, a_uint32_t tbl_id,
fal_egress_remark_table_t * tbl)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_egress_remark_get(dev_id, tbl_id, tbl);
FAL_API_UNLOCK;
return rv;
}
#endif
/**
* @}
*/