162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Driver for Microsemi VSC85xx PHYs 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2020 Microsemi Corporation 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef _MSCC_PHY_MACSEC_H_ 962306a36Sopenharmony_ci#define _MSCC_PHY_MACSEC_H_ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <net/macsec.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define MSCC_MS_MAX_FLOWS 16 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define CONTROL_TYPE_EGRESS 0x6 1662306a36Sopenharmony_ci#define CONTROL_TYPE_INGRESS 0xf 1762306a36Sopenharmony_ci#define CONTROL_IV0 BIT(5) 1862306a36Sopenharmony_ci#define CONTROL_IV1 BIT(6) 1962306a36Sopenharmony_ci#define CONTROL_IV2 BIT(7) 2062306a36Sopenharmony_ci#define CONTROL_UPDATE_SEQ BIT(13) 2162306a36Sopenharmony_ci#define CONTROL_IV_IN_SEQ BIT(14) 2262306a36Sopenharmony_ci#define CONTROL_ENCRYPT_AUTH BIT(15) 2362306a36Sopenharmony_ci#define CONTROL_KEY_IN_CTX BIT(16) 2462306a36Sopenharmony_ci#define CONTROL_CRYPTO_ALG(x) ((x) << 17) 2562306a36Sopenharmony_ci#define CTRYPTO_ALG_AES_CTR_128 0x5 2662306a36Sopenharmony_ci#define CTRYPTO_ALG_AES_CTR_192 0x6 2762306a36Sopenharmony_ci#define CTRYPTO_ALG_AES_CTR_256 0x7 2862306a36Sopenharmony_ci#define CONTROL_DIGEST_TYPE(x) ((x) << 21) 2962306a36Sopenharmony_ci#define CONTROL_AUTH_ALG(x) ((x) << 23) 3062306a36Sopenharmony_ci#define AUTH_ALG_AES_GHAS 0x4 3162306a36Sopenharmony_ci#define CONTROL_AN(x) ((x) << 26) 3262306a36Sopenharmony_ci#define CONTROL_SEQ_TYPE(x) ((x) << 28) 3362306a36Sopenharmony_ci#define CONTROL_SEQ_MASK BIT(30) 3462306a36Sopenharmony_ci#define CONTROL_CONTEXT_ID BIT(31) 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cienum mscc_macsec_destination_ports { 3762306a36Sopenharmony_ci MSCC_MS_PORT_COMMON = 0, 3862306a36Sopenharmony_ci MSCC_MS_PORT_RSVD = 1, 3962306a36Sopenharmony_ci MSCC_MS_PORT_CONTROLLED = 2, 4062306a36Sopenharmony_ci MSCC_MS_PORT_UNCONTROLLED = 3, 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cienum mscc_macsec_drop_actions { 4462306a36Sopenharmony_ci MSCC_MS_ACTION_BYPASS_CRC = 0, 4562306a36Sopenharmony_ci MSCC_MS_ACTION_BYPASS_BAD = 1, 4662306a36Sopenharmony_ci MSCC_MS_ACTION_DROP = 2, 4762306a36Sopenharmony_ci MSCC_MS_ACTION_BYPASS = 3, 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cienum mscc_macsec_flow_types { 5162306a36Sopenharmony_ci MSCC_MS_FLOW_BYPASS = 0, 5262306a36Sopenharmony_ci MSCC_MS_FLOW_DROP = 1, 5362306a36Sopenharmony_ci MSCC_MS_FLOW_INGRESS = 2, 5462306a36Sopenharmony_ci MSCC_MS_FLOW_EGRESS = 3, 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cienum mscc_macsec_validate_levels { 5862306a36Sopenharmony_ci MSCC_MS_VALIDATE_DISABLED = 0, 5962306a36Sopenharmony_ci MSCC_MS_VALIDATE_CHECK = 1, 6062306a36Sopenharmony_ci MSCC_MS_VALIDATE_STRICT = 2, 6162306a36Sopenharmony_ci}; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cienum macsec_bank { 6462306a36Sopenharmony_ci FC_BUFFER = 0x04, 6562306a36Sopenharmony_ci HOST_MAC = 0x05, 6662306a36Sopenharmony_ci LINE_MAC = 0x06, 6762306a36Sopenharmony_ci PROC_0 = 0x0e, 6862306a36Sopenharmony_ci PROC_2 = 0x0f, 6962306a36Sopenharmony_ci MACSEC_INGR = 0x38, 7062306a36Sopenharmony_ci MACSEC_EGR = 0x3c, 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cistruct macsec_flow { 7462306a36Sopenharmony_ci struct list_head list; 7562306a36Sopenharmony_ci enum mscc_macsec_destination_ports port; 7662306a36Sopenharmony_ci enum macsec_bank bank; 7762306a36Sopenharmony_ci u32 index; 7862306a36Sopenharmony_ci int assoc_num; 7962306a36Sopenharmony_ci bool has_transformation; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci /* Highest takes precedence [0..15] */ 8262306a36Sopenharmony_ci u8 priority; 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci union { 8562306a36Sopenharmony_ci struct macsec_rx_sa *rx_sa; 8662306a36Sopenharmony_ci struct macsec_tx_sa *tx_sa; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci /* Matching */ 9062306a36Sopenharmony_ci struct { 9162306a36Sopenharmony_ci u8 sci:1; 9262306a36Sopenharmony_ci u8 tagged:1; 9362306a36Sopenharmony_ci u8 untagged:1; 9462306a36Sopenharmony_ci u8 etype:1; 9562306a36Sopenharmony_ci } match; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci u16 etype; 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci /* Action */ 10062306a36Sopenharmony_ci struct { 10162306a36Sopenharmony_ci u8 bypass:1; 10262306a36Sopenharmony_ci u8 drop:1; 10362306a36Sopenharmony_ci } action; 10462306a36Sopenharmony_ci}; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci#define MSCC_EXT_PAGE_MACSEC_17 17 10762306a36Sopenharmony_ci#define MSCC_EXT_PAGE_MACSEC_18 18 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#define MSCC_EXT_PAGE_MACSEC_19 19 11062306a36Sopenharmony_ci#define MSCC_PHY_MACSEC_19_REG_ADDR(x) (x) 11162306a36Sopenharmony_ci#define MSCC_PHY_MACSEC_19_TARGET(x) ((x) << 12) 11262306a36Sopenharmony_ci#define MSCC_PHY_MACSEC_19_READ BIT(14) 11362306a36Sopenharmony_ci#define MSCC_PHY_MACSEC_19_CMD BIT(15) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci#define MSCC_EXT_PAGE_MACSEC_20 20 11662306a36Sopenharmony_ci#define MSCC_PHY_MACSEC_20_TARGET(x) (x) 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci#define MSCC_MS_XFORM_REC(x, y) (((x) << 5) + (y)) 11962306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG 0x800 12062306a36Sopenharmony_ci#define MSCC_MS_FC_CFG 0x804 12162306a36Sopenharmony_ci#define MSCC_MS_SAM_MAC_SA_MATCH_LO(x) (0x1000 + ((x) << 4)) 12262306a36Sopenharmony_ci#define MSCC_MS_SAM_MAC_SA_MATCH_HI(x) (0x1001 + ((x) << 4)) 12362306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH(x) (0x1004 + ((x) << 4)) 12462306a36Sopenharmony_ci#define MSCC_MS_SAM_MATCH_SCI_LO(x) (0x1005 + ((x) << 4)) 12562306a36Sopenharmony_ci#define MSCC_MS_SAM_MATCH_SCI_HI(x) (0x1006 + ((x) << 4)) 12662306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK(x) (0x1007 + ((x) << 4)) 12762306a36Sopenharmony_ci#define MSCC_MS_SAM_ENTRY_SET1 0x1808 12862306a36Sopenharmony_ci#define MSCC_MS_SAM_ENTRY_CLEAR1 0x180c 12962306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL(x) (0x1c00 + (x)) 13062306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG 0x1e40 13162306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP 0x1e51 13262306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP 0x1e52 13362306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL 0x1e5f 13462306a36Sopenharmony_ci#define MSCC_MS_COUNT_CONTROL 0x3204 13562306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CC_CONTROL 0x3a10 13662306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG 0x3a14 13762306a36Sopenharmony_ci#define MSCC_MS_VLAN_MTU_CHECK(x) (0x3c40 + (x)) 13862306a36Sopenharmony_ci#define MSCC_MS_NON_VLAN_MTU_CHECK 0x3c48 13962306a36Sopenharmony_ci#define MSCC_MS_PP_CTRL 0x3c4b 14062306a36Sopenharmony_ci#define MSCC_MS_STATUS_CONTEXT_CTRL 0x3d02 14162306a36Sopenharmony_ci#define MSCC_MS_INTR_CTRL_STATUS 0x3d04 14262306a36Sopenharmony_ci#define MSCC_MS_BLOCK_CTX_UPDATE 0x3d0c 14362306a36Sopenharmony_ci#define MSCC_MS_AIC_CTRL 0x3e02 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci/* MACSEC_ENA_CFG */ 14662306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_CLK_ENA BIT(0) 14762306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_SW_RST BIT(1) 14862306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_MACSEC_BYPASS_ENA BIT(8) 14962306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_MACSEC_ENA BIT(9) 15062306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_MACSEC_SPEED_MODE(x) ((x) << 10) 15162306a36Sopenharmony_ci#define MSCC_MS_ENA_CFG_MACSEC_SPEED_MODE_M GENMASK(12, 10) 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci/* MACSEC_FC_CFG */ 15462306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_FCBUF_ENA BIT(0) 15562306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_USE_PKT_EXPANSION_INDICATION BIT(1) 15662306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_LOW_THRESH(x) ((x) << 4) 15762306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_LOW_THRESH_M GENMASK(7, 4) 15862306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_HIGH_THRESH(x) ((x) << 8) 15962306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_HIGH_THRESH_M GENMASK(11, 8) 16062306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_LOW_BYTES_VAL(x) ((x) << 12) 16162306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_LOW_BYTES_VAL_M GENMASK(14, 12) 16262306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_HIGH_BYTES_VAL(x) ((x) << 16) 16362306a36Sopenharmony_ci#define MSCC_MS_FC_CFG_HIGH_BYTES_VAL_M GENMASK(18, 16) 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci/* MSCC_MS_SAM_MAC_SA_MATCH_HI */ 16662306a36Sopenharmony_ci#define MSCC_MS_SAM_MAC_SA_MATCH_HI_ETYPE(x) ((x) << 16) 16762306a36Sopenharmony_ci#define MSCC_MS_SAM_MAC_SA_MATCH_HI_ETYPE_M GENMASK(31, 16) 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci/* MACSEC_SAM_MISC_MATCH */ 17062306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_VLAN_VALID BIT(0) 17162306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_QINQ_FOUND BIT(1) 17262306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_STAG_VALID BIT(2) 17362306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_QTAG_VALID BIT(3) 17462306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_VLAN_UP(x) ((x) << 4) 17562306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_VLAN_UP_M GENMASK(6, 4) 17662306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_CONTROL_PACKET BIT(7) 17762306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_UNTAGGED BIT(8) 17862306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_TAGGED BIT(9) 17962306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_BAD_TAG BIT(10) 18062306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_KAY_TAG BIT(11) 18162306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_SOURCE_PORT(x) ((x) << 12) 18262306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_SOURCE_PORT_M GENMASK(13, 12) 18362306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_PRIORITY(x) ((x) << 16) 18462306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_PRIORITY_M GENMASK(19, 16) 18562306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_AN(x) ((x) << 24) 18662306a36Sopenharmony_ci#define MSCC_MS_SAM_MISC_MATCH_TCI(x) ((x) << 26) 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci/* MACSEC_SAM_MASK */ 18962306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_MAC_SA_MASK(x) (x) 19062306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_MAC_SA_MASK_M GENMASK(5, 0) 19162306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_MAC_DA_MASK(x) ((x) << 6) 19262306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_MAC_DA_MASK_M GENMASK(11, 6) 19362306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_MAC_ETYPE_MASK BIT(12) 19462306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_VLAN_VLD_MASK BIT(13) 19562306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_QINQ_FOUND_MASK BIT(14) 19662306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_STAG_VLD_MASK BIT(15) 19762306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_QTAG_VLD_MASK BIT(16) 19862306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_VLAN_UP_MASK BIT(17) 19962306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_VLAN_ID_MASK BIT(18) 20062306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_SOURCE_PORT_MASK BIT(19) 20162306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_CTL_PACKET_MASK BIT(20) 20262306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_VLAN_UP_INNER_MASK BIT(21) 20362306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_VLAN_ID_INNER_MASK BIT(22) 20462306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_SCI_MASK BIT(23) 20562306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_AN_MASK(x) ((x) << 24) 20662306a36Sopenharmony_ci#define MSCC_MS_SAM_MASK_TCI_MASK(x) ((x) << 26) 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci/* MACSEC_SAM_FLOW_CTRL_EGR */ 20962306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_FLOW_TYPE(x) (x) 21062306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_FLOW_TYPE_M GENMASK(1, 0) 21162306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_DEST_PORT(x) ((x) << 2) 21262306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_DEST_PORT_M GENMASK(3, 2) 21362306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_RESV_4 BIT(4) 21462306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_FLOW_CRYPT_AUTH BIT(5) 21562306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_DROP_ACTION(x) ((x) << 6) 21662306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_DROP_ACTION_M GENMASK(7, 6) 21762306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_RESV_15_TO_8(x) ((x) << 8) 21862306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_RESV_15_TO_8_M GENMASK(15, 8) 21962306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_PROTECT_FRAME BIT(16) 22062306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_REPLAY_PROTECT BIT(16) 22162306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_SA_IN_USE BIT(17) 22262306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_INCLUDE_SCI BIT(18) 22362306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_USE_ES BIT(19) 22462306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_USE_SCB BIT(20) 22562306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_VALIDATE_FRAMES(x) ((x) << 19) 22662306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_TAG_BYPASS_SIZE(x) ((x) << 21) 22762306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_TAG_BYPASS_SIZE_M GENMASK(22, 21) 22862306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_RESV_23 BIT(23) 22962306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_CONFIDENTIALITY_OFFSET(x) ((x) << 24) 23062306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_CONFIDENTIALITY_OFFSET_M GENMASK(30, 24) 23162306a36Sopenharmony_ci#define MSCC_MS_SAM_FLOW_CTRL_CONF_PROTECT BIT(31) 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci/* MACSEC_SAM_CP_TAG */ 23462306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_MAP_TBL(x) (x) 23562306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_MAP_TBL_M GENMASK(23, 0) 23662306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_DEF_UP(x) ((x) << 24) 23762306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_DEF_UP_M GENMASK(26, 24) 23862306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_STAG_UP_EN BIT(27) 23962306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_QTAG_UP_EN BIT(28) 24062306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_PARSE_QINQ BIT(29) 24162306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_PARSE_STAG BIT(30) 24262306a36Sopenharmony_ci#define MSCC_MS_SAM_CP_TAG_PARSE_QTAG BIT(31) 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci/* MACSEC_SAM_NM_FLOW_NCP */ 24562306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_UNTAGGED_FLOW_TYPE(x) (x) 24662306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_UNTAGGED_DEST_PORT(x) ((x) << 2) 24762306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_UNTAGGED_DROP_ACTION(x) ((x) << 6) 24862306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_TAGGED_FLOW_TYPE(x) ((x) << 8) 24962306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_TAGGED_DEST_PORT(x) ((x) << 10) 25062306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_TAGGED_DROP_ACTION(x) ((x) << 14) 25162306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_BADTAG_FLOW_TYPE(x) ((x) << 16) 25262306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_BADTAG_DEST_PORT(x) ((x) << 18) 25362306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_BADTAG_DROP_ACTION(x) ((x) << 22) 25462306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_KAY_FLOW_TYPE(x) ((x) << 24) 25562306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_KAY_DEST_PORT(x) ((x) << 26) 25662306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_NCP_KAY_DROP_ACTION(x) ((x) << 30) 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci/* MACSEC_SAM_NM_FLOW_CP */ 25962306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_UNTAGGED_FLOW_TYPE(x) (x) 26062306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_UNTAGGED_DEST_PORT(x) ((x) << 2) 26162306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_UNTAGGED_DROP_ACTION(x) ((x) << 6) 26262306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_TAGGED_FLOW_TYPE(x) ((x) << 8) 26362306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_TAGGED_DEST_PORT(x) ((x) << 10) 26462306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_TAGGED_DROP_ACTION(x) ((x) << 14) 26562306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_BADTAG_FLOW_TYPE(x) ((x) << 16) 26662306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_BADTAG_DEST_PORT(x) ((x) << 18) 26762306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_BADTAG_DROP_ACTION(x) ((x) << 22) 26862306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_KAY_FLOW_TYPE(x) ((x) << 24) 26962306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_KAY_DEST_PORT(x) ((x) << 26) 27062306a36Sopenharmony_ci#define MSCC_MS_SAM_NM_FLOW_CP_KAY_DROP_ACTION(x) ((x) << 30) 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci/* MACSEC_MISC_CONTROL */ 27362306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_MC_LATENCY_FIX(x) (x) 27462306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_MC_LATENCY_FIX_M GENMASK(5, 0) 27562306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_STATIC_BYPASS BIT(8) 27662306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_NM_MACSEC_EN BIT(9) 27762306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_VALIDATE_FRAMES(x) ((x) << 10) 27862306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_VALIDATE_FRAMES_M GENMASK(11, 10) 27962306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_XFORM_REC_SIZE(x) ((x) << 24) 28062306a36Sopenharmony_ci#define MSCC_MS_MISC_CONTROL_XFORM_REC_SIZE_M GENMASK(25, 24) 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci/* MACSEC_COUNT_CONTROL */ 28362306a36Sopenharmony_ci#define MSCC_MS_COUNT_CONTROL_RESET_ALL BIT(0) 28462306a36Sopenharmony_ci#define MSCC_MS_COUNT_CONTROL_DEBUG_ACCESS BIT(1) 28562306a36Sopenharmony_ci#define MSCC_MS_COUNT_CONTROL_SATURATE_CNTRS BIT(2) 28662306a36Sopenharmony_ci#define MSCC_MS_COUNT_CONTROL_AUTO_CNTR_RESET BIT(3) 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci/* MACSEC_PARAMS2_IG_CC_CONTROL */ 28962306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CC_CONTROL_NON_MATCH_CTRL_ACT BIT(14) 29062306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CC_CONTROL_NON_MATCH_ACT BIT(15) 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci/* MACSEC_PARAMS2_IG_CP_TAG */ 29362306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_MAP_TBL(x) (x) 29462306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_MAP_TBL_M GENMASK(23, 0) 29562306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_DEF_UP(x) ((x) << 24) 29662306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_DEF_UP_M GENMASK(26, 24) 29762306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_STAG_UP_EN BIT(27) 29862306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_QTAG_UP_EN BIT(28) 29962306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_PARSE_QINQ BIT(29) 30062306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_PARSE_STAG BIT(30) 30162306a36Sopenharmony_ci#define MSCC_MS_PARAMS2_IG_CP_TAG_PARSE_QTAG BIT(31) 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci/* MACSEC_VLAN_MTU_CHECK */ 30462306a36Sopenharmony_ci#define MSCC_MS_VLAN_MTU_CHECK_MTU_COMPARE(x) (x) 30562306a36Sopenharmony_ci#define MSCC_MS_VLAN_MTU_CHECK_MTU_COMPARE_M GENMASK(14, 0) 30662306a36Sopenharmony_ci#define MSCC_MS_VLAN_MTU_CHECK_MTU_COMP_DROP BIT(15) 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ci/* MACSEC_NON_VLAN_MTU_CHECK */ 30962306a36Sopenharmony_ci#define MSCC_MS_NON_VLAN_MTU_CHECK_NV_MTU_COMPARE(x) (x) 31062306a36Sopenharmony_ci#define MSCC_MS_NON_VLAN_MTU_CHECK_NV_MTU_COMPARE_M GENMASK(14, 0) 31162306a36Sopenharmony_ci#define MSCC_MS_NON_VLAN_MTU_CHECK_NV_MTU_COMP_DROP BIT(15) 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci/* MACSEC_PP_CTRL */ 31462306a36Sopenharmony_ci#define MSCC_MS_PP_CTRL_MACSEC_OCTET_INCR_MODE BIT(0) 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci/* MACSEC_INTR_CTRL_STATUS */ 31762306a36Sopenharmony_ci#define MSCC_MS_INTR_CTRL_STATUS_INTR_CLR_STATUS(x) (x) 31862306a36Sopenharmony_ci#define MSCC_MS_INTR_CTRL_STATUS_INTR_CLR_STATUS_M GENMASK(15, 0) 31962306a36Sopenharmony_ci#define MSCC_MS_INTR_CTRL_STATUS_INTR_ENABLE(x) ((x) << 16) 32062306a36Sopenharmony_ci#define MSCC_MS_INTR_CTRL_STATUS_INTR_ENABLE_M GENMASK(31, 16) 32162306a36Sopenharmony_ci#define MACSEC_INTR_CTRL_STATUS_ROLLOVER BIT(5) 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci#endif /* _MSCC_PHY_MACSEC_H_ */ 324