123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729 |
- /*
- * Copyright (c) 2017-2018,2020 The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #include "Pipe.h"
- #include "TestsUtils.h"
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //Do not change those default values due to the fact that some test may relay on those default values.
- //In case you need a change of the field do this in a derived class.
- //Dest MAC(6 bytes) Src MAC(6 Bytes) EtherType(2 Bytes)
- unsigned char Pipe::m_pUsbHeader[] = { 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xB1, 0xB2,
- 0xB3, 0xB4, 0xB5, 0xB6, 0xC1, 0xC2 };
- unsigned char Pipe::m_pA2NDUNHeader[] =
- { 0xA1, 0xA2, 0xA3, 0xA4, 0xB1, 0xB2, 0xC1, 0xC2 };
- //unsigned char Pipe::m_pA2DUNHeader[] = {};
- //unsigned char Pipe::m_pQ6LANHeader[] = {};
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- Pipe::Pipe(enum ipa_client_type nClientType,
- IPATestConfiguration eConfiguration) :
- m_Fd(-1), m_nHeaderLengthRemove(0),
- m_nHeaderLengthAdd(0), m_pHeader(NULL), m_pInodePath(NULL),
- m_bInitialized(false), m_ExceptionPipe(false) {
- m_nClientType = nClientType;
- m_eConfiguration = eConfiguration;
- }
- Pipe::Pipe(IPATestConfiguration eConfiguration) :
- m_Fd(-1), m_nHeaderLengthRemove(0),
- m_nHeaderLengthAdd(0), m_pHeader(NULL), m_pInodePath(NULL),
- m_bInitialized(false), m_ExceptionPipe(true) {
- m_eConfiguration = eConfiguration;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- Pipe::~Pipe() {
- //Nothing to be done at this point...
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool Pipe::Init() {
- int tries_cnt = 1;
- SetSpecificClientParameters(m_nClientType, m_eConfiguration);
- //By examining the Client type we will map the inode device name
- while (tries_cnt <= 10000) {
- m_Fd = open(m_pInodePath, O_RDWR);
- if (-1 != m_Fd)
- break;
- // Sleep for 5 msec
- usleep(5000);
- ++tries_cnt;
- }
- LOG_MSG_DEBUG("open retries_cnt=%d\n", tries_cnt);
- if (-1 == m_Fd) {
- LOG_MSG_ERROR("Failed to open %s", m_pInodePath);
- return false;
- }
- m_bInitialized = true;
- return true;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- void Pipe::Destroy() {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return;
- }
- close(m_Fd);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::Send(unsigned char * pBuffer, size_t nBytesToSend) {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- size_t nBytesWritten = 0;
- nBytesWritten = write(m_Fd, pBuffer, nBytesToSend);
- return nBytesWritten;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::AddHeaderAndSend(unsigned char * pIpPacket, size_t nIpPacketSize) {
- int retval;
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- size_t nBytesToWrite = nIpPacketSize + m_nHeaderLengthAdd;
- //Allocate new buffer for the Header and IP packet:
- unsigned char *pLinkLayerAndIpPacket = new unsigned char[nBytesToWrite];
- if (!pLinkLayerAndIpPacket) {
- LOG_MSG_ERROR("Memory allocation failure.");
- return 0;
- }
- //put the header first:
- memcpy(pLinkLayerAndIpPacket, m_pHeader, m_nHeaderLengthAdd);
- //Then add the IP packet:
- memcpy(pLinkLayerAndIpPacket + m_nHeaderLengthAdd, pIpPacket,
- nIpPacketSize);
- //Call the Send method which will send the new created buffer(which contains the IP packet with the Header):
- retval = Send(pLinkLayerAndIpPacket, nBytesToWrite);
- delete[] pLinkLayerAndIpPacket;
- return retval;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::Receive(unsigned char *pBuffer, size_t nBytesToReceive) {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- size_t nBytesRead = 0;
- nBytesRead = read(m_Fd, (void*) pBuffer, nBytesToReceive);
- return nBytesRead;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::ReceiveAndRemoveHeader(unsigned char *pIpPacket, size_t nIpPacketSize) {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- size_t nBytesToRead = nIpPacketSize + m_nHeaderLengthRemove;
- unsigned char *pPacket = new unsigned char[nBytesToRead];
- if (!pPacket) {
- LOG_MSG_ERROR("Memory allocation failure.");
- return 0;
- }
- size_t nReceivedBytes = Receive(pPacket, nBytesToRead);
- if (nReceivedBytes != nBytesToRead) {
- LOG_MSG_ERROR("Pipe was asked to receive an IP packet "
- "of size %d, however only %d bytes were read "
- "while the header size is %d",
- nIpPacketSize,
- nReceivedBytes,
- m_nHeaderLengthRemove);
- delete[] pPacket;
- return nReceivedBytes - m_nHeaderLengthRemove;
- }
- memcpy(pIpPacket, pPacket + m_nHeaderLengthRemove, nIpPacketSize);
- delete[] pPacket;
- return (nReceivedBytes - m_nHeaderLengthRemove);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- enum ipa_client_type Pipe::GetClientType() {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return IPA_CLIENT_HSIC1_PROD;
- }
- return m_nClientType;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- void Pipe::SetSpecificClientParameters(
- enum ipa_client_type nClientType,
- IPATestConfiguration eConfiguration) {
- switch (eConfiguration) {
- case IPA_TEST_CONFIFURATION_0:
- break;
- case IPA_TEST_CONFIFURATION_1:
- switch (nClientType) {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_1_FROM_USB1_TO_IPA_DMA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_1_FROM_IPA_TO_USB1_DMA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_1 switch in default "
- "nClientType = %d is not supported ", nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIFURATION_2:
- switch (nClientType) {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_2_FROM_USB_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_2_FROM_IPA_TO_A2_NDUN;
- m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader);
- m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader);
- m_pHeader = m_pA2NDUNHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_2 switch in default "
- "nClientType = %d is not supported ", nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIFURATION_3:
- switch (nClientType) {
- case IPA_CLIENT_TEST2_PROD:
- m_pInodePath = CONFIG_3_FROM_A2_NDUN_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader);
- m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader);
- m_pHeader = m_pA2NDUNHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD");
- break;
- case IPA_CLIENT_TEST_CONS:
- m_pInodePath = CONFIG_3_FROM_IPA_TO_USB1;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case IPA_CLIENT_TEST2_CONS:
- m_pInodePath = CONFIG_3_FROM_IPA_TO_A2_NDUN;
- m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader);
- m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader);
- m_pHeader = m_pA2NDUNHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case IPA_CLIENT_TEST4_CONS:
- //TODO add when applicable
- m_pInodePath = CONFIG_3_FROM_IPA_TO_Q6_LAN;
- m_nHeaderLengthAdd = 0;
- m_nHeaderLengthRemove = 0;
- m_pHeader = 0;
- LOG_MSG_INFO("IPA_CLIENT_TEST4_CONS is not supported yet");
- break;
- default:
- LOG_MSG_INFO("IPA_TEST_CONFIFURATION_3 switch in default "
- "nClientType = %d is not supported ", nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIFURATION_7:
- if (m_ExceptionPipe) {
- m_pInodePath = CONFIG_7_FROM_IPA_TO_A5_EXCEPTION;
- m_nHeaderLengthAdd = 0; //No send
- m_nHeaderLengthRemove = 8; //A5Mux header size without retained source header
- m_pHeader = NULL; //No header to send
- LOG_MSG_INFO("Setting parameters for A5_Exception ");
- break;
- }
- if (nClientType == IPA_CLIENT_TEST_PROD) {
- m_pInodePath = CONFIG_7_FROM_USB1_TO_IPA;
- m_nHeaderLengthAdd = 0;
- m_nHeaderLengthRemove = 0;
- m_pHeader = NULL;
- LOG_MSG_INFO(
- "Setting parameters for FROM_USB1_TO_IPA - no header addition/removal");
- } else {
- LOG_MSG_INFO("IPA_TEST_CONFIFURATION_7 switch in default "
- "nClientType = %d is not supported ", nClientType);
- }
- break;
- case IPA_TEST_CONFIGURATION_8:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_8_DEAGG_TO_IPA_NO_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_8_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case (IPA_CLIENT_TEST3_PROD):
- m_pInodePath = CONFIG_8_NO_AGG_TO_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD ");
- break;
- case (IPA_CLIENT_TEST3_CONS):
- m_pInodePath = CONFIG_8_FROM_IPA_NO_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_8_DEAGG_TO_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_8_DEAGG_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case (IPA_CLIENT_TEST4_PROD):
- m_pInodePath = CONFIG_8_NO_AGG_TO_IPA_AGG_TIME;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_PROD");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_8 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_9:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_9_DEAGG_TO_IPA_NO_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_9_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case (IPA_CLIENT_TEST3_PROD):
- m_pInodePath = CONFIG_9_NO_AGG_TO_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD ");
- break;
- case (IPA_CLIENT_TEST3_CONS):
- m_pInodePath = CONFIG_9_FROM_IPA_NO_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_9_DEAGG_TO_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_9_DEAGG_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case (IPA_CLIENT_TEST4_PROD):
- m_pInodePath = CONFIG_9_NO_AGG_TO_IPA_AGG_TIME;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_PROD");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_9 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_10:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_10_TO_IPA_AGG_ZERO_LIMITS;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_10_FROM_IPA_AGG_ZERO_LIMITS;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_10 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_11:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_11_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_11_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_11_TO_IPA_DEAGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD");
- break;
- case (IPA_CLIENT_TEST3_CONS):
- m_pInodePath = CONFIG_11_FROM_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_11_FROM_IPA_AGG_TIME;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case (IPA_CLIENT_TEST4_CONS):
- m_pInodePath = CONFIG_11_FROM_IPA_ZERO_LIMITS;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_11 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_12:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_12_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_12_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_12_TO_IPA_DEAGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD");
- break;
- case (IPA_CLIENT_TEST3_CONS):
- m_pInodePath = CONFIG_12_FROM_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_12_FROM_IPA_AGG_TIME;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case (IPA_CLIENT_TEST4_CONS):
- m_pInodePath = CONFIG_12_FROM_IPA_ZERO_LIMITS;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_12 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_17:
- switch(nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_17_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST3_PROD):
- m_pInodePath = CONFIG_17_TO_IPA_NO_HDR;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD ");
- break;
- case (IPA_CLIENT_TEST2_CONS):
- m_pInodePath = CONFIG_17_FROM_IPA_AGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_17_TO_IPA_DEAGG;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD ");
- break;
- case (IPA_CLIENT_TEST3_CONS):
- m_pInodePath = CONFIG_17_FROM_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_17_FROM_IPA_AGG_TIME;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- case (IPA_CLIENT_TEST4_CONS):
- m_pInodePath = CONFIG_17_FROM_IPA_ZERO_LIMITS;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_17 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_18:
- switch (nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_18_TO_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST2_PROD):
- m_pInodePath = CONFIG_18_DUMMY_ENDPOINT;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD ");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_18_FROM_IPA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS");
- break;
- default:
- LOG_MSG_ERROR(
- "IPA_TEST_CONFIFURATION_18 switch in default "
- "nClientType = %d is not supported ",
- nClientType);
- break;
- }
- break;
- case IPA_TEST_CONFIGURATION_19:
- switch (nClientType)
- {
- case (IPA_CLIENT_TEST_PROD):
- m_pInodePath = CONFIG_19_FROM_USB_TO_IPA_DMA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD ");
- break;
- case (IPA_CLIENT_TEST_CONS):
- m_pInodePath = CONFIG_19_FROM_IPA_TO_USB_DMA;
- m_nHeaderLengthAdd = sizeof(m_pUsbHeader);
- m_nHeaderLengthRemove = sizeof(m_pUsbHeader);
- m_pHeader = m_pUsbHeader;
- LOG_MSG_INFO("Setting parameters for TEST_CONS");
- break;
- default:
- LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_19 switch in default "
- "nClientType = %d is not supported ", nClientType);
- break;
- }
- break;
- default:
- LOG_MSG_ERROR("Pipe::SetSpecificClientParameters "
- "switch in default eConfiguration = %d ", eConfiguration);
- break;
- }
- }/* Pipe::SetSpecificClientParameters() */
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::GetHeaderLengthAdd() {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- return m_nHeaderLengthAdd;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- int Pipe::GetHeaderLengthRemove() {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return 0;
- }
- return m_nHeaderLengthRemove;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool Pipe::ConfigureHolb(unsigned short enable, unsigned timerValue) {
- if (false == m_bInitialized) {
- LOG_MSG_ERROR("Pipe is being used without being initialized!");
- return false;
- }
- if (IPA_CLIENT_IS_PROD(m_nClientType)) {
- LOG_MSG_ERROR("Can't configure HOLB on a producer pipe!");
- return false;
- }
- struct ipa_test_holb_config test_holb_config;
- test_holb_config.client = m_nClientType;
- test_holb_config.tmr_val = timerValue;
- test_holb_config.en = enable;
- LOG_MSG_DEBUG("Sending: client=%d tmr_val=%d en=%d",
- test_holb_config.client,
- test_holb_config.tmr_val,
- test_holb_config.en);
- return configure_holb(&test_holb_config);
- }
- bool Pipe::EnableHolb(unsigned timerValue) {
- return ConfigureHolb(1, timerValue);
- }
- bool Pipe::DisableHolb() {
- return ConfigureHolb(0, 0);
- }
|