/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, v.1, (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2014-2017 Cavium, Inc. * The contents of this file are subject to the terms of the Common Development * and Distribution License, v.1, (the "License"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at available * at http://opensource.org/licenses/CDDL-1.0 * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __TESTING__ #define __TESTING__ struct CfcLoadErrorTestParams { u8 testType; u8 errorBits; __le16 reserved1; __le32 cid; __le32 tid; __le32 reserved2; u8 reserved3[96]; }; struct EngineIsolationTestDmaRequestParams { __le32 dmaParams0; #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_DLENGTH_MASK 0xFFFF #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_DLENGTH_SHIFT 0 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_STINDEX_MASK 0x1FF #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_STINDEX_SHIFT 16 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_STHINT_MASK 0x3 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_STHINT_SHIFT 25 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_TPHVALID_MASK 0x7 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_TPHVALID_SHIFT 27 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ENDIANITY_MASK 0x3 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ENDIANITY_SHIFT 30 __le32 dmaParams1; #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ATC_MASK 0x7 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ATC_SHIFT 0 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_NOSNOOP_MASK 0x1 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_NOSNOOP_SHIFT 3 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_RELAXEDORDERING_MASK 0x1 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_RELAXEDORDERING_SHIFT 4 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRTYPE_MASK 0x1 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRTYPE_SHIFT 5 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_DONETYPE_MASK 0x1 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_DONETYPE_SHIFT 6 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_WAITFOREOP_MASK 0x1 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_WAITFOREOP_SHIFT 7 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_VQID_MASK 0x1F #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_VQID_SHIFT 8 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_LAST_MASK 0x7 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_LAST_SHIFT 13 #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_OFID_MASK 0xFFFF #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_OFID_SHIFT 16 __le32 dmaParams2; #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRLO_MASK 0xFFFFFFFF #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRLO_SHIFT 0 __le32 dmaParams3; #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRHI_MASK 0xFFFFFFFF #define ENGINEISOLATIONTESTDMAREQUESTPARAMS_ADDRHI_SHIFT 0 u8 immediateCount /* user should ensure that rest of the paramters agree (if needed) with the number of immediate dwords specified here */; u8 unusedPad8; __le16 unusedPad16; __le32 unusedPad; __le32 immediateDataValues[16]; }; enum EngineIsolationTestGrcAccessType { GRC_ACCESS_READ=1, GRC_ACCESS_WRITE=2, MAX_ENGINEISOLATIONTESTGRCACCESSTYPE }; struct EngineIsolationTestRequestParamsGrc { __le32 reg00Value /* Value to write to register, or value read back from register */; u8 requestType; u8 unused8; __le16 opaqueFid; __le32 regField; #define ENGINEISOLATIONTESTREQUESTPARAMSGRC_REG00ADDR_MASK 0x7FFFFF #define ENGINEISOLATIONTESTREQUESTPARAMSGRC_REG00ADDR_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSGRC_UNUSED9_MASK 0x1FF #define ENGINEISOLATIONTESTREQUESTPARAMSGRC_UNUSED9_SHIFT 23 __le32 unused32; __le32 unusedPad[22]; }; struct EngineIsolationTestRequestParamsSdmDma { __le32 hdrFields; #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_LENGTH_MASK 0xFFF /* (hdr) dma hdr length */ #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_LENGTH_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_SRC_MASK 0xF /* (hdr) dma src (type) */ #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_SRC_SHIFT 12 #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_DST_MASK 0xF /* (hdr) dma dst (type) */ #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_DST_SHIFT 16 #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_UNUSED_MASK 0xFFF /* (hdr) dma dst (type) */ #define ENGINEISOLATIONTESTREQUESTPARAMSSDMDMA_UNUSED_SHIFT 20 __le16 address /* (hdr) Short address in DMA hdr */; __le16 unused16; struct EngineIsolationTestDmaRequestParams dmaParams; __le32 unused128[2]; }; struct EngineIsolationTestRequestParamsPrmDma { __le32 hdr0; #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PB_MASK 0x1 /* (hdr) pbFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PB_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DIF_MASK 0x1 /* (hdr) difFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DIF_SHIFT 1 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_TR_MASK 0x1 /* (hdr) tr flag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_TR_SHIFT 2 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_LDRENQTRIG_MASK 0x1 /* (hdr) ldrEnqTrigFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_LDRENQTRIG_SHIFT 3 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_LDRDONETRIG_MASK 0x1 /* (hdr) ldrDoneTrigFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_LDRDONETRIG_SHIFT 4 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_WAITYEVENT_MASK 0x1 /* (hdr) waitYeventFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_WAITYEVENT_SHIFT 5 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_WAITUEVENT_MASK 0x1 /* (hdr) waitUeventFlag */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_WAITUEVENT_SHIFT 6 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PTUMODE_MASK 0x1 /* (hdr) ptuMode */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PTUMODE_SHIFT 7 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_CMDLENGTH_MASK 0xFF /* (hdr) cmd length */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_CMDLENGTH_SHIFT 8 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_SRC_MASK 0x7 /* (hdr) src */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_SRC_SHIFT 16 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DST_MASK 0x1 /* (hdr) dst */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DST_SHIFT 19 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBNUMREL_MASK 0x3FF /* (hdr) brbNumRel */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBNUMREL_SHIFT 20 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBSRCREADREL_MASK 0x3 /* (hdr) brbSrcReadRel */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBSRCREADREL_SHIFT 30 __le32 hdr1; #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_SLENGTH_MASK 0xFF /* (hdr) slength */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_SLENGTH_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_INSERTPAD_MASK 0x1 /* (hdr) insertPad */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_INSERTPAD_SHIFT 8 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_REQTYPE_MASK 0x3 /* (hdr) reqType */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_REQTYPE_SHIFT 9 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_UNUSED5_MASK 0x1F #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_UNUSED5_SHIFT 11 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBOFFSET_MASK 0xFFFF /* (hdr) brbOffset */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBOFFSET_SHIFT 16 __le32 hdr2; #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBDEBUG_MASK 0xFFFF /* (hdr) brbDebug */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBDEBUG_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBSTARTBLK_MASK 0xFFFF /* (hdr) brbStartBlk */ #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_BRBSTARTBLK_SHIFT 16 __le32 dmaParamsPrmSpecific; #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DISCARD_MASK 0x1 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_DISCARD_SHIFT 0 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PADCL_MASK 0x1 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_PADCL_SHIFT 1 #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_UNUSED30_MASK 0x3FFFFFFF #define ENGINEISOLATIONTESTREQUESTPARAMSPRMDMA_UNUSED30_SHIFT 2 struct EngineIsolationTestDmaRequestParams dmaParams; }; union EngineIsolationTestSpecific { struct EngineIsolationTestRequestParamsGrc grcAccess; struct EngineIsolationTestRequestParamsSdmDma sdmDma; struct EngineIsolationTestRequestParamsPrmDma prmDma; }; struct EngineIsolationTestRequestParams { u8 testType; u8 status /* user should set to idle, and then keep checking as long as status remains busy */; __le16 unused16; __le32 unused32; union EngineIsolationTestSpecific testSpecific; }; enum EngineIsolationTestStatusType { TEST_STATUS_IDLE=0, TEST_STATUS_BUSY=1, TEST_STATUS_SUCCESS=2, TEST_STATUS_FAILURE=255, MAX_ENGINEISOLATIONTESTSTATUSTYPE }; enum EngineIsolationTestType { TEST_TYPE_SDM_GRC_ACCESS=1, TEST_TYPE_SDM_DMA=2, TEST_TYPE_PRM_DMA=3, MAX_ENGINEISOLATIONTESTTYPE }; struct IntegTestDataHdr { u8 opcode; u8 enable; u8 reserved[6]; }; struct LatencyMeasurementParams { __le32 numMeasurements /* Number of measurements to conduct. Will be rounded down to nearest power of 2 */; __le32 meanMeasurement /* Average time of all measurements in 40ns units */; __le32 minMeasurement /* Minimum time taken in 40ns units */; __le32 maxMeasurement /* Maximum time taken in 40ns units */; __le32 delay /* Time to wait between measurements in us */; __le32 addrLo /* DMA address. Will be set by first PF to load */; __le32 addrHi /* DMA address. Will be set by first PF to load */; u8 pfId /* PF id. Will be set by first PF to load */; u8 done /* Bit indicating measurement is done */; u8 error /* Bit indicating there was an error during the measurement */; u8 reserved; __le32 reserved1[20]; }; struct PramParityErrorTestParams { __le32 done; __le32 reserved; u8 reserved1[104]; }; struct PqTxQueuePciAccess { __le32 pause; __le16 queueId; __le16 reserved0; u8 reserved1[104]; }; struct PfcTestParams { u8 pause; u8 portId; u8 tcPauseBitmap; u8 reserved0[5]; u8 reserved1[104]; }; struct QmInterfacesTestParams { __le16 connection_icid; __le16 connection_fid; __le32 counter; __le32 dataValid; __le32 incomingCid; u8 reserved[96]; }; struct SflowTestParams { u8 header[32]; u8 headerSize; u8 sendFactor; u8 reserved[6]; u8 reserved1[72]; }; struct IntegTestEdpmIntfEnParams { u8 releaseExistInQm; u8 existInQmReleased; u8 setXoffState; u8 setXonState; u8 reserved[4]; u8 reserved1[104]; }; struct VfcStressTestParams { __le32 done; __le32 status; __le32 last_index; __le32 mac_filter_cnt; __le32 vlan_filter_cnt; __le32 pair_filter_cnt; u8 reserved[88]; }; struct UnmaskSdmTestParams { u8 sdmUnmaskIntIndex /* SDM aggregative interrupt index to unmask */; u8 reserved[111]; }; struct QcnRlTestParams { __le32 done; __le32 status; u8 rl_id; u8 cmd; __le16 val; __le32 repeat_cnt; __le32 repeat_interval_us; __le16 force_dcqcn_alpha; __le16 reserved; __le32 reserved1[22]; }; union IntegTestDataParams { struct LatencyMeasurementParams latencyMeasurementParams; struct PramParityErrorTestParams pramParityErrorTestParams; struct PqTxQueuePciAccess pqTxQueuePciAccess; struct PfcTestParams pfcTestParams; struct QmInterfacesTestParams qmInterfacesTestParams; struct SflowTestParams sFlowTestParams; struct CfcLoadErrorTestParams cfcLoadErrorTestParams; struct IntegTestEdpmIntfEnParams edpmIntfEnTestParams; struct EngineIsolationTestRequestParams engineIsolationTestParams; struct VfcStressTestParams vfcStressTestParams; struct UnmaskSdmTestParams unmaskSdmTestParams; struct QcnRlTestParams qcnRlTestParams; }; struct IntegTestData { struct IntegTestDataHdr hdr; union IntegTestDataParams params; }; enum IntegTestOpcodeEnum { PRAM_PARITY_ERROR_RECOVERY=0, SDM_TCFC_AC_TEST=1, XY_LOADER_PCI_ERRORS_TEST=2, MU_LOADER_PCI_ERRORS_TEST=3, TM_LOADER_PCI_ERRORS_TEST=4, XY_LOADER_CFC_ERRORS_TEST=5, MU_LOADER_CFC_ERRORS_TEST=6, TM_LOADER_CFC_ERRORS_TEST=7, X_QM_PAUSE_TX_PQ_ERRORS_TEST=8, X_QM_UNPAUSE_TX_PQ_ERRORS_TEST=9, X_QM_QUEUES_PCI_ACCESS_TEST=10, RECORDING_HANDLER_TEST=12, PFC_TX_TEST=13, PFC_RX_PRS_TEST=14, PFC_RX_NIG_TEST=15, QM_INTERFACES_TEST=16, PROP_HEADER_TEST=17, S_FLOW_TEST=18, CFC_ERRORS_TEST=19, M_ENGINE_ISOLATION_TEST=20, VFC_STRESS_TEST=30, SDM_AGG_INT_UNMASK_TEST=31, CDU_VALIDATION_TEST=32, QCN_RL_TEST=33, LATENCY_MEASURMENT_TEST=34, MAX_INTEGTESTOPCODEENUM }; enum QcnRlTestCmdType { QCN_RL_TEST_CNM /* Simulite CNM arriveal. CNM interval and amount can be configurated. */, QCN_RL_TEST_PKT, QCN_RL_TEST_TIMER, QCN_RL_UNMASK_INTERRUPT, MAX_QCNRLTESTCMDTYPE }; enum VfcStressTestStatusType { VFC_STRESS_SUCCSES=0, VFC_STRESS_INIT, VFC_STRESS_MAC_SEARCH, VFC_STRESS_VLAN_SEARCH, VFC_STRESS_PAIR_SEARCH, VFC_STRESS_CLEAN, VFC_STRESS_MAC_NOT_FOUND, VFC_STRESS_MAC_NOT_SET_MTT, VFC_STRESS_MAC_NOT_SET_STT, VFC_STRESS_VLAN_NOT_FOUND, VFC_STRESS_VLAN_NOT_SET, VFC_STRESS_PAIR_NOT_FOUND, VFC_STRESS_PAIR_NOT_SET, VFC_STRESS_VLAN_CNT_NON_ZERO, VFC_STRESS_VFC_CNT_NON_ZERO, VFC_STRESS_VLAN_MOVE_FAIL, MAX_VFCSTRESSTESTSTATUSTYPE }; #endif /* __TESTING__ */