blob: fcb8dc7601d2ceca30ad53cdad68116dddab5d54 [file] [log] [blame]
/*
* Copyright (c) 2012, 2017, 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_qos FAL_QOS
* @{
*/
#include "sw.h"
#include "fal_qos.h"
#include "hsl_api.h"
#include "adpt.h"
#ifndef IN_QOS_MINI
static sw_error_t
_fal_qos_sch_mode_set(a_uint32_t dev_id,
fal_sch_mode_t mode, const a_uint32_t weight[])
{
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->qos_sch_mode_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_sch_mode_set(dev_id, mode, weight);
return rv;
}
static sw_error_t
_fal_qos_sch_mode_get(a_uint32_t dev_id,
fal_sch_mode_t * mode, a_uint32_t weight[])
{
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->qos_sch_mode_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_sch_mode_get(dev_id, mode, weight);
return rv;
}
static sw_error_t
_fal_qos_queue_tx_buf_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
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->qos_queue_tx_buf_status_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_tx_buf_status_set(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_queue_tx_buf_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable)
{
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->qos_queue_tx_buf_status_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_tx_buf_status_get(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_queue_tx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * number)
{
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->qos_queue_tx_buf_nr_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_tx_buf_nr_get(dev_id, port_id, queue_id, number);
return rv;
}
static sw_error_t
_fal_qos_port_tx_buf_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
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->qos_port_tx_buf_status_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_tx_buf_status_set(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_tx_buf_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable)
{
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->qos_port_tx_buf_status_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_tx_buf_status_get(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_red_en_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
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->qos_port_red_en_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_red_en_get(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_tx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
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->qos_port_tx_buf_nr_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_tx_buf_nr_get(dev_id, port_id, number);
return rv;
}
static sw_error_t
_fal_qos_port_rx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
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->qos_port_rx_buf_nr_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_rx_buf_nr_get(dev_id, port_id, number);
return rv;
}
static sw_error_t
_fal_cosmap_up_queue_set(a_uint32_t dev_id, a_uint32_t up, fal_queue_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_up_queue_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_queue_set(dev_id, up, queue);
return rv;
}
static sw_error_t
_fal_cosmap_up_queue_get(a_uint32_t dev_id, a_uint32_t up,
fal_queue_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_up_queue_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_up_queue_get(dev_id, up, queue);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_queue_set(a_uint32_t dev_id, a_uint32_t dscp, fal_queue_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_dscp_queue_set)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_queue_set(dev_id, dscp, queue);
return rv;
}
static sw_error_t
_fal_cosmap_dscp_queue_get(a_uint32_t dev_id, a_uint32_t dscp,
fal_queue_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_dscp_queue_get)
return SW_NOT_SUPPORTED;
rv = p_api->cosmap_dscp_queue_get(dev_id, dscp, queue);
return rv;
}
#endif
static sw_error_t
_fal_qos_port_red_en_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
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->qos_port_red_en_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_red_en_set(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_queue_tx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * number)
{
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->qos_queue_tx_buf_nr_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_tx_buf_nr_set(dev_id, port_id, queue_id, number);
return rv;
}
static sw_error_t
_fal_qos_port_rx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
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->qos_port_rx_buf_nr_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_rx_buf_nr_set(dev_id, port_id, number);
return rv;
}
static sw_error_t
_fal_qos_port_tx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
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->qos_port_tx_buf_nr_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_tx_buf_nr_set(dev_id, port_id, number);
return rv;
}
static sw_error_t
_fal_qos_port_mode_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_bool_t enable)
{
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->qos_port_mode_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_mode_set(dev_id, port_id, mode, enable);
return rv;
}
#ifndef IN_QOS_MINI
static sw_error_t
_fal_qos_port_mode_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_bool_t * enable)
{
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->qos_port_mode_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_mode_get(dev_id, port_id, mode, enable);
return rv;
}
static sw_error_t
_fal_qos_port_mode_pri_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_uint32_t pri)
{
sw_error_t rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_qos_port_mode_pri_set)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_qos_port_mode_pri_set(dev_id, port_id, mode, pri);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->qos_port_mode_pri_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_mode_pri_set(dev_id, port_id, mode, pri);
return rv;
}
static sw_error_t
_fal_qos_port_mode_pri_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_uint32_t * pri)
{
sw_error_t rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_qos_port_mode_pri_get)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_qos_port_mode_pri_get(dev_id, port_id, mode, pri);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->qos_port_mode_pri_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_mode_pri_get(dev_id, port_id, mode, pri);
return rv;
}
static sw_error_t
_fal_qos_port_default_up_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t up)
{
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->qos_port_default_up_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_up_set(dev_id, port_id, up);
return rv;
}
static sw_error_t
_fal_qos_port_default_up_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * up)
{
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->qos_port_default_up_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_up_get(dev_id, port_id, up);
return rv;
}
static sw_error_t
_fal_qos_port_sch_mode_set(a_uint32_t dev_id, a_uint32_t port_id,
fal_sch_mode_t mode, const a_uint32_t weight[])
{
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->qos_port_sch_mode_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_sch_mode_set(dev_id, port_id, mode, weight);
return rv;
}
static sw_error_t
_fal_qos_port_sch_mode_get(a_uint32_t dev_id, a_uint32_t port_id,
fal_sch_mode_t * mode, a_uint32_t weight[])
{
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->qos_port_sch_mode_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_sch_mode_get(dev_id, port_id, mode, weight);
return rv;
}
static sw_error_t
_fal_qos_port_default_spri_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t spri)
{
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->qos_port_default_spri_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_spri_set(dev_id, port_id, spri);
return rv;
}
static sw_error_t
_fal_qos_port_default_spri_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * spri)
{
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->qos_port_default_spri_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_spri_get(dev_id, port_id, spri);
return rv;
}
static sw_error_t
_fal_qos_port_default_cpri_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t cpri)
{
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->qos_port_default_cpri_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_cpri_set(dev_id, port_id, cpri);
return rv;
}
static sw_error_t
_fal_qos_port_default_cpri_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * cpri)
{
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->qos_port_default_cpri_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_default_cpri_get(dev_id, port_id, cpri);
return rv;
}
static sw_error_t
_fal_qos_port_force_spri_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
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->qos_port_force_spri_status_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_force_spri_status_set(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_force_spri_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
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->qos_port_force_spri_status_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_force_spri_status_get(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_force_cpri_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
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->qos_port_force_cpri_status_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_force_cpri_status_set(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_port_force_cpri_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
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->qos_port_force_cpri_status_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_port_force_cpri_status_get(dev_id, port_id, enable);
return rv;
}
static sw_error_t
_fal_qos_queue_remark_table_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t tbl_id, a_bool_t enable)
{
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->qos_queue_remark_table_set)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_remark_table_set(dev_id, port_id, queue_id, tbl_id, enable);
return rv;
}
static sw_error_t
_fal_qos_queue_remark_table_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * tbl_id, a_bool_t * enable)
{
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->qos_queue_remark_table_get)
return SW_NOT_SUPPORTED;
rv = p_api->qos_queue_remark_table_get(dev_id, port_id, queue_id, tbl_id, enable);
return rv;
}
#endif
sw_error_t
_fal_qos_port_pri_precedence_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_pri_precedence_t *pri)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_pri_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_pri_set(dev_id, port_id, pri);
return rv;
}
sw_error_t
_fal_qos_port_pri_precedence_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_pri_precedence_t *pri)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_pri_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_pri_get(dev_id, port_id, pri);
return rv;
}
sw_error_t
_fal_qos_cosmap_pcp_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t pcp, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_pcp_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_pcp_get(dev_id, group_id, pcp, cosmap);
return rv;
}
sw_error_t
_fal_queue_scheduler_set(a_uint32_t dev_id,
a_uint32_t node_id, fal_queue_scheduler_level_t level,
fal_port_t port_id,
fal_qos_scheduler_cfg_t *scheduler_cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_queue_scheduler_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_queue_scheduler_set(dev_id, node_id,
level, port_id, scheduler_cfg);
return rv;
}
sw_error_t
_fal_queue_scheduler_get(a_uint32_t dev_id,
a_uint32_t node_id, fal_queue_scheduler_level_t level,
fal_port_t *port_id,
fal_qos_scheduler_cfg_t *scheduler_cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_queue_scheduler_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_queue_scheduler_get(dev_id, node_id,
level, port_id, scheduler_cfg);
return rv;
}
sw_error_t
_fal_qos_cosmap_pcp_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t pcp, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_pcp_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_pcp_set(dev_id, group_id, pcp, cosmap);
return rv;
}
sw_error_t
_fal_qos_port_remark_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_remark_enable_t *remark)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_remark_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_remark_get(dev_id, port_id, remark);
return rv;
}
sw_error_t
_fal_qos_cosmap_dscp_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t dscp, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_dscp_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_dscp_get(dev_id, group_id, dscp, cosmap);
return rv;
}
sw_error_t
_fal_qos_cosmap_flow_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint16_t flow, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_flow_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_flow_set(dev_id, group_id, flow, cosmap);
return rv;
}
sw_error_t
_fal_qos_port_group_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_group_t *group)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_group_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_group_set(dev_id, port_id, group);
return rv;
}
sw_error_t
_fal_edma_ring_queue_map_set(a_uint32_t dev_id,
a_uint32_t ring_id, fal_queue_bmp_t *queue_bmp)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ring_queue_map_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ring_queue_map_set(dev_id, ring_id, queue_bmp);
return rv;
}
sw_error_t
_fal_qos_cosmap_dscp_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t dscp, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_dscp_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_dscp_set(dev_id, group_id, dscp, cosmap);
return rv;
}
sw_error_t
_fal_qos_port_remark_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_remark_enable_t *remark)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_remark_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_remark_set(dev_id, port_id, remark);
return rv;
}
sw_error_t
_fal_qos_cosmap_flow_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint16_t flow, fal_qos_cosmap_t *cosmap)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_cosmap_flow_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_cosmap_flow_get(dev_id, group_id, flow, cosmap);
return rv;
}
sw_error_t
_fal_qos_port_group_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_group_t *group)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_qos_port_group_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_qos_port_group_get(dev_id, port_id, group);
return rv;
}
sw_error_t
_fal_edma_ring_queue_map_get(a_uint32_t dev_id,
a_uint32_t ring_id, fal_queue_bmp_t *queue_bmp)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ring_queue_map_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ring_queue_map_get(dev_id, ring_id, queue_bmp);
return rv;
}
sw_error_t
_fal_port_queues_get(a_uint32_t dev_id,
fal_port_t port_id, fal_queue_bmp_t *queue_bmp)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_port_queues_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_port_queues_get(dev_id, port_id, queue_bmp);
return rv;
}
sw_error_t
_fal_scheduler_dequeue_ctrl_set(
a_uint32_t dev_id,
a_uint32_t queue_id,
a_bool_t enable)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_scheduler_dequeue_ctrl_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_scheduler_dequeue_ctrl_set(dev_id, queue_id, enable);
return rv;
}
sw_error_t
_fal_scheduler_dequeue_ctrl_get(
a_uint32_t dev_id,
a_uint32_t queue_id,
a_bool_t *enable)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_scheduler_dequeue_ctrl_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_scheduler_dequeue_ctrl_get(dev_id, queue_id, enable);
return rv;
}
sw_error_t
_fal_port_scheduler_cfg_reset(
a_uint32_t dev_id,
fal_port_t port_id)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_port_scheduler_cfg_reset)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_port_scheduler_cfg_reset(dev_id, port_id);
return rv;
}
sw_error_t
_fal_port_scheduler_resource_get(
a_uint32_t dev_id,
fal_port_t port_id,
fal_portscheduler_resource_t *cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_port_scheduler_resource_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_port_scheduler_resource_get(dev_id, port_id, cfg);
return rv;
}
#ifndef IN_QOS_MINI
/*insert flag for inner fal, don't remove it*/
/**
* @brief Set traffic scheduling mode on particular one device.
* @details Comments:
* Particular device may only support parts of input options. Such as
* GARUDA doesn't support variable weight in wrr mode.
* When scheduling mode is sp the weight is meaningless usually it's zero
* @param[in] dev_id device id
* @param[in] fal_sch_mode_t traffic scheduling mode
* @param[in] weight[] weight value for each queue when in wrr mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_sch_mode_set(a_uint32_t dev_id,
fal_sch_mode_t mode, const a_uint32_t weight[])
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_sch_mode_set(dev_id, mode, weight);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get traffic scheduling mode on particular device.
* @param[in] dev_id device id
* @param[in] fal_sch_mode_t traffic scheduling mode
* @param[out] weight weight value for wrr mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_sch_mode_get(a_uint32_t dev_id,
fal_sch_mode_t * mode, a_uint32_t weight[])
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_sch_mode_get(dev_id, mode, weight);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set buffer aggsinment status of transmitting queue on one particular port.
* @details Comments:
* If enable queue tx buffer on one port that means each queue of this port
* will have fixed number buffers when transmitting packets. Otherwise they
* share the whole buffers with other queues in device.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_tx_buf_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_tx_buf_status_set(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get buffer aggsinment status of transmitting queue on particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_tx_buf_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_tx_buf_status_get(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get max occupied buffer number of transmitting queue on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] queue_id queue id
* @param[out] number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_tx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_tx_buf_nr_get(dev_id, port_id, queue_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set buffer aggsinment status of transmitting port on one particular port.
* @details Comments:
* If enable tx buffer on one port that means this port will have fixed
* number buffers when transmitting packets. Otherwise they will
* share the whole buffers with other ports in device.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_tx_buf_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_tx_buf_status_set(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get buffer aggsinment status of transmitting port on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_tx_buf_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_tx_buf_status_get(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set status of port red on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_red_en_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_red_en_get(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get max occupied buffer number of transmitting port on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_tx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_tx_buf_nr_get(dev_id, port_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get max reserved buffer number of receiving port on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_rx_buf_nr_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_rx_buf_nr_get(dev_id, port_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set user priority to queue mapping.
* @param[in] dev_id device id
* @param[in] up 802.1p
* @param[in] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_queue_set(a_uint32_t dev_id, a_uint32_t up, fal_queue_t queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_queue_set(dev_id, up, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get user priority to queue mapping.
* @param[in] dev_id device id
* @param[in] dot1p 802.1p
* @param[out] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_up_queue_get(a_uint32_t dev_id, a_uint32_t up,
fal_queue_t * queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_up_queue_get(dev_id, up, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set cos map dscp_2_queue item on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[in] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_queue_set(a_uint32_t dev_id, a_uint32_t dscp, fal_queue_t queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_queue_set(dev_id, dscp, queue);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get cos map dscp_2_queue item on one particular device.
* @param[in] dev_id device id
* @param[in] dscp dscp
* @param[out] queue queue id
* @return SW_OK or error code
*/
sw_error_t
fal_cosmap_dscp_queue_get(a_uint32_t dev_id, a_uint32_t dscp,
fal_queue_t * queue)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_cosmap_dscp_queue_get(dev_id, dscp, queue);
FAL_API_UNLOCK;
return rv;
}
#endif
/**
* @brief Set max occupied buffer number of transmitting queue on one particular port.
* @details Comments:
* Because different device has differnet hardware granularity
* function will return actual buffer numbers in hardware.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] queue_id queue id
* @param number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_tx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_tx_buf_nr_set(dev_id, port_id, queue_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set status of port red on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_red_en_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_red_en_set(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set max occupied buffer number of transmitting port on one particular port.
* @details Comments:
* Because different device has differnet hardware granularity
* function will return actual buffer number in hardware.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_tx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_tx_buf_nr_set(dev_id, port_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set max reserved buffer number of receiving port on one particular port.
* @details Comments:
* Because different device has differnet hardware granularity
* function will return actual buffer number in hardware.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param number buffer number
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_rx_buf_nr_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * number)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_rx_buf_nr_set(dev_id, port_id, number);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set port qos mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode qos mode
* @param[in] enable A_TRUE of A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_mode_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_mode_set(dev_id, port_id, mode, enable);
FAL_API_UNLOCK;
return rv;
}
#ifndef IN_QOS_MINI
/**
* @brief Get port qos mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode qos mode
* @param[out] enable A_TRUE of A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_mode_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_bool_t * enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_mode_get(dev_id, port_id, mode, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set priority of one particular qos mode on one particular port.
* @details Comments:
* If the priority of a mode is more small then the priority is more high.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode qos mode
* @param[in] pri priority of one particular qos mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_mode_pri_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_uint32_t pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_mode_pri_set(dev_id, port_id, mode, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get priority of one particular qos mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode qos mode
* @param[out] pri priority of one particular qos mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_mode_pri_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_mode_t mode, a_uint32_t * pri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_mode_pri_get(dev_id, port_id, mode, pri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set default user priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] up 802.1p
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_up_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t up)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_up_set(dev_id, port_id, up);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get default user priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] up 802.1p
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_up_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * up)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_up_get(dev_id, port_id, up);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set traffic scheduling mode on particular one port.
* @details Comments:
* Particular device may only support parts of input options. Such as
* GARUDA doesn't support variable weight in wrr mode.
* When scheduling mode is sp the weight is meaningless usually it's zero
* @param[in] dev_id device id
* @param[in] fal_sch_mode_t traffic scheduling mode
* @param[in] weight[] weight value for each queue when in wrr mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_sch_mode_set(a_uint32_t dev_id, a_uint32_t port_id,
fal_sch_mode_t mode, const a_uint32_t weight[])
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_sch_mode_set(dev_id, port_id, mode, weight);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get traffic scheduling mode on particular port.
* @param[in] dev_id device id
* @param[in] fal_sch_mode_t traffic scheduling mode
* @param[out] weight weight value for wrr mode
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_sch_mode_get(a_uint32_t dev_id, a_uint32_t port_id,
fal_sch_mode_t * mode, a_uint32_t weight[])
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_sch_mode_get(dev_id, port_id, mode, weight);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set default stag priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] spri vlan priority
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_spri_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t spri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_spri_set(dev_id, port_id, spri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get default stag priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] spri vlan priority
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_spri_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * spri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_spri_get(dev_id, port_id, spri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set default ctag priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] cpri vlan priority
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_cpri_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t cpri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_cpri_set(dev_id, port_id, cpri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get default ctag priority on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] cpri vlan priority
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_default_cpri_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * cpri)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_default_cpri_get(dev_id, port_id, cpri);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set force stag priority flag on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_force_spri_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_force_spri_status_set(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get force stag priority flag on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_force_spri_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_force_spri_status_get(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set force ctag priority flag on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_force_cpri_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_force_cpri_status_set(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get force ctag priority flag on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_port_force_cpri_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_port_force_cpri_status_get(dev_id, port_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set egress queue based CoS remark on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] queue_id queue id
* @param[in] tbl_id CoS remark table id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_remark_table_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t tbl_id, a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_remark_table_set(dev_id, port_id, queue_id, tbl_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get egress queue based CoS remark on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] queue_id queue id
* @param[out] tbl_id CoS remark table id
* @param[out] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_qos_queue_remark_table_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * tbl_id, a_bool_t * enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_qos_queue_remark_table_get(dev_id, port_id, queue_id, tbl_id, enable);
FAL_API_UNLOCK;
return rv;
}
#endif
sw_error_t
fal_qos_port_pri_precedence_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_pri_precedence_t *pri)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_pri_precedence_set(dev_id, port_id, pri);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_port_pri_precedence_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_pri_precedence_t *pri)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_pri_precedence_get(dev_id, port_id, pri);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_pcp_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t pcp, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_pcp_get(dev_id, group_id, pcp, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_queue_scheduler_set(a_uint32_t dev_id,
a_uint32_t node_id, fal_queue_scheduler_level_t level,
fal_port_t port_id,
fal_qos_scheduler_cfg_t *scheduler_cfg)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_queue_scheduler_set(dev_id, node_id, level, port_id, scheduler_cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_queue_scheduler_get(a_uint32_t dev_id,
a_uint32_t node_id, fal_queue_scheduler_level_t level,
fal_port_t *port_id,
fal_qos_scheduler_cfg_t *scheduler_cfg)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_queue_scheduler_get(dev_id, node_id, level, port_id, scheduler_cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_pcp_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t pcp, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_pcp_set(dev_id, group_id, pcp, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_port_remark_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_remark_enable_t *remark)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_remark_get(dev_id, port_id, remark);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_dscp_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t dscp, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_dscp_get(dev_id, group_id, dscp, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_flow_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint16_t flow, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_flow_set(dev_id, group_id, flow, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_port_group_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_group_t *group)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_group_set(dev_id, port_id, group);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_edma_ring_queue_map_set(a_uint32_t dev_id,
a_uint32_t ring_id, fal_queue_bmp_t *queue_bmp)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_edma_ring_queue_map_set(dev_id, ring_id, queue_bmp);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_dscp_set(a_uint32_t dev_id, a_uint8_t group_id,
a_uint8_t dscp, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_dscp_set(dev_id, group_id, dscp, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_port_remark_set(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_remark_enable_t *remark)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_remark_set(dev_id, port_id, remark);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_cosmap_flow_get(a_uint32_t dev_id, a_uint8_t group_id,
a_uint16_t flow, fal_qos_cosmap_t *cosmap)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_cosmap_flow_get(dev_id, group_id, flow, cosmap);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_qos_port_group_get(a_uint32_t dev_id, fal_port_t port_id,
fal_qos_group_t *group)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_qos_port_group_get(dev_id, port_id, group);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_edma_ring_queue_map_get(a_uint32_t dev_id,
a_uint32_t ring_id, fal_queue_bmp_t *queue_bmp)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_edma_ring_queue_map_get(dev_id, ring_id, queue_bmp);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_port_queues_get(a_uint32_t dev_id,
fal_port_t port_id, fal_queue_bmp_t *queue_bmp)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_port_queues_get(dev_id, port_id, queue_bmp);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_scheduler_dequeue_ctrl_set(
a_uint32_t dev_id,
a_uint32_t queue_id,
a_bool_t enable)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_scheduler_dequeue_ctrl_set(dev_id, queue_id, enable);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_scheduler_dequeue_ctrl_get(
a_uint32_t dev_id,
a_uint32_t queue_id,
a_bool_t *enable)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_scheduler_dequeue_ctrl_get(dev_id, queue_id, enable);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_port_scheduler_cfg_reset(
a_uint32_t dev_id,
fal_port_t port_id)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_port_scheduler_cfg_reset(dev_id, port_id);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_port_scheduler_resource_get(
a_uint32_t dev_id,
fal_port_t port_id,
fal_portscheduler_resource_t *cfg)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_port_scheduler_resource_get(dev_id, port_id, cfg);
FAL_API_UNLOCK;
return rv;
}
EXPORT_SYMBOL(fal_scheduler_dequeue_ctrl_get);
EXPORT_SYMBOL(fal_scheduler_dequeue_ctrl_set);
EXPORT_SYMBOL(fal_queue_scheduler_set);
EXPORT_SYMBOL(fal_queue_scheduler_get);
EXPORT_SYMBOL(fal_port_queues_get);
EXPORT_SYMBOL(fal_qos_port_pri_precedence_set);
EXPORT_SYMBOL(fal_qos_port_pri_precedence_get);
EXPORT_SYMBOL(fal_qos_port_group_set);
EXPORT_SYMBOL(fal_qos_port_group_get);
EXPORT_SYMBOL(fal_qos_cosmap_pcp_set);
EXPORT_SYMBOL(fal_qos_cosmap_pcp_get);
EXPORT_SYMBOL(fal_qos_cosmap_dscp_set);
EXPORT_SYMBOL(fal_qos_cosmap_dscp_get);
EXPORT_SYMBOL(fal_qos_cosmap_flow_set);
EXPORT_SYMBOL(fal_qos_port_remark_set);
EXPORT_SYMBOL(fal_qos_port_remark_get);
EXPORT_SYMBOL(fal_edma_ring_queue_map_set);
EXPORT_SYMBOL(fal_edma_ring_queue_map_get);
EXPORT_SYMBOL(fal_port_scheduler_cfg_reset);
EXPORT_SYMBOL(fal_port_scheduler_resource_get);
/*insert flag for outter fal, don't remove it*/
/**
* @}
*/