Merge branch 'dpaa2-switch-small-cleanup'

Ioana Ciornei says:

====================
dpaa2-switch: small cleanup

This patch set addresses various low-hanging issues in both dpaa2-switch
and dpaa2-eth drivers.
Unused ABI functions are removed from dpaa2-switch, all the kernel-doc
warnings are fixed up in both drivers and the coding style for the
remaining ABIs is fixed-up a bit.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2021-03-16 15:29:49 -07:00
commit 5bdbdb823f
8 changed files with 211 additions and 534 deletions

View File

@ -13,11 +13,12 @@
/** Key Generator properties */
/**
* Number of masks per key extraction
* DPKG_NUM_OF_MASKS - Number of masks per key extraction
*/
#define DPKG_NUM_OF_MASKS 4
/**
* Number of extractions per key profile
* DPKG_MAX_NUM_OF_EXTRACTS - Number of extractions per key profile
*/
#define DPKG_MAX_NUM_OF_EXTRACTS 10

View File

@ -83,39 +83,21 @@ int dpmac_get_attributes(struct fsl_mc_io *mc_io,
u16 token,
struct dpmac_attr *attr);
/**
* DPMAC link configuration/state options
*/
/* DPMAC link configuration/state options */
/**
* Enable auto-negotiation
*/
#define DPMAC_LINK_OPT_AUTONEG BIT_ULL(0)
/**
* Enable half-duplex mode
*/
#define DPMAC_LINK_OPT_HALF_DUPLEX BIT_ULL(1)
/**
* Enable pause frames
*/
#define DPMAC_LINK_OPT_PAUSE BIT_ULL(2)
/**
* Enable a-symmetric pause frames
*/
#define DPMAC_LINK_OPT_ASYM_PAUSE BIT_ULL(3)
/**
* Advertised link speeds
*/
/* Advertised link speeds */
#define DPMAC_ADVERTISED_10BASET_FULL BIT_ULL(0)
#define DPMAC_ADVERTISED_100BASET_FULL BIT_ULL(1)
#define DPMAC_ADVERTISED_1000BASET_FULL BIT_ULL(2)
#define DPMAC_ADVERTISED_10000BASET_FULL BIT_ULL(4)
#define DPMAC_ADVERTISED_2500BASEX_FULL BIT_ULL(5)
/**
* Advertise auto-negotiation enable
*/
/* Advertise auto-negotiation enable */
#define DPMAC_ADVERTISED_AUTONEG BIT_ULL(3)
/**

View File

@ -17,6 +17,8 @@
* This function has to be called before the following functions:
* - dpni_set_rx_tc_dist()
* - dpni_set_qos_table()
*
* Return: '0' on Success; Error code otherwise.
*/
int dpni_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, u8 *key_cfg_buf)
{
@ -1793,6 +1795,8 @@ int dpni_get_api_version(struct fsl_mc_io *mc_io,
* If cfg.enable is set to 0 the command will clear flow steering table.
* The packets will be classified according to settings made in
* dpni_set_rx_hash_dist()
*
* Return: '0' on Success; Error code otherwise.
*/
int dpni_set_rx_fs_dist(struct fsl_mc_io *mc_io,
u32 cmd_flags,
@ -1826,6 +1830,8 @@ int dpni_set_rx_fs_dist(struct fsl_mc_io *mc_io,
* If cfg.enable is set to 1 the packets will be classified using a hash
* function based on the key received in cfg.key_cfg_iova parameter.
* If cfg.enable is set to 0 the packets will be sent to the default queue
*
* Return: '0' on Success; Error code otherwise.
*/
int dpni_set_rx_hash_dist(struct fsl_mc_io *mc_io,
u32 cmd_flags,

View File

@ -10,73 +10,76 @@
struct fsl_mc_io;
/**
* Data Path Network Interface API
/* Data Path Network Interface API
* Contains initialization APIs and runtime control APIs for DPNI
*/
/** General DPNI macros */
/**
* Maximum number of traffic classes
* DPNI_MAX_TC - Maximum number of traffic classes
*/
#define DPNI_MAX_TC 8
/**
* Maximum number of buffer pools per DPNI
* DPNI_MAX_DPBP - Maximum number of buffer pools per DPNI
*/
#define DPNI_MAX_DPBP 8
/**
* All traffic classes considered; see dpni_set_queue()
* DPNI_ALL_TCS - All traffic classes considered; see dpni_set_queue()
*/
#define DPNI_ALL_TCS (u8)(-1)
/**
* All flows within traffic class considered; see dpni_set_queue()
* DPNI_ALL_TC_FLOWS - All flows within traffic class considered; see
* dpni_set_queue()
*/
#define DPNI_ALL_TC_FLOWS (u16)(-1)
/**
* Generate new flow ID; see dpni_set_queue()
* DPNI_NEW_FLOW_ID - Generate new flow ID; see dpni_set_queue()
*/
#define DPNI_NEW_FLOW_ID (u16)(-1)
/**
* Tx traffic is always released to a buffer pool on transmit, there are no
* resources allocated to have the frames confirmed back to the source after
* transmission.
* DPNI_OPT_TX_FRM_RELEASE - Tx traffic is always released to a buffer pool on
* transmit, there are no resources allocated to have the frames confirmed back
* to the source after transmission.
*/
#define DPNI_OPT_TX_FRM_RELEASE 0x000001
/**
* Disables support for MAC address filtering for addresses other than primary
* MAC address. This affects both unicast and multicast. Promiscuous mode can
* still be enabled/disabled for both unicast and multicast. If promiscuous mode
* is disabled, only traffic matching the primary MAC address will be accepted.
* DPNI_OPT_NO_MAC_FILTER - Disables support for MAC address filtering for
* addresses other than primary MAC address. This affects both unicast and
* multicast. Promiscuous mode can still be enabled/disabled for both unicast
* and multicast. If promiscuous mode is disabled, only traffic matching the
* primary MAC address will be accepted.
*/
#define DPNI_OPT_NO_MAC_FILTER 0x000002
/**
* Allocate policers for this DPNI. They can be used to rate-limit traffic per
* traffic class (TC) basis.
* DPNI_OPT_HAS_POLICING - Allocate policers for this DPNI. They can be used to
* rate-limit traffic per traffic class (TC) basis.
*/
#define DPNI_OPT_HAS_POLICING 0x000004
/**
* Congestion can be managed in several ways, allowing the buffer pool to
* deplete on ingress, taildrop on each queue or use congestion groups for sets
* of queues. If set, it configures a single congestion groups across all TCs.
* If reset, a congestion group is allocated for each TC. Only relevant if the
* DPNI has multiple traffic classes.
* DPNI_OPT_SHARED_CONGESTION - Congestion can be managed in several ways,
* allowing the buffer pool to deplete on ingress, taildrop on each queue or
* use congestion groups for sets of queues. If set, it configures a single
* congestion groups across all TCs. If reset, a congestion group is allocated
* for each TC. Only relevant if the DPNI has multiple traffic classes.
*/
#define DPNI_OPT_SHARED_CONGESTION 0x000008
/**
* Enables TCAM for Flow Steering and QoS look-ups. If not specified, all
* look-ups are exact match. Note that TCAM is not available on LS1088 and its
* variants. Setting this bit on these SoCs will trigger an error.
* DPNI_OPT_HAS_KEY_MASKING - Enables TCAM for Flow Steering and QoS look-ups.
* If not specified, all look-ups are exact match. Note that TCAM is not
* available on LS1088 and its variants. Setting this bit on these SoCs will
* trigger an error.
*/
#define DPNI_OPT_HAS_KEY_MASKING 0x000010
/**
* Disables the flow steering table.
* DPNI_OPT_NO_FS - Disables the flow steering table.
*/
#define DPNI_OPT_NO_FS 0x000020
/**
* Flow steering table is shared between all traffic classes
* DPNI_OPT_SHARED_FS - Flow steering table is shared between all traffic
* classes
*/
#define DPNI_OPT_SHARED_FS 0x001000
@ -129,20 +132,14 @@ int dpni_reset(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token);
/**
* DPNI IRQ Index and Events
*/
/* DPNI IRQ Index and Events */
/**
* IRQ index
*/
#define DPNI_IRQ_INDEX 0
/**
* IRQ events:
* indicates a change in link state
* indicates a change in endpoint
*/
/* DPNI_IRQ_EVENT_LINK_CHANGED - indicates a change in link state */
#define DPNI_IRQ_EVENT_LINK_CHANGED 0x00000001
/* DPNI_IRQ_EVENT_ENDPOINT_CHANGED - indicates a change in endpoint */
#define DPNI_IRQ_EVENT_ENDPOINT_CHANGED 0x00000002
int dpni_set_irq_enable(struct fsl_mc_io *mc_io,
@ -222,32 +219,30 @@ int dpni_get_attributes(struct fsl_mc_io *mc_io,
u16 token,
struct dpni_attr *attr);
/**
* DPNI errors
*/
/* DPNI errors */
/**
* Extract out of frame header error
* DPNI_ERROR_EOFHE - Extract out of frame header error
*/
#define DPNI_ERROR_EOFHE 0x00020000
/**
* Frame length error
* DPNI_ERROR_FLE - Frame length error
*/
#define DPNI_ERROR_FLE 0x00002000
/**
* Frame physical error
* DPNI_ERROR_FPE - Frame physical error
*/
#define DPNI_ERROR_FPE 0x00001000
/**
* Parsing header error
* DPNI_ERROR_PHE - Parsing header error
*/
#define DPNI_ERROR_PHE 0x00000020
/**
* Parser L3 checksum error
* DPNI_ERROR_L3CE - Parser L3 checksum error
*/
#define DPNI_ERROR_L3CE 0x00000004
/**
* Parser L3 checksum error
* DPNI_ERROR_L4CE - Parser L3 checksum error
*/
#define DPNI_ERROR_L4CE 0x00000001
@ -281,36 +276,35 @@ int dpni_set_errors_behavior(struct fsl_mc_io *mc_io,
u16 token,
struct dpni_error_cfg *cfg);
/**
* DPNI buffer layout modification options
*/
/* DPNI buffer layout modification options */
/**
* Select to modify the time-stamp setting
* DPNI_BUF_LAYOUT_OPT_TIMESTAMP - Select to modify the time-stamp setting
*/
#define DPNI_BUF_LAYOUT_OPT_TIMESTAMP 0x00000001
/**
* Select to modify the parser-result setting; not applicable for Tx
* DPNI_BUF_LAYOUT_OPT_PARSER_RESULT - Select to modify the parser-result
* setting; not applicable for Tx
*/
#define DPNI_BUF_LAYOUT_OPT_PARSER_RESULT 0x00000002
/**
* Select to modify the frame-status setting
* DPNI_BUF_LAYOUT_OPT_FRAME_STATUS - Select to modify the frame-status setting
*/
#define DPNI_BUF_LAYOUT_OPT_FRAME_STATUS 0x00000004
/**
* Select to modify the private-data-size setting
* DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE - Select to modify the private-data-size setting
*/
#define DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE 0x00000008
/**
* Select to modify the data-alignment setting
* DPNI_BUF_LAYOUT_OPT_DATA_ALIGN - Select to modify the data-alignment setting
*/
#define DPNI_BUF_LAYOUT_OPT_DATA_ALIGN 0x00000010
/**
* Select to modify the data-head-room setting
* DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM - Select to modify the data-head-room setting
*/
#define DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM 0x00000020
/**
* Select to modify the data-tail-room setting
* DPNI_BUF_LAYOUT_OPT_DATA_TAIL_ROOM - Select to modify the data-tail-room setting
*/
#define DPNI_BUF_LAYOUT_OPT_DATA_TAIL_ROOM 0x00000040
@ -343,7 +337,8 @@ struct dpni_buffer_layout {
* @DPNI_QUEUE_TX: Tx queue
* @DPNI_QUEUE_TX_CONFIRM: Tx confirmation queue
* @DPNI_QUEUE_RX_ERR: Rx error queue
*/enum dpni_queue_type {
*/
enum dpni_queue_type {
DPNI_QUEUE_RX,
DPNI_QUEUE_TX,
DPNI_QUEUE_TX_CONFIRM,
@ -424,7 +419,7 @@ int dpni_get_tx_data_offset(struct fsl_mc_io *mc_io,
* lack of buffers
* @page_2.egress_discarded_frames: Egress discarded frame count
* @page_2.egress_confirmed_frames: Egress confirmed frame count
* @page3: Page_3 statistics structure
* @page_3: Page_3 statistics structure
* @page_3.egress_dequeue_bytes: Cumulative count of the number of bytes
* dequeued from egress FQs
* @page_3.egress_dequeue_frames: Cumulative count of the number of frames
@ -501,30 +496,14 @@ int dpni_get_statistics(struct fsl_mc_io *mc_io,
u8 page,
union dpni_statistics *stat);
/**
* Enable auto-negotiation
*/
#define DPNI_LINK_OPT_AUTONEG 0x0000000000000001ULL
/**
* Enable half-duplex mode
*/
#define DPNI_LINK_OPT_HALF_DUPLEX 0x0000000000000002ULL
/**
* Enable pause frames
*/
#define DPNI_LINK_OPT_PAUSE 0x0000000000000004ULL
/**
* Enable a-symmetric pause frames
*/
#define DPNI_LINK_OPT_ASYM_PAUSE 0x0000000000000008ULL
/**
* Enable priority flow control pause frames
*/
#define DPNI_LINK_OPT_PFC_PAUSE 0x0000000000000010ULL
/**
* struct - Structure representing DPNI link configuration
* struct dpni_link_cfg - Structure representing DPNI link configuration
* @rate: Rate
* @options: Mask of available options; use 'DPNI_LINK_OPT_<X>' values
*/
@ -687,8 +666,8 @@ int dpni_set_rx_tc_dist(struct fsl_mc_io *mc_io,
const struct dpni_rx_tc_dist_cfg *cfg);
/**
* When used for fs_miss_flow_id in function dpni_set_rx_dist,
* will signal to dpni to drop all unclassified frames
* DPNI_FS_MISS_DROP - When used for fs_miss_flow_id in function
* dpni_set_rx_dist, will signal to dpni to drop all unclassified frames
*/
#define DPNI_FS_MISS_DROP ((uint16_t)-1)
@ -766,7 +745,7 @@ enum dpni_dest {
/**
* struct dpni_queue - Queue structure
* @destination - Destination structure
* @destination: - Destination structure
* @destination.id: ID of the destination, only relevant if DEST_TYPE is > 0.
* Identifies either a DPIO or a DPCON object.
* Not relevant for Tx queues.
@ -837,9 +816,7 @@ struct dpni_queue_id {
u16 qdbin;
};
/**
* Set User Context
*/
/* Set User Context */
#define DPNI_QUEUE_OPT_USER_CTX 0x00000001
#define DPNI_QUEUE_OPT_DEST 0x00000002
#define DPNI_QUEUE_OPT_FLC 0x00000004
@ -904,9 +881,9 @@ struct dpni_dest_cfg {
/* DPNI congestion options */
/**
* This congestion will trigger flow control or priority flow control.
* This will have effect only if flow control is enabled with
* dpni_set_link_cfg().
* DPNI_CONG_OPT_FLOW_CONTROL - This congestion will trigger flow control or
* priority flow control. This will have effect only if flow control is
* enabled with dpni_set_link_cfg().
*/
#define DPNI_CONG_OPT_FLOW_CONTROL 0x00000040
@ -990,23 +967,24 @@ struct dpni_rule_cfg {
};
/**
* Discard matching traffic. If set, this takes precedence over any other
* configuration and matching traffic is always discarded.
* DPNI_FS_OPT_DISCARD - Discard matching traffic. If set, this takes
* precedence over any other configuration and matching traffic is always
* discarded.
*/
#define DPNI_FS_OPT_DISCARD 0x1
/**
* Set FLC value. If set, flc member of struct dpni_fs_action_cfg is used to
* override the FLC value set per queue.
* DPNI_FS_OPT_SET_FLC - Set FLC value. If set, flc member of struct
* dpni_fs_action_cfg is used to override the FLC value set per queue.
* For more details check the Frame Descriptor section in the hardware
* documentation.
*/
#define DPNI_FS_OPT_SET_FLC 0x2
/**
* Indicates whether the 6 lowest significant bits of FLC are used for stash
* control. If set, the 6 least significant bits in value are interpreted as
* follows:
* DPNI_FS_OPT_SET_STASH_CONTROL - Indicates whether the 6 lowest significant
* bits of FLC are used for stash control. If set, the 6 least significant bits
* in value are interpreted as follows:
* - bits 0-1: indicates the number of 64 byte units of context that are
* stashed. FLC value is interpreted as a memory address in this case,
* excluding the 6 LS bits.
@ -1068,7 +1046,7 @@ int dpni_get_api_version(struct fsl_mc_io *mc_io,
u16 *major_ver,
u16 *minor_ver);
/**
* struct dpni_tx_shaping - Structure representing DPNI tx shaping configuration
* struct dpni_tx_shaping_cfg - Structure representing DPNI tx shaping configuration
* @rate_limit: Rate in Mbps
* @max_burst_size: Burst size in bytes (up to 64KB)
*/

View File

@ -13,9 +13,6 @@
struct fsl_mc_io;
/**
* Number of irq's
*/
#define DPRTC_MAX_IRQ_NUM 1
#define DPRTC_IRQ_INDEX 0

View File

@ -75,8 +75,6 @@
#define DPSW_CMDID_FDB_DUMP DPSW_CMD_ID(0x08A)
#define DPSW_CMDID_IF_GET_PORT_MAC_ADDR DPSW_CMD_ID(0x0A7)
#define DPSW_CMDID_IF_GET_PRIMARY_MAC_ADDR DPSW_CMD_ID(0x0A8)
#define DPSW_CMDID_IF_SET_PRIMARY_MAC_ADDR DPSW_CMD_ID(0x0A9)
#define DPSW_CMDID_CTRL_IF_GET_ATTR DPSW_CMD_ID(0x0A0)
#define DPSW_CMDID_CTRL_IF_SET_POOLS DPSW_CMD_ID(0x0A1)
@ -342,7 +340,7 @@ struct dpsw_cmd_vlan_manage_if {
__le16 vlan_id;
__le32 pad1;
/* cmd word 1-4 */
__le64 if_id[4];
__le64 if_id;
};
struct dpsw_cmd_vlan_remove {
@ -388,7 +386,7 @@ struct dpsw_cmd_fdb_multicast_op {
u8 mac_addr[6];
__le16 pad2;
/* cmd word 2-5 */
__le64 if_id[4];
__le64 if_id;
};
struct dpsw_cmd_fdb_dump {
@ -443,11 +441,6 @@ struct dpsw_rsp_if_get_mac_addr {
u8 mac_addr[6];
};
struct dpsw_cmd_if_set_mac_addr {
__le16 if_id;
u8 mac_addr[6];
};
struct dpsw_cmd_set_egress_flood {
__le16 fdb_id;
u8 flood_type;

View File

@ -9,9 +9,7 @@
#include "dpsw.h"
#include "dpsw-cmd.h"
static void build_if_id_bitmap(__le64 *bmap,
const u16 *id,
const u16 num_ifs)
static void build_if_id_bitmap(__le64 *bmap, const u16 *id, const u16 num_ifs)
{
int i;
@ -38,10 +36,7 @@ static void build_if_id_bitmap(__le64 *bmap,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_open(struct fsl_mc_io *mc_io,
u32 cmd_flags,
int dpsw_id,
u16 *token)
int dpsw_open(struct fsl_mc_io *mc_io, u32 cmd_flags, int dpsw_id, u16 *token)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_open *cmd_params;
@ -76,9 +71,7 @@ int dpsw_open(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_close(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token)
int dpsw_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
{
struct fsl_mc_command cmd = { 0 };
@ -99,9 +92,7 @@ int dpsw_close(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token)
int dpsw_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
{
struct fsl_mc_command cmd = { 0 };
@ -122,9 +113,7 @@ int dpsw_enable(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_disable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token)
int dpsw_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
{
struct fsl_mc_command cmd = { 0 };
@ -145,9 +134,7 @@ int dpsw_disable(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_reset(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token)
int dpsw_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
{
struct fsl_mc_command cmd = { 0 };
@ -175,11 +162,8 @@ int dpsw_reset(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_set_irq_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u8 en)
int dpsw_set_irq_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u8 en)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_set_irq_enable *cmd_params;
@ -212,11 +196,8 @@ int dpsw_set_irq_enable(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_set_irq_mask(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 mask)
int dpsw_set_irq_mask(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 mask)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_set_irq_mask *cmd_params;
@ -245,11 +226,8 @@ int dpsw_set_irq_mask(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_get_irq_status(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 *status)
int dpsw_get_irq_status(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 *status)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_get_irq_status *cmd_params;
@ -288,11 +266,8 @@ int dpsw_get_irq_status(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_clear_irq_status(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 status)
int dpsw_clear_irq_status(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 status)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_clear_irq_status *cmd_params;
@ -318,9 +293,7 @@ int dpsw_clear_irq_status(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_get_attributes(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
int dpsw_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
struct dpsw_attr *attr)
{
struct fsl_mc_command cmd = { 0 };
@ -367,10 +340,7 @@ int dpsw_get_attributes(struct fsl_mc_io *mc_io,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_if_set_link_cfg(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_link_cfg(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
struct dpsw_link_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
@ -397,13 +367,10 @@ int dpsw_if_set_link_cfg(struct fsl_mc_io *mc_io,
* @if_id: Interface id
* @state: Link state 1 - linkup, 0 - link down or disconnected
*
* @Return '0' on Success; Error code otherwise.
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_if_get_link_state(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
struct dpsw_link_state *state)
int dpsw_if_get_link_state(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, struct dpsw_link_state *state)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if_get_link_state *cmd_params;
@ -441,10 +408,7 @@ int dpsw_if_get_link_state(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_set_tci(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_tci(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
const struct dpsw_tci_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
@ -476,10 +440,7 @@ int dpsw_if_set_tci(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_get_tci(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_get_tci(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
struct dpsw_tci_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
@ -521,10 +482,7 @@ int dpsw_if_get_tci(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_set_stp(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_stp(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
const struct dpsw_stp_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
@ -554,12 +512,8 @@ int dpsw_if_set_stp(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_get_counter(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
enum dpsw_counter type,
u64 *counter)
int dpsw_if_get_counter(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, enum dpsw_counter type, u64 *counter)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if_get_counter *cmd_params;
@ -595,10 +549,7 @@ int dpsw_if_get_counter(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id)
int dpsw_if_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if *cmd_params;
@ -623,10 +574,7 @@ int dpsw_if_enable(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_disable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id)
int dpsw_if_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if *cmd_params;
@ -693,11 +641,8 @@ int dpsw_if_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_set_max_frame_length(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
u16 frame_length)
int dpsw_if_set_max_frame_length(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, u16 frame_length)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if_set_max_frame_length *cmd_params;
@ -731,11 +676,8 @@ int dpsw_if_set_max_frame_length(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_add(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_cfg *cfg)
int dpsw_vlan_add(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_vlan_add *cmd_params;
@ -767,22 +709,21 @@ int dpsw_vlan_add(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_add_if(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg)
int dpsw_vlan_add_if(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg)
{
struct dpsw_cmd_vlan_add_if *cmd_params;
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_vlan_manage_if *cmd_params;
/* prepare command */
cmd.header = mc_encode_cmd_header(DPSW_CMDID_VLAN_ADD_IF,
cmd_flags,
token);
cmd_params = (struct dpsw_cmd_vlan_manage_if *)cmd.params;
cmd_params = (struct dpsw_cmd_vlan_add_if *)cmd.params;
cmd_params->vlan_id = cpu_to_le16(vlan_id);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
cmd_params->options = cpu_to_le16(cfg->options);
cmd_params->fdb_id = cpu_to_le16(cfg->fdb_id);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
@ -805,11 +746,8 @@ int dpsw_vlan_add_if(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg)
int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_vlan_manage_if *cmd_params;
@ -820,7 +758,7 @@ int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io,
token);
cmd_params = (struct dpsw_cmd_vlan_manage_if *)cmd.params;
cmd_params->vlan_id = cpu_to_le16(vlan_id);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
@ -839,11 +777,8 @@ int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg)
int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_vlan_manage_if *cmd_params;
@ -854,7 +789,7 @@ int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io,
token);
cmd_params = (struct dpsw_cmd_vlan_manage_if *)cmd.params;
cmd_params->vlan_id = cpu_to_le16(vlan_id);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
@ -875,11 +810,8 @@ int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg)
int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_vlan_manage_if *cmd_params;
@ -890,7 +822,7 @@ int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io,
token);
cmd_params = (struct dpsw_cmd_vlan_manage_if *)cmd.params;
cmd_params->vlan_id = cpu_to_le16(vlan_id);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
@ -905,9 +837,7 @@ int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_vlan_remove(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
int dpsw_vlan_remove(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id)
{
struct fsl_mc_command cmd = { 0 };
@ -994,11 +924,8 @@ int dpsw_fdb_remove(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 fdb_i
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_fdb_add_unicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_unicast_cfg *cfg)
int dpsw_fdb_add_unicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_unicast_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_fdb_unicast_op *cmd_params;
@ -1037,13 +964,8 @@ int dpsw_fdb_add_unicast(struct fsl_mc_io *mc_io,
* The struct fdb_dump_entry array must be parsed until the end of memory
* area or until an entry with mac_addr set to zero is found.
*/
int dpsw_fdb_dump(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
u64 iova_addr,
u32 iova_size,
u16 *num_entries)
int dpsw_fdb_dump(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 fdb_id,
u64 iova_addr, u32 iova_size, u16 *num_entries)
{
struct dpsw_cmd_fdb_dump *cmd_params;
struct dpsw_rsp_fdb_dump *rsp_params;
@ -1080,11 +1002,8 @@ int dpsw_fdb_dump(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_fdb_remove_unicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_unicast_cfg *cfg)
int dpsw_fdb_remove_unicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_unicast_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_fdb_unicast_op *cmd_params;
@ -1122,11 +1041,8 @@ int dpsw_fdb_remove_unicast(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_multicast_cfg *cfg)
int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_multicast_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_fdb_multicast_op *cmd_params;
@ -1140,7 +1056,7 @@ int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io,
cmd_params->fdb_id = cpu_to_le16(fdb_id);
cmd_params->num_ifs = cpu_to_le16(cfg->num_ifs);
dpsw_set_field(cmd_params->type, ENTRY_TYPE, cfg->type);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
for (i = 0; i < 6; i++)
cmd_params->mac_addr[i] = cfg->mac_addr[5 - i];
@ -1164,11 +1080,8 @@ int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io,
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_fdb_remove_multicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_multicast_cfg *cfg)
int dpsw_fdb_remove_multicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_multicast_cfg *cfg)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_fdb_multicast_op *cmd_params;
@ -1182,7 +1095,7 @@ int dpsw_fdb_remove_multicast(struct fsl_mc_io *mc_io,
cmd_params->fdb_id = cpu_to_le16(fdb_id);
cmd_params->num_ifs = cpu_to_le16(cfg->num_ifs);
dpsw_set_field(cmd_params->type, ENTRY_TYPE, cfg->type);
build_if_id_bitmap(cmd_params->if_id, cfg->if_id, cfg->num_ifs);
build_if_id_bitmap(&cmd_params->if_id, cfg->if_id, cfg->num_ifs);
for (i = 0; i < 6; i++)
cmd_params->mac_addr[i] = cfg->mac_addr[5 - i];
@ -1294,10 +1207,8 @@ int dpsw_ctrl_if_set_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
*
* Return: '0' on Success; Error code otherwise.
*/
int dpsw_get_api_version(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 *major_ver,
u16 *minor_ver)
int dpsw_get_api_version(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 *major_ver, u16 *minor_ver)
{
struct fsl_mc_command cmd = { 0 };
struct dpsw_rsp_get_api_version *rsp_params;
@ -1319,7 +1230,7 @@ int dpsw_get_api_version(struct fsl_mc_io *mc_io,
}
/**
* dpsw_if_get_port_mac_addr()
* dpsw_if_get_port_mac_addr() - Retrieve MAC address associated to the physical port
* @mc_io: Pointer to MC portal's I/O object
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
* @token: Token of DPSW object
@ -1356,74 +1267,6 @@ int dpsw_if_get_port_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
return 0;
}
/**
* dpsw_if_get_primary_mac_addr()
* @mc_io: Pointer to MC portal's I/O object
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
* @token: Token of DPSW object
* @if_id: Interface Identifier
* @mac_addr: MAC address of the physical port, if any, otherwise 0
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_get_primary_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 token, u16 if_id, u8 mac_addr[6])
{
struct dpsw_rsp_if_get_mac_addr *rsp_params;
struct fsl_mc_command cmd = { 0 };
struct dpsw_cmd_if *cmd_params;
int err, i;
/* prepare command */
cmd.header = mc_encode_cmd_header(DPSW_CMDID_IF_SET_PRIMARY_MAC_ADDR,
cmd_flags,
token);
cmd_params = (struct dpsw_cmd_if *)cmd.params;
cmd_params->if_id = cpu_to_le16(if_id);
/* send command to mc*/
err = mc_send_command(mc_io, &cmd);
if (err)
return err;
/* retrieve response parameters */
rsp_params = (struct dpsw_rsp_if_get_mac_addr *)cmd.params;
for (i = 0; i < 6; i++)
mac_addr[5 - i] = rsp_params->mac_addr[i];
return 0;
}
/**
* dpsw_if_set_primary_mac_addr()
* @mc_io: Pointer to MC portal's I/O object
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
* @token: Token of DPSW object
* @if_id: Interface Identifier
* @mac_addr: MAC address of the physical port, if any, otherwise 0
*
* Return: Completion status. '0' on Success; Error code otherwise.
*/
int dpsw_if_set_primary_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 token, u16 if_id, u8 mac_addr[6])
{
struct dpsw_cmd_if_set_mac_addr *cmd_params;
struct fsl_mc_command cmd = { 0 };
int i;
/* prepare command */
cmd.header = mc_encode_cmd_header(DPSW_CMDID_IF_SET_PRIMARY_MAC_ADDR,
cmd_flags,
token);
cmd_params = (struct dpsw_cmd_if_set_mac_addr *)cmd.params;
cmd_params->if_id = cpu_to_le16(if_id);
for (i = 0; i < 6; i++)
cmd_params->mac_addr[i] = mac_addr[5 - i];
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
}
/**
* dpsw_ctrl_if_enable() - Enable control interface
* @mc_io: Pointer to MC portal's I/O object

View File

@ -14,52 +14,30 @@
struct fsl_mc_io;
/**
* DPSW general definitions
*/
/* DPSW general definitions */
/**
* Maximum number of traffic class priorities
*/
#define DPSW_MAX_PRIORITIES 8
/**
* Maximum number of interfaces
*/
#define DPSW_MAX_IF 64
int dpsw_open(struct fsl_mc_io *mc_io,
u32 cmd_flags,
int dpsw_id,
u16 *token);
int dpsw_open(struct fsl_mc_io *mc_io, u32 cmd_flags, int dpsw_id, u16 *token);
int dpsw_close(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token);
int dpsw_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
/* DPSW options */
/**
* DPSW options
*/
/**
* Disable flooding
* DPSW_OPT_FLOODING_DIS - Flooding was disabled at device create
*/
#define DPSW_OPT_FLOODING_DIS 0x0000000000000001ULL
/**
* Disable Multicast
* DPSW_OPT_MULTICAST_DIS - Multicast was disabled at device create
*/
#define DPSW_OPT_MULTICAST_DIS 0x0000000000000004ULL
/**
* Support control interface
* DPSW_OPT_CTRL_IF_DIS - Control interface support is disabled
*/
#define DPSW_OPT_CTRL_IF_DIS 0x0000000000000010ULL
/**
* Disable flooding metering
*/
#define DPSW_OPT_FLOODING_METERING_DIS 0x0000000000000020ULL
/**
* Enable metering
*/
#define DPSW_OPT_METERING_EN 0x0000000000000040ULL
/**
* enum dpsw_component_type - component type of a bridge
@ -104,27 +82,19 @@ enum dpsw_broadcast_cfg {
DPSW_BROADCAST_PER_FDB,
};
int dpsw_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token);
int dpsw_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpsw_disable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token);
int dpsw_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpsw_reset(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token);
int dpsw_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
/**
* DPSW IRQ Index and Events
*/
/* DPSW IRQ Index and Events */
#define DPSW_IRQ_INDEX_IF 0x0000
#define DPSW_IRQ_INDEX_L2SW 0x0001
/**
* IRQ event - Indicates that the link state changed
* DPSW_IRQ_EVENT_LINK_CHANGED - Indicates that the link state changed
*/
#define DPSW_IRQ_EVENT_LINK_CHANGED 0x0001
@ -140,29 +110,17 @@ struct dpsw_irq_cfg {
int irq_num;
};
int dpsw_set_irq_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u8 en);
int dpsw_set_irq_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u8 en);
int dpsw_set_irq_mask(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 mask);
int dpsw_set_irq_mask(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 mask);
int dpsw_get_irq_status(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 *status);
int dpsw_get_irq_status(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 *status);
int dpsw_clear_irq_status(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u8 irq_index,
u32 status);
int dpsw_clear_irq_status(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u8 irq_index, u32 status);
/**
* struct dpsw_attr - Structure representing DPSW attributes
@ -203,9 +161,7 @@ struct dpsw_attr {
enum dpsw_broadcast_cfg broadcast_cfg;
};
int dpsw_get_attributes(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
int dpsw_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
struct dpsw_attr *attr);
/**
@ -229,9 +185,6 @@ enum dpsw_queue_type {
DPSW_QUEUE_RX_ERR,
};
/**
* Maximum number of DPBP
*/
#define DPSW_MAX_DPBP 8
/**
@ -293,21 +246,9 @@ enum dpsw_action {
DPSW_ACTION_REDIRECT = 1
};
/**
* Enable auto-negotiation
*/
#define DPSW_LINK_OPT_AUTONEG 0x0000000000000001ULL
/**
* Enable half-duplex mode
*/
#define DPSW_LINK_OPT_HALF_DUPLEX 0x0000000000000002ULL
/**
* Enable pause frames
*/
#define DPSW_LINK_OPT_PAUSE 0x0000000000000004ULL
/**
* Enable a-symmetric pause frames
*/
#define DPSW_LINK_OPT_ASYM_PAUSE 0x0000000000000008ULL
/**
@ -320,11 +261,9 @@ struct dpsw_link_cfg {
u64 options;
};
int dpsw_if_set_link_cfg(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_link_cfg(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
struct dpsw_link_cfg *cfg);
/**
* struct dpsw_link_state - Structure representing DPSW link state
* @rate: Rate
@ -337,11 +276,8 @@ struct dpsw_link_state {
u8 up;
};
int dpsw_if_get_link_state(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
struct dpsw_link_state *state);
int dpsw_if_get_link_state(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, struct dpsw_link_state *state);
/**
* struct dpsw_tci_cfg - Tag Control Information (TCI) configuration
@ -362,24 +298,19 @@ struct dpsw_tci_cfg {
u16 vlan_id;
};
int dpsw_if_set_tci(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_tci(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
const struct dpsw_tci_cfg *cfg);
int dpsw_if_get_tci(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_get_tci(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
struct dpsw_tci_cfg *cfg);
/**
* enum dpsw_stp_state - Spanning Tree Protocol (STP) states
* @DPSW_STP_STATE_BLOCKING: Blocking state
* @DPSW_STP_STATE_DISABLED: Disabled state
* @DPSW_STP_STATE_LISTENING: Listening state
* @DPSW_STP_STATE_LEARNING: Learning state
* @DPSW_STP_STATE_FORWARDING: Forwarding state
* @DPSW_STP_STATE_BLOCKING: Blocking state
*
*/
enum dpsw_stp_state {
@ -400,10 +331,7 @@ struct dpsw_stp_cfg {
enum dpsw_stp_state state;
};
int dpsw_if_set_stp(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
int dpsw_if_set_stp(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id,
const struct dpsw_stp_cfg *cfg);
/**
@ -451,22 +379,12 @@ enum dpsw_counter {
DPSW_CNT_ING_NO_BUFF_DISCARD = 0xc,
};
int dpsw_if_get_counter(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
enum dpsw_counter type,
u64 *counter);
int dpsw_if_get_counter(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, enum dpsw_counter type, u64 *counter);
int dpsw_if_enable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id);
int dpsw_if_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id);
int dpsw_if_disable(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id);
int dpsw_if_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 if_id);
/**
* struct dpsw_if_attr - Structure representing DPSW interface attributes
@ -496,11 +414,8 @@ struct dpsw_if_attr {
int dpsw_if_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, struct dpsw_if_attr *attr);
int dpsw_if_set_max_frame_length(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 if_id,
u16 frame_length);
int dpsw_if_set_max_frame_length(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, u16 frame_length);
/**
* struct dpsw_vlan_cfg - VLAN Configuration
@ -510,11 +425,8 @@ struct dpsw_vlan_cfg {
u16 fdb_id;
};
int dpsw_vlan_add(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_cfg *cfg);
int dpsw_vlan_add(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_cfg *cfg);
#define DPSW_VLAN_ADD_IF_OPT_FDB_ID 0x0001
@ -524,6 +436,10 @@ int dpsw_vlan_add(struct fsl_mc_io *mc_io,
* list for this VLAN
* @if_id: The set of interfaces that are
* assigned to the egress list for this VLAN
* @options: Options map for this command (DPSW_VLAN_ADD_IF_OPT_FDB_ID)
* @fdb_id: FDB id to be used by this VLAN on these specific interfaces
* (taken into account only if the DPSW_VLAN_ADD_IF_OPT_FDB_ID is
* specified in the options field)
*/
struct dpsw_vlan_if_cfg {
u16 num_ifs;
@ -532,33 +448,19 @@ struct dpsw_vlan_if_cfg {
u16 fdb_id;
};
int dpsw_vlan_add_if(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_add_if(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_add_if_untagged(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_remove_if(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 vlan_id,
const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_remove_if_untagged(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id, const struct dpsw_vlan_if_cfg *cfg);
int dpsw_vlan_remove(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
int dpsw_vlan_remove(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 vlan_id);
/**
@ -583,17 +485,11 @@ struct dpsw_fdb_unicast_cfg {
u16 if_egress;
};
int dpsw_fdb_add_unicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_unicast_cfg *cfg);
int dpsw_fdb_add_unicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_unicast_cfg *cfg);
int dpsw_fdb_remove_unicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_unicast_cfg *cfg);
int dpsw_fdb_remove_unicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_unicast_cfg *cfg);
#define DPSW_FDB_ENTRY_TYPE_DYNAMIC BIT(0)
#define DPSW_FDB_ENTRY_TYPE_UNICAST BIT(1)
@ -612,13 +508,8 @@ struct fdb_dump_entry {
u8 if_mask[8];
};
int dpsw_fdb_dump(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
u64 iova_addr,
u32 iova_size,
u16 *num_entries);
int dpsw_fdb_dump(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u16 fdb_id,
u64 iova_addr, u32 iova_size, u16 *num_entries);
/**
* struct dpsw_fdb_multicast_cfg - Multi-cast entry configuration
@ -634,17 +525,11 @@ struct dpsw_fdb_multicast_cfg {
u16 if_id[DPSW_MAX_IF];
};
int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_multicast_cfg *cfg);
int dpsw_fdb_add_multicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_multicast_cfg *cfg);
int dpsw_fdb_remove_multicast(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 token,
u16 fdb_id,
const struct dpsw_fdb_multicast_cfg *cfg);
int dpsw_fdb_remove_multicast(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 fdb_id, const struct dpsw_fdb_multicast_cfg *cfg);
/**
* enum dpsw_fdb_learning_mode - Auto-learning modes
@ -699,20 +584,12 @@ struct dpsw_fdb_attr {
u16 max_fdb_mc_groups;
};
int dpsw_get_api_version(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 *major_ver,
u16 *minor_ver);
int dpsw_get_api_version(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 *major_ver, u16 *minor_ver);
int dpsw_if_get_port_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
u16 if_id, u8 mac_addr[6]);
int dpsw_if_get_primary_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 token, u16 if_id, u8 mac_addr[6]);
int dpsw_if_set_primary_mac_addr(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 token, u16 if_id, u8 mac_addr[6]);
/**
* struct dpsw_fdb_cfg - FDB Configuration
* @num_fdb_entries: Number of FDB entries