| Index: chromeos/drivers/ath6kl/htc2/htc_recv.c
|
| diff --git a/chromeos/drivers/ath6kl/htc2/htc_recv.c b/chromeos/drivers/ath6kl/htc2/htc_recv.c
|
| index 8f3804a47f505cbcac83471150e06ccd1085d955..3503657fe7d2948bd27c652757b416f987ffaf3f 100644
|
| --- a/chromeos/drivers/ath6kl/htc2/htc_recv.c
|
| +++ b/chromeos/drivers/ath6kl/htc2/htc_recv.c
|
| @@ -1,15 +1,19 @@
|
| //------------------------------------------------------------------------------
|
| // <copyright file="htc_recv.c" company="Atheros">
|
| -// Copyright (c) 2007-2008 Atheros Corporation. All rights reserved.
|
| +// Copyright (c) 2007-2010 Atheros Corporation. All rights reserved.
|
| //
|
| -// This program is free software; you can redistribute it and/or modify
|
| -// it under the terms of the GNU General Public License version 2 as
|
| -// published by the Free Software Foundation;
|
| //
|
| -// Software distributed under the License is distributed on an "AS
|
| -// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
| -// implied. See the License for the specific language governing
|
| -// rights and limitations under the License.
|
| +// Permission to use, copy, modify, and/or distribute this software for any
|
| +// purpose with or without fee is hereby granted, provided that the above
|
| +// copyright notice and this permission notice appear in all copies.
|
| +//
|
| +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
| +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
| +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
| +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
| +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
| +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
| +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
| //
|
| //
|
| //------------------------------------------------------------------------------
|
| @@ -26,8 +30,8 @@
|
| #define DO_RCV_COMPLETION(e,q) DoRecvCompletion(e,q)
|
|
|
| #define DUMP_RECV_PKT_INFO(pP) \
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" HTC RECV packet 0x%X (%d bytes) (hdr:0x%X) on ep : %d \n", \
|
| - (A_UINT32)(pP), \
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" HTC RECV packet 0x%lX (%d bytes) (hdr:0x%X) on ep : %d \n", \
|
| + (unsigned long)(pP), \
|
| (pP)->ActualLength, \
|
| (pP)->PktInfo.AsRx.ExpectedHdr, \
|
| (pP)->Endpoint))
|
| @@ -69,8 +73,8 @@ static void DoRecvCompletion(HTC_ENDPOINT *pEndpoint,
|
| /* using legacy EpRecv */
|
| do {
|
| pPacket = HTC_PACKET_DEQUEUE(pQueueToIndicate);
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" HTC calling ep %d recv callback on packet 0x%X \n", \
|
| - pEndpoint->Id, (A_UINT32)(pPacket)));
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" HTC calling ep %d recv callback on packet 0x%lX \n", \
|
| + pEndpoint->Id, (unsigned long)(pPacket)));
|
| pEndpoint->EpCallBacks.EpRecv(pEndpoint->EpCallBacks.pContext, pPacket);
|
| } while (!HTC_QUEUE_EMPTY(pQueueToIndicate));
|
| }
|
| @@ -150,9 +154,11 @@ static INLINE A_STATUS HTCProcessTrailer(HTC_TARGET *target,
|
| ((A_UINT8 *)(&pNextLookAheads[0]))[2] = pLookAhead->LookAhead[2];
|
| ((A_UINT8 *)(&pNextLookAheads[0]))[3] = pLookAhead->LookAhead[3];
|
|
|
| +#ifdef ATH_DEBUG_MODULE
|
| if (AR_DEBUG_LVL_CHECK(ATH_DEBUG_RECV)) {
|
| DebugDumpBytes((A_UINT8 *)pNextLookAheads,4,"Next Look Ahead");
|
| }
|
| +#endif
|
| /* just one normal lookahead */
|
| *pNumLookAheads = 1;
|
| }
|
| @@ -166,9 +172,11 @@ static INLINE A_STATUS HTCProcessTrailer(HTC_TARGET *target,
|
|
|
| pBundledLookAheadRpt = (HTC_BUNDLED_LOOKAHEAD_REPORT *)pRecordBuf;
|
|
|
| +#ifdef ATH_DEBUG_MODULE
|
| if (AR_DEBUG_LVL_CHECK(ATH_DEBUG_RECV)) {
|
| DebugDumpBytes(pRecordBuf,pRecord->Length,"Bundle LookAhead");
|
| }
|
| +#endif
|
|
|
| if ((pRecord->Length / (sizeof(HTC_BUNDLED_LOOKAHEAD_REPORT))) >
|
| HTC_HOST_MAX_MSG_PER_BUNDLE) {
|
| @@ -205,9 +213,11 @@ static INLINE A_STATUS HTCProcessTrailer(HTC_TARGET *target,
|
| Length -= pRecord->Length;
|
| }
|
|
|
| +#ifdef ATH_DEBUG_MODULE
|
| if (A_FAILED(status)) {
|
| DebugDumpBytes(pOrigBuffer,origLength,"BAD Recv Trailer");
|
| }
|
| +#endif
|
|
|
| AR_DEBUG_PRINTF(ATH_DEBUG_RECV, ("-HTCProcessTrailer \n"));
|
| return status;
|
| @@ -280,8 +290,9 @@ static A_STATUS HTCProcessRecvHeader(HTC_TARGET *target,
|
| /* somehow the lookahead that gave us the full read length did not
|
| * reflect the actual header in the pending message */
|
| AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
|
| - ("HTCProcessRecvHeader, lookahead mismatch! (pPkt:0x%X flags:0x%X) \n",
|
| - (A_UINT32)pPacket, pPacket->PktInfo.AsRx.HTCRxFlags));
|
| + ("HTCProcessRecvHeader, lookahead mismatch! (pPkt:0x%lX flags:0x%X) \n",
|
| + (unsigned long)pPacket, pPacket->PktInfo.AsRx.HTCRxFlags));
|
| +#ifdef ATH_DEBUG_MODULE
|
| DebugDumpBytes((A_UINT8 *)&pPacket->PktInfo.AsRx.ExpectedHdr,4,"Expected Message LookAhead");
|
| DebugDumpBytes(pBuf,sizeof(HTC_FRAME_HDR),"Current Frame Header");
|
| #ifdef HTC_CAPTURE_LAST_FRAME
|
| @@ -292,6 +303,7 @@ static A_STATUS HTCProcessRecvHeader(HTC_TARGET *target,
|
| "Last trailer");
|
| }
|
| #endif
|
| +#endif
|
| status = A_EPROTO;
|
| break;
|
| }
|
| @@ -355,7 +367,9 @@ static A_STATUS HTCProcessRecvHeader(HTC_TARGET *target,
|
|
|
| if (A_FAILED(status)) {
|
| /* dump the whole packet */
|
| +#ifdef ATH_DEBUG_MODULE
|
| DebugDumpBytes(pBuf,pPacket->ActualLength < 256 ? pPacket->ActualLength : 256 ,"BAD HTC Recv PKT");
|
| +#endif
|
| } else {
|
| #ifdef HTC_CAPTURE_LAST_FRAME
|
| A_MEMCPY(&target->LastFrameHdr,pBuf,sizeof(HTC_FRAME_HDR));
|
| @@ -390,9 +404,11 @@ static INLINE void HTCAsyncRecvCheckMorePackets(HTC_TARGET *target,
|
| if (A_EPROTO == nextStatus) {
|
| AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
|
| ("Next look ahead from recv header was INVALID\n"));
|
| +#ifdef ATH_DEBUG_MODULE
|
| DebugDumpBytes((A_UINT8 *)NextLookAheads,
|
| NumLookAheads * (sizeof(A_UINT32)),
|
| "BAD lookaheads from lookahead report");
|
| +#endif
|
| }
|
| if (A_SUCCESS(nextStatus) && !fetched) {
|
| /* we could not fetch any more packets due to resources */
|
| @@ -508,8 +524,8 @@ void HTCRecvCompleteHandler(void *Context, HTC_PACKET *pPacket)
|
| A_STATUS status;
|
| A_BOOL checkMorePkts = TRUE;
|
|
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_RECV, ("+HTCRecvCompleteHandler (pkt:0x%X, status:%d, ep:%d) \n",
|
| - (A_UINT32)pPacket, pPacket->Status, pPacket->Endpoint));
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_RECV, ("+HTCRecvCompleteHandler (pkt:0x%lX, status:%d, ep:%d) \n",
|
| + (unsigned long)pPacket, pPacket->Status, pPacket->Endpoint));
|
|
|
| A_ASSERT(!IS_DEV_IRQ_PROC_SYNC_MODE(&target->Device));
|
| AR_DEBUG_ASSERT(pPacket->Endpoint < ENDPOINT_MAX);
|
| @@ -708,7 +724,7 @@ static A_STATUS AllocAndPrepareRxPackets(HTC_TARGET *target,
|
|
|
| if (pHdr->PayloadLen > HTC_MAX_PAYLOAD_LENGTH) {
|
| AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("Payload length %d exceeds max HTC : %d !\n",
|
| - pHdr->PayloadLen, HTC_MAX_PAYLOAD_LENGTH));
|
| + pHdr->PayloadLen, (A_UINT32)HTC_MAX_PAYLOAD_LENGTH));
|
| status = A_EPROTO;
|
| break;
|
| }
|
| @@ -1485,8 +1501,8 @@ static void HTCFlushRxQueue(HTC_TARGET *target, HTC_ENDPOINT *pEndpoint, HTC_PAC
|
| UNLOCK_HTC_RX(target);
|
| pPacket->Status = A_ECANCELED;
|
| pPacket->ActualLength = 0;
|
| - AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" Flushing RX packet:0x%X, length:%d, ep:%d \n",
|
| - (A_UINT32)pPacket, pPacket->BufferLength, pPacket->Endpoint));
|
| + AR_DEBUG_PRINTF(ATH_DEBUG_RECV, (" Flushing RX packet:0x%lX, length:%d, ep:%d \n",
|
| + (unsigned long)pPacket, pPacket->BufferLength, pPacket->Endpoint));
|
| INIT_HTC_PACKET_QUEUE_AND_ADD(&container,pPacket);
|
| /* give the packet back */
|
| DO_RCV_COMPLETION(pEndpoint,&container);
|
| @@ -1547,3 +1563,16 @@ int HTCGetNumRecvBuffers(HTC_HANDLE HTCHandle,
|
| return HTC_PACKET_QUEUE_DEPTH(&(target->EndPoint[Endpoint].RxBuffers));
|
| }
|
|
|
| +A_STATUS HTCWaitForPendingRecv(HTC_HANDLE HTCHandle,
|
| + A_UINT32 TimeoutInMs,
|
| + A_BOOL *pbIsRecvPending)
|
| +{
|
| + A_STATUS status = A_OK;
|
| + HTC_TARGET *target = GET_HTC_TARGET_FROM_HANDLE(HTCHandle);
|
| +
|
| + status = DevWaitForPendingRecv(&target->Device,
|
| + TimeoutInMs,
|
| + pbIsRecvPending);
|
| +
|
| + return status;
|
| +}
|
|
|