/*------------------------------------------------------------------------ * display stats from all modules */ PUBLIC void ixAtmdAccStatsReset (void) { if (initDone) { ixAtmdAccDescMgmtStatsReset (); ixAtmdAccPortMgmtStatsReset (); ixAtmdAccUtopiaControlStatsReset(); ixAtmdAccTxCfgIfStatsReset (); ixAtmdAccRxCfgIfStatsReset (); ixAtmdAccUtilStatsReset (); } else { printf("IxAtmdAcc Not initialized\n"); } }
/* ---------------------------------------------------- * Initialisation */ IX_STATUS ixAtmdAccDescMgmtInit (void) { IX_STATUS returnStatus = IX_FAIL; IxAtmdAccNpeDescriptor* npeDescriptorPtr = NULL; void *physicalAddress; unsigned int descSize = 0; unsigned char *descPtr = NULL; unsigned char *descPtrAlign = NULL; if (!initDone) { returnStatus = ixOsalMutexInit (&descMgmtLock); if (returnStatus != IX_SUCCESS) { returnStatus = IX_FAIL; } else { ixAtmdAccDescMgmtStatsReset (); /* compute the size of each element and ensure descriptors are 64-byte aligned */ /* NPE_ADDR_ALIGN is multiple of IX_OSAL_CACHE_LINE_SIZE which is 64 */ descSize = (((sizeof (IxAtmdAccNpeDescriptor)) + (NPE_ADDR_ALIGN - 1)) / NPE_ADDR_ALIGN) * NPE_ADDR_ALIGN; /* allocate a big buffer containing all elements */ descPtr = IX_OSAL_CACHE_DMA_MALLOC((IX_ATMDACC_MAX_NPE_DESCRIPTORS * descSize) + (NPE_ADDR_ALIGN - 1)); descPtr += (NPE_ADDR_ALIGN - 1); descPointer = descPtr; /* mask descriptor pointer with 0xffffffc0 to ensure lower 6 bits are 0*/ descPtrAlign = (unsigned char *)(((UINT32)descPtr) & NPE_DESCRIPTOR_MASK); IxAtmdDmaDescPointer = descPtrAlign; if (descPtrAlign == NULL) { returnStatus = IX_FAIL; } else { for (npeDescCount = 0; (npeDescCount < IX_ATMDACC_MAX_NPE_DESCRIPTORS); npeDescCount++) { /* allocate a NPE descriptor from the big buffer */ npeDescriptorPtr = (IxAtmdAccNpeDescriptor *)descPtrAlign; descPtrAlign += descSize; /* initialise the array of descriptors */ npeDescriptorArray[npeDescCount] = npeDescriptorPtr; physicalAddress = npeDescriptorPtr; IX_ATMDACC_CONVERT_TO_PHYSICAL_ADDRESS (physicalAddress); npeDescriptorPtr->atmd.physicalAddress = (unsigned int)physicalAddress; #ifndef NDEBUG npeDescriptorPtr->atmd.signature = IX_ATMDACC_DESCRIPTOR_SIGNATURE; #endif } /* end of for(npeDescCount) */ if (returnStatus == IX_SUCCESS) { initDone = TRUE; } } } /* end of if-else(returnStatus) */ } /* end of if(initDone) */ return returnStatus; }