mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-06 22:46:35 +00:00
As more police parameters are passed to flow_offload, driver can check them to make sure hardware handles packets in the way indicated by tc. The conform-exceed control should be drop/pipe or drop/ok. Besides, for drop/ok, the police should be the last action. As hardware can't configure peakrate/avrate/overhead, offload should not be supported if any of them is configured. Signed-off-by: Jianbo Liu <jianbol@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
42 lines
1.3 KiB
C
42 lines
1.3 KiB
C
/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
|
|
/* Microsemi Ocelot Switch driver
|
|
*
|
|
* Copyright (c) 2019 Microsemi Corporation
|
|
*/
|
|
|
|
#ifndef _MSCC_OCELOT_POLICE_H_
|
|
#define _MSCC_OCELOT_POLICE_H_
|
|
|
|
#include "ocelot.h"
|
|
#include <net/flow_offload.h>
|
|
|
|
enum mscc_qos_rate_mode {
|
|
MSCC_QOS_RATE_MODE_DISABLED, /* Policer/shaper disabled */
|
|
MSCC_QOS_RATE_MODE_LINE, /* Measure line rate in kbps incl. IPG */
|
|
MSCC_QOS_RATE_MODE_DATA, /* Measures data rate in kbps excl. IPG */
|
|
MSCC_QOS_RATE_MODE_FRAME, /* Measures frame rate in fps */
|
|
__MSCC_QOS_RATE_MODE_END,
|
|
NUM_MSCC_QOS_RATE_MODE = __MSCC_QOS_RATE_MODE_END,
|
|
MSCC_QOS_RATE_MODE_MAX = __MSCC_QOS_RATE_MODE_END - 1,
|
|
};
|
|
|
|
struct qos_policer_conf {
|
|
enum mscc_qos_rate_mode mode;
|
|
bool dlb; /* Enable DLB (dual leaky bucket mode */
|
|
bool cf; /* Coupling flag (ignored in SLB mode) */
|
|
u32 cir; /* CIR in kbps/fps (ignored in SLB mode) */
|
|
u32 cbs; /* CBS in bytes/frames (ignored in SLB mode) */
|
|
u32 pir; /* PIR in kbps/fps */
|
|
u32 pbs; /* PBS in bytes/frames */
|
|
u8 ipg; /* Size of IPG when MSCC_QOS_RATE_MODE_LINE is chosen */
|
|
};
|
|
|
|
int qos_policer_conf_set(struct ocelot *ocelot, int port, u32 pol_ix,
|
|
struct qos_policer_conf *conf);
|
|
|
|
int ocelot_policer_validate(const struct flow_action *action,
|
|
const struct flow_action_entry *a,
|
|
struct netlink_ext_ack *extack);
|
|
|
|
#endif /* _MSCC_OCELOT_POLICE_H_ */
|