dpaa2-eth: add API for Tx shaping
Add the necessary API (dpni_set_tx_shaping) for configuring the rate and burst size of a per port shaper in DPAA2. Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e3ec13be57
commit
39344a8962
@ -626,4 +626,17 @@ struct dpni_cmd_set_congestion_notification {
|
||||
__le32 threshold_exit;
|
||||
};
|
||||
|
||||
#define DPNI_COUPLED_SHIFT 0
|
||||
#define DPNI_COUPLED_SIZE 1
|
||||
|
||||
struct dpni_cmd_set_tx_shaping {
|
||||
__le16 tx_cr_max_burst_size;
|
||||
__le16 tx_er_max_burst_size;
|
||||
__le32 pad;
|
||||
__le32 tx_cr_rate_limit;
|
||||
__le32 tx_er_rate_limit;
|
||||
/* from LSB: coupled:1 */
|
||||
u8 coupled;
|
||||
};
|
||||
|
||||
#endif /* _FSL_DPNI_CMD_H */
|
||||
|
@ -1963,3 +1963,39 @@ int dpni_clear_qos_table(struct fsl_mc_io *mc_io,
|
||||
/* send command to mc*/
|
||||
return mc_send_command(mc_io, &cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* dpni_set_tx_shaping() - Set the transmit shaping
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
|
||||
* @token: Token of DPNI object
|
||||
* @tx_cr_shaper: TX committed rate shaping configuration
|
||||
* @tx_er_shaper: TX excess rate shaping configuration
|
||||
* @coupled: Committed and excess rate shapers are coupled
|
||||
*
|
||||
* Return: '0' on Success; Error code otherwise.
|
||||
*/
|
||||
int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,
|
||||
u32 cmd_flags,
|
||||
u16 token,
|
||||
const struct dpni_tx_shaping_cfg *tx_cr_shaper,
|
||||
const struct dpni_tx_shaping_cfg *tx_er_shaper,
|
||||
int coupled)
|
||||
{
|
||||
struct dpni_cmd_set_tx_shaping *cmd_params;
|
||||
struct fsl_mc_command cmd = { 0 };
|
||||
|
||||
/* prepare command */
|
||||
cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_SHAPING,
|
||||
cmd_flags,
|
||||
token);
|
||||
cmd_params = (struct dpni_cmd_set_tx_shaping *)cmd.params;
|
||||
cmd_params->tx_cr_max_burst_size = cpu_to_le16(tx_cr_shaper->max_burst_size);
|
||||
cmd_params->tx_er_max_burst_size = cpu_to_le16(tx_er_shaper->max_burst_size);
|
||||
cmd_params->tx_cr_rate_limit = cpu_to_le32(tx_cr_shaper->rate_limit);
|
||||
cmd_params->tx_er_rate_limit = cpu_to_le32(tx_er_shaper->rate_limit);
|
||||
dpni_set_field(cmd_params->coupled, COUPLED, coupled);
|
||||
|
||||
/* send command to mc*/
|
||||
return mc_send_command(mc_io, &cmd);
|
||||
}
|
||||
|
@ -1062,5 +1062,21 @@ int dpni_get_api_version(struct fsl_mc_io *mc_io,
|
||||
u32 cmd_flags,
|
||||
u16 *major_ver,
|
||||
u16 *minor_ver);
|
||||
/**
|
||||
* struct dpni_tx_shaping - Structure representing DPNI tx shaping configuration
|
||||
* @rate_limit: Rate in Mbps
|
||||
* @max_burst_size: Burst size in bytes (up to 64KB)
|
||||
*/
|
||||
struct dpni_tx_shaping_cfg {
|
||||
u32 rate_limit;
|
||||
u16 max_burst_size;
|
||||
};
|
||||
|
||||
int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,
|
||||
u32 cmd_flags,
|
||||
u16 token,
|
||||
const struct dpni_tx_shaping_cfg *tx_cr_shaper,
|
||||
const struct dpni_tx_shaping_cfg *tx_er_shaper,
|
||||
int coupled);
|
||||
|
||||
#endif /* __FSL_DPNI_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user