blob: 99c7377987d2be80e517dc3595c9c480e84227db [file] [log] [blame]
/*
* Copyright (c) 2012,2018, 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_rate FAL_RATE
* @{
*/
#ifndef _FAL_RATE_H_
#define _FAL_RATE_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "sw.h"
#include "fal/fal_type.h"
/**
@brief This enum defines storm type
*/
typedef enum {
FAL_UNICAST_STORM = 0, /**< storm caused by unknown unicast packets */
FAL_MULTICAST_STORM, /**< storm caused by unknown multicast packets */
FAL_BROADCAST_STORM, /**< storm caused by broadcast packets */
FAL_STORM_TYPE_BUTT
}
fal_storm_type_t;
sw_error_t
fal_rate_queue_egrl_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * speed,
a_bool_t enable);
sw_error_t
fal_rate_queue_egrl_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_uint32_t * speed,
a_bool_t * enable);
sw_error_t
fal_rate_port_egrl_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * speed, a_bool_t enable);
sw_error_t
fal_rate_port_egrl_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * speed, a_bool_t * enable);
sw_error_t
fal_rate_port_inrl_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * speed, a_bool_t enable);
sw_error_t
fal_rate_port_inrl_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * speed, a_bool_t * enable);
sw_error_t
fal_storm_ctrl_frame_set(a_uint32_t dev_id, fal_port_t port_id,
fal_storm_type_t frame_type, a_bool_t enable);
sw_error_t
fal_storm_ctrl_frame_get(a_uint32_t dev_id, fal_port_t port_id,
fal_storm_type_t frame_type,
a_bool_t * enable);
sw_error_t
fal_storm_ctrl_rate_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * rate);
sw_error_t
fal_storm_ctrl_rate_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * rate);
typedef enum
{
FAL_RATE_MI_100US = 0,
FAL_RATE_MI_1MS,
FAL_RATE_MI_10MS,
FAL_RATE_MI_100MS,
} fal_rate_mt_t;
typedef struct
{
fal_traffic_unit_t meter_unit;
a_uint32_t cir;
a_uint32_t eir;
a_uint32_t cbs;
a_uint32_t ebs;
} fal_egress_shaper_t;
#define FAL_INGRESS_POLICING_TCP_CTRL 0x2
#define FAL_INGRESS_POLICING_MANAGEMENT 0x4
#define FAL_INGRESS_POLICING_BROAD 0x8
#define FAL_INGRESS_POLICING_UNK_UNI 0x10
#define FAL_INGRESS_POLICING_UNK_MUL 0x20
#define FAL_INGRESS_POLICING_UNI 0x40
#define FAL_INGRESS_POLICING_MUL 0x80
typedef struct
{
a_bool_t c_enable;
a_bool_t e_enable;
a_bool_t combine_mode;
fal_traffic_unit_t meter_unit;
a_bool_t color_mode;
a_bool_t couple_flag;
a_bool_t deficit_en;
a_uint32_t cir;
a_uint32_t eir;
a_uint32_t cbs;
a_uint32_t ebs;
a_uint32_t c_rate_flag;
a_uint32_t e_rate_flag;
fal_rate_mt_t c_meter_interval;
fal_rate_mt_t e_meter_interval;
} fal_port_policer_t;
typedef struct
{
a_bool_t counter_mode;
fal_traffic_unit_t meter_unit;
fal_rate_mt_t meter_interval;
a_bool_t color_mode;
a_bool_t couple_flag;
a_bool_t deficit_en;
a_uint32_t cir;
a_uint32_t eir;
a_uint32_t cbs;
a_uint32_t ebs;
a_uint32_t counter_high;
a_uint32_t counter_low;
} fal_acl_policer_t;
sw_error_t
fal_rate_port_policer_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_policer_t * policer);
sw_error_t
fal_rate_port_policer_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_policer_t * policer);
sw_error_t
fal_rate_port_shaper_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable, fal_egress_shaper_t * shaper);
sw_error_t
fal_rate_port_shaper_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable, fal_egress_shaper_t * shaper);
sw_error_t
fal_rate_queue_shaper_set(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_bool_t enable,
fal_egress_shaper_t * shaper);
sw_error_t
fal_rate_queue_shaper_get(a_uint32_t dev_id, fal_port_t port_id,
fal_queue_t queue_id, a_bool_t * enable,
fal_egress_shaper_t * shaper);
sw_error_t
fal_rate_acl_policer_set(a_uint32_t dev_id, a_uint32_t policer_id,
fal_acl_policer_t * policer);
sw_error_t
fal_rate_acl_policer_get(a_uint32_t dev_id, a_uint32_t policer_id,
fal_acl_policer_t * policer);
sw_error_t
fal_rate_port_add_rate_byte_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t number);
sw_error_t
fal_rate_port_add_rate_byte_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t *number);
sw_error_t
fal_rate_port_gol_flow_en_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_rate_port_gol_flow_en_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t* enable);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _FAL_RATE_H_ */
/**
* @}
*/