Commit d59bdda8 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'octeontx2-af-kpu'



Kiran Kumar K says:

====================
adding KPU profile changes for GTPU and custom

Adding changes to limit the KPU processing for GTPU headers to parse
packet up to L4 and added changes to variable length headers to parse LA
as part of PKIND action.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 24aa160d edadeb38
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ struct mbox_msghdr {
#define OTX2_MBOX_REQ_SIG (0xdead)
#define OTX2_MBOX_RSP_SIG (0xbeef)
	u16 sig;         /* Signature, for validating corrupted msgs */
#define OTX2_MBOX_VERSION (0x0009)
#define OTX2_MBOX_VERSION (0x000a)
	u16 ver;         /* Version of msg's structure for this ID */
	u16 next_msgoff; /* Offset of next msg within mailbox region */
	int rc;          /* Msg process'ed response code */
@@ -231,6 +231,8 @@ M(NPC_DELETE_FLOW, 0x600e, npc_delete_flow, \
M(NPC_MCAM_READ_ENTRY,	  0x600f, npc_mcam_read_entry,			\
				  npc_mcam_read_entry_req,		\
				  npc_mcam_read_entry_rsp)		\
M(NPC_SET_PKIND,        0x6010,   npc_set_pkind,                        \
				  npc_set_pkind, msg_rsp)               \
M(NPC_MCAM_READ_BASE_RULE, 0x6011, npc_read_base_steer_rule,            \
				   msg_req, npc_mcam_read_base_rule_rsp)  \
M(NPC_MCAM_GET_STATS, 0x6012, npc_mcam_entry_stats,                     \
@@ -599,6 +601,22 @@ struct rpm_stats_rsp {
	u64 tx_stats[RPM_TX_STATS_COUNT];
};

struct npc_set_pkind {
	struct mbox_msghdr hdr;
#define OTX2_PRIV_FLAGS_DEFAULT  BIT_ULL(0)
#define OTX2_PRIV_FLAGS_CUSTOM   BIT_ULL(63)
	u64 mode;
#define PKIND_TX		BIT_ULL(0)
#define PKIND_RX		BIT_ULL(1)
	u8 dir;
	u8 pkind; /* valid only in case custom flag */
	u8 var_len_off; /* Offset of custom header length field.
			 * Valid only for pkind NPC_RX_CUSTOM_PRE_L2_PKIND
			 */
	u8 var_len_off_mask; /* Mask for length with in offset */
	u8 shift_dir; /* shift direction to get length of the header at var_len_off */
};

/* NPA mbox message formats */

/* NPA mailbox error codes
+7 −2
Original line number Diff line number Diff line
@@ -31,9 +31,9 @@ enum npc_kpu_la_ltype {
	NPC_LT_LA_HIGIG2_ETHER,
	NPC_LT_LA_IH_NIX_HIGIG2_ETHER,
	NPC_LT_LA_CUSTOM_L2_90B_ETHER,
	NPC_LT_LA_CH_LEN_90B_ETHER,
	NPC_LT_LA_CPT_HDR,
	NPC_LT_LA_CUSTOM_L2_24B_ETHER,
	NPC_LT_LA_CUSTOM_PRE_L2_ETHER,
	NPC_LT_LA_CUSTOM0 = 0xE,
	NPC_LT_LA_CUSTOM1 = 0xF,
};
@@ -148,10 +148,11 @@ enum npc_kpu_lh_ltype {
 * Software assigns pkind for each incoming port such as CGX
 * Ethernet interfaces, LBK interfaces, etc.
 */
#define NPC_UNRESERVED_PKIND_COUNT NPC_RX_VLAN_EXDSA_PKIND
#define NPC_UNRESERVED_PKIND_COUNT NPC_RX_CUSTOM_PRE_L2_PKIND

enum npc_pkind_type {
	NPC_RX_LBK_PKIND = 0ULL,
	NPC_RX_CUSTOM_PRE_L2_PKIND = 55ULL,
	NPC_RX_VLAN_EXDSA_PKIND = 56ULL,
	NPC_RX_CHLEN24B_PKIND = 57ULL,
	NPC_RX_CPT_HDR_PKIND,
@@ -162,6 +163,10 @@ enum npc_pkind_type {
	NPC_TX_DEF_PKIND,	/* NIX-TX PKIND */
};

enum npc_interface_type {
	NPC_INTF_MODE_DEF,
};

/* list of known and supported fields in packet header and
 * fields present in key structure.
 */
+65 −338
Original line number Diff line number Diff line
@@ -176,9 +176,8 @@ enum npc_kpu_parser_state {
	NPC_S_KPU1_EXDSA,
	NPC_S_KPU1_HIGIG2,
	NPC_S_KPU1_IH_NIX_HIGIG2,
	NPC_S_KPU1_CUSTOM_L2_90B,
	NPC_S_KPU1_CUSTOM_PRE_L2,
	NPC_S_KPU1_CPT_HDR,
	NPC_S_KPU1_CUSTOM_L2_24B,
	NPC_S_KPU1_VLAN_EXDSA,
	NPC_S_KPU2_CTAG,
	NPC_S_KPU2_CTAG2,
@@ -979,8 +978,8 @@ static struct npc_kpu_profile_action ikpu_action_entries[] = {
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		12, 16, 20, 0, 0,
		NPC_S_KPU1_ETHER, 0, 0,
		NPC_LID_LA, NPC_LT_NA,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_PRE_L2_ETHER,
		0,
		0, 0, 0, 0,

@@ -996,9 +995,9 @@ static struct npc_kpu_profile_action ikpu_action_entries[] = {
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		36, 40, 44, 0, 0,
		NPC_S_KPU1_CUSTOM_L2_24B, 0, 0,
		NPC_LID_LA, NPC_LT_NA,
		12, 16, 20, 0, 0,
		NPC_S_KPU1_CUSTOM_PRE_L2, 24, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,

@@ -1014,9 +1013,9 @@ static struct npc_kpu_profile_action ikpu_action_entries[] = {
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		102, 106, 110, 0, 0,
		NPC_S_KPU1_CUSTOM_L2_90B, 0, 0,
		NPC_LID_LA, NPC_LT_NA,
		12, 16, 20, 0, 0,
		NPC_S_KPU1_CUSTOM_PRE_L2, 90, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		0,
		0, 0, 0, 0,

@@ -1711,7 +1710,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_IP,
		0xffff,
		0x0000,
@@ -1720,7 +1719,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_IP6,
		0xffff,
		0x0000,
@@ -1729,7 +1728,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_ARP,
		0xffff,
		0x0000,
@@ -1738,7 +1737,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_RARP,
		0xffff,
		0x0000,
@@ -1747,7 +1746,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_PTP,
		0xffff,
		0x0000,
@@ -1756,7 +1755,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_FCOE,
		0xffff,
		0x0000,
@@ -1765,7 +1764,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_CTAG,
		0xffff,
		NPC_ETYPE_CTAG,
@@ -1774,7 +1773,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_CTAG,
		0xffff,
		0x0000,
@@ -1783,7 +1782,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_SBTAG,
		0xffff,
		0x0000,
@@ -1792,7 +1791,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_QINQ,
		0xffff,
		0x0000,
@@ -1801,7 +1800,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_ETAG,
		0xffff,
		0x0000,
@@ -1810,7 +1809,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_MPLSU,
		0xffff,
		0x0000,
@@ -1819,7 +1818,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_MPLSM,
		0xffff,
		0x0000,
@@ -1828,7 +1827,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		NPC_ETYPE_NSH,
		0xffff,
		0x0000,
@@ -1837,7 +1836,7 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_90B, 0xff,
		NPC_S_KPU1_CUSTOM_PRE_L2, 0xff,
		0x0000,
		0x0000,
		0x0000,
@@ -1926,141 +1925,6 @@ static struct npc_kpu_profile_cam kpu1_cam_entries[] = {
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_IP,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_IP6,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_ARP,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_RARP,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_PTP,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_FCOE,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_CTAG,
		0xffff,
		NPC_ETYPE_CTAG,
		0xffff,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_CTAG,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_SBTAG,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_QINQ,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_ETAG,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_MPLSU,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_MPLSM,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		NPC_ETYPE_NSH,
		0xffff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_CUSTOM_L2_24B, 0xff,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU1_VLAN_EXDSA, 0xff,
		NPC_ETYPE_CTAG,
@@ -7492,15 +7356,6 @@ static struct npc_kpu_profile_cam kpu9_cam_entries[] = {
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU9_GTPU, 0xff,
		0x0000,
		0x0000,
		NPC_GTP_PT_GTP | NPC_GTP_VER1 | NPC_GTP_MT_G_PDU,
		NPC_GTP_PT_MASK | NPC_GTP_VER_MASK | NPC_GTP_MT_MASK,
		0x0000,
		0x0000,
	},
	{
		NPC_S_KPU9_GTPU, 0xff,
		0x0000,
@@ -9192,121 +9047,121 @@ static struct npc_kpu_profile_action kpu1_action_entries[] = {
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 0, 6, 3, 0,
		NPC_S_KPU5_IP, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_IP, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		6, 0, 0, 3, 0,
		NPC_S_KPU5_IP6, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_IP6, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_ARP, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_ARP, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_RARP, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_RARP, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_PTP, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_PTP, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_FCOE, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_S_KPU5_FCOE, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 12, 0, 0, 0,
		NPC_S_KPU2_CTAG2, 102, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		NPC_S_KPU2_CTAG2, 12, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 0, 0, 0,
		NPC_S_KPU2_CTAG, 102, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		NPC_S_KPU2_CTAG, 12, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 22, 0, 0,
		NPC_S_KPU2_SBTAG, 102, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		NPC_S_KPU2_SBTAG, 12, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 0, 0, 0,
		NPC_S_KPU2_QINQ, 102, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		NPC_S_KPU2_QINQ, 12, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 12, 26, 0, 0,
		NPC_S_KPU2_ETAG, 102, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_ETAG,
		NPC_S_KPU2_ETAG, 12, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 6, 10, 2, 0,
		NPC_S_KPU4_MPLS, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_L_WITH_MPLS,
		NPC_S_KPU4_MPLS, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 6, 10, 2, 0,
		NPC_S_KPU4_MPLS, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_L_WITH_MPLS,
		NPC_S_KPU4_MPLS, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 0, 0, 2, 0,
		NPC_S_KPU4_NSH, 104, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_L_WITH_NSH,
		NPC_S_KPU4_NSH, 14, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 0, 1,
		NPC_S_NA, 0, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_90B_ETHER,
		NPC_F_LA_L_UNK_ETYPE,
		NPC_S_NA, 0, 0,
		NPC_LID_LA, NPC_LT_NA,
		0,
		0, 0, 0, 0,
	},
	{
@@ -9381,126 +9236,6 @@ static struct npc_kpu_profile_action kpu1_action_entries[] = {
		NPC_F_LA_L_UNK_ETYPE,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 0, 6, 3, 0,
		NPC_S_KPU5_IP, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		6, 0, 0, 3, 0,
		NPC_S_KPU5_IP6, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_ARP, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_RARP, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_PTP, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 3, 0,
		NPC_S_KPU5_FCOE, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		0,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 12, 0, 0, 0,
		NPC_S_KPU2_CTAG2, 36, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 0, 0, 0,
		NPC_S_KPU2_CTAG, 36, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 22, 0, 0,
		NPC_S_KPU2_SBTAG, 36, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		4, 8, 0, 0, 0,
		NPC_S_KPU2_QINQ, 36, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_VLAN,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 12, 26, 0, 0,
		NPC_S_KPU2_ETAG, 36, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_U_HAS_TAG | NPC_F_LA_L_WITH_ETAG,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 6, 10, 2, 0,
		NPC_S_KPU4_MPLS, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_L_WITH_MPLS,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 6, 10, 2, 0,
		NPC_S_KPU4_MPLS, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_L_WITH_MPLS,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		2, 0, 0, 2, 0,
		NPC_S_KPU4_NSH, 38, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_L_WITH_NSH,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		0, 0, 0, 0, 1,
		NPC_S_NA, 0, 1,
		NPC_LID_LA, NPC_LT_LA_CUSTOM_L2_24B_ETHER,
		NPC_F_LA_L_UNK_ETYPE,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		12, 0, 0, 1, 0,
@@ -14335,16 +14070,8 @@ static struct npc_kpu_profile_action kpu9_action_entries[] = {
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 0, 6, 2, 0,
		NPC_S_KPU12_TU_IP, 8, 1,
		NPC_LID_LE, NPC_LT_LE_GTPU,
		NPC_F_LE_L_GTPU_G_PDU,
		0, 0, 0, 0,
	},
	{
		NPC_ERRLEV_RE, NPC_EC_NOERR,
		8, 0, 6, 2, 0,
		NPC_S_KPU12_TU_IP, 8, 1,
		8, 0, 6, 2, 1,
		NPC_S_NA, 0, 1,
		NPC_LID_LE, NPC_LT_LE_GTPU,
		0,
		0, 0, 0, 0,
+5 −0
Original line number Diff line number Diff line
@@ -237,6 +237,7 @@ struct rvu_pfvf {
	bool	cgx_in_use; /* this PF/VF using CGX? */
	int	cgx_users;  /* number of cgx users - used only by PFs */

	int     intf_mode;
	u8	nix_blkaddr; /* BLKADDR_NIX0/1 assigned to this PF */
	u8	nix_rx_intf; /* NIX0_RX/NIX1_RX interface to NPC */
	u8	nix_tx_intf; /* NIX0_TX/NIX1_TX interface to NPC */
@@ -796,6 +797,7 @@ void npc_enable_mcam_entry(struct rvu *rvu, struct npc_mcam *mcam,
void npc_read_mcam_entry(struct rvu *rvu, struct npc_mcam *mcam,
			 int blkaddr, u16 src, struct mcam_entry *entry,
			 u8 *intf, u8 *ena);
bool is_cgx_config_permitted(struct rvu *rvu, u16 pcifunc);
bool is_mac_feature_supported(struct rvu *rvu, int pf, int feature);
u32  rvu_cgx_get_fifolen(struct rvu *rvu);
void *rvu_first_cgx_pdata(struct rvu *rvu);
@@ -829,4 +831,7 @@ void rvu_switch_enable(struct rvu *rvu);
void rvu_switch_disable(struct rvu *rvu);
void rvu_switch_update_rules(struct rvu *rvu, u16 pcifunc);

int rvu_npc_set_parse_mode(struct rvu *rvu, u16 pcifunc, u64 mode, u8 dir,
			   u64 pkind, u8 var_len_off, u8 var_len_off_mask,
			   u8 shift_dir);
#endif /* RVU_H */
+1 −1
Original line number Diff line number Diff line
@@ -411,7 +411,7 @@ int rvu_cgx_exit(struct rvu *rvu)
 * VF's of mapped PF and other PFs are not allowed. This fn() checks
 * whether a PFFUNC is permitted to do the config or not.
 */
static bool is_cgx_config_permitted(struct rvu *rvu, u16 pcifunc)
inline bool is_cgx_config_permitted(struct rvu *rvu, u16 pcifunc)
{
	if ((pcifunc & RVU_PFVF_FUNC_MASK) ||
	    !is_pf_cgxmapped(rvu, rvu_get_pf(pcifunc)))
Loading