亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zl5011xdebugfuncs.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
      }
   }

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugContextTxRates

 Description:
    This function provides information on the operation of a Wan Tx queue for
    a duration of 1 second.
    Shows the number of packets that have been requested by the TDM formatter
    block, and a count of rejected packets (information depends on queue mode).

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   start             first context to display (or -1 to display all)
   end               last context to display. Note this parameter can be omitted
                     (set to zero) if only one context is of interest.

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextTxRates(zl5011xParamsS *zl5011xParams, Uint32T start, Uint32T end)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xDebugTfqInfoS *prevTfqInfo;
   zl5011xDebugTfqInfoS *tfqInfo;
   Uint32T loop, readValue;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   prevTfqInfo = OS_MALLOC(sizeof(zl5011xDebugTfqInfoS));

   if (prevTfqInfo == NULL)
   {
      printf("Failed to allocate memory\n");

      status = ZL5011X_RTOS_MEMORY_FAIL;

      zl5011xPrintErr(status);
      return(status);
   }

   tfqInfo = OS_MALLOC(sizeof(zl5011xDebugTfqInfoS));

   if (tfqInfo == NULL)
   {
      printf("Failed to allocate memory\n");
      OS_FREE(prevTfqInfo);

      status = ZL5011X_RTOS_MEMORY_FAIL;

      zl5011xPrintErr(status);
      return(status);
   }

   if (start == (Uint32T)-1)
   {
      start = 0;

      if (zl5011xParams->wanIf.wanConnectionMode == ZL5011X_WAN_CONNECTION_UNFRAMED)
      {
         end = zl5011xParams->wanIf.wanNumStreams - 1;
      }
      else
      {
         end = zl5011xParams->devLimits.numContexts - 1;
      }
   }

   loop = start;

   OS_TICK_DELAY(1);

   do
   {
      if (status != ZL5011X_OK)
      {
         break;
      }

      status = zl5011xTfqGetUnderrunCount(zl5011xParams, loop, &(prevTfqInfo->underrun[loop]));

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetLatePackets(zl5011xParams, loop, &(prevTfqInfo->late[loop]));
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetEarlyPackets(zl5011xParams, loop, &(prevTfqInfo->early[loop]));
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetReadPointer(zl5011xParams, loop, &(prevTfqInfo->readPointer[loop]));
      }

      loop++;
   } while (loop <= end);

   OS_TICK_DELAY(60);

   loop = start;

   do
   {
      if (status != ZL5011X_OK)
      {
         break;
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetUnderrunCount(zl5011xParams, loop, &(tfqInfo->underrun[loop]));
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetLatePackets(zl5011xParams, loop, &(tfqInfo->late[loop]));
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetEarlyPackets(zl5011xParams, loop, &(tfqInfo->early[loop]));
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetReadPointer(zl5011xParams, loop, &(tfqInfo->readPointer[loop]));
      }

      loop++;
   } while (loop <= end);

   loop = start;

   do
   {
      if (status != ZL5011X_OK)
      {
         break;
      }

      if (status == ZL5011X_OK)
      {
         status = zl5011xTfqGetAvgLength(zl5011xParams, loop, &readValue);
      }

      if (status == ZL5011X_OK)
      {
         Uint32T avgHi,avgLo;
         zl5011xTfqFormatAvgLength(readValue, _ZL5011X_DEBUG_AVG_PRECISION, &avgHi, &avgLo);

         printf("%3ld: length = %4ld.%0*ld, ", loop, avgHi, _ZL5011X_DEBUG_AVG_PRECISION, avgLo); /* Note:
                     '*' format allows _ZL5011X_DEBUG_AVG_PRECISION to specify the width of the field */

         if (zl5011xParams->wanIf.txQueue[loop].queueMode == ZL5011X_WAN_TX_QUEUE_FIFO)
         {
            /* for FIFO queues, the early count is actually a count of the packets
               rejected because the queue is full */
            printf("Full = %4ld,", tfqInfo->early[loop] - prevTfqInfo->early[loop]);
            printf("Pkts = %4ld\n", tfqInfo->readPointer[loop] - prevTfqInfo->readPointer[loop]);
         }
         else
         {
            printf("Underruns = %4ld, ", tfqInfo->underrun[loop] - prevTfqInfo->underrun[loop]);
            printf("Discards = %4ld, ", (tfqInfo->early[loop] - prevTfqInfo->early[loop]) +
                  (tfqInfo->late[loop] - prevTfqInfo->late[loop]));
            printf("Early = %4ld,  Late = %4ld, ", tfqInfo->early[loop] - prevTfqInfo->early[loop],
                  tfqInfo->late[loop] - prevTfqInfo->late[loop]);
            printf("Pkts = %4ld\n", tfqInfo->readPointer[loop] - prevTfqInfo->readPointer[loop]);
         }
      }

      loop++;
   } while (loop <= end);

   OS_FREE(tfqInfo);
   OS_FREE(prevTfqInfo);

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugContextTxQueue

 Description:
    This function provides information on the TDM queue length.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   context           set to context number

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextTxQueue(zl5011xParamsS *zl5011xParams, Uint32T context)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xWanTxGetQueueStatsS stats;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xWanTxGetQueueStatsStructInit(zl5011xParams, &stats);
   }

   if (status == ZL5011X_OK)
   {
      stats.context = context;
      stats.minMaxReset = ZL5011X_TRUE;
      stats.minMaxEnable = ZL5011X_TRUE;

      status = zl5011xWanTxGetQueueStats(zl5011xParams, &stats);
   }

   if ((status == ZL5011X_OK) && (stats.lengthValid == ZL5011X_TRUE))
   {
      Uint32T avgHi,avgLo;
      zl5011xTfqFormatAvgLength(stats.avgQueueLength, _ZL5011X_DEBUG_AVG_PRECISION, &avgHi, &avgLo);

      printf("avg length = %4ld.%0*ld\n", avgHi, _ZL5011X_DEBUG_AVG_PRECISION, avgLo); /* Note:
                  '*' format allows _ZL5011X_DEBUG_AVG_PRECISION to specify the width of the field */
      printf("max length = %3ld\n", stats.maxQueueLength);
      printf("min length = %3ld\n", stats.minQueueLength);
   }

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugTxClockSource

 Description:
    This function provides information on the clock used for unstructured Wan
    Tx streams.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugTxClockSource(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T loop;
   zl5011xWanStreamClockConfigS wanStreamClockConfig;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xWanStreamClockConfigStructInit(zl5011xParams, &wanStreamClockConfig);
   }

   for (loop = 0; loop < zl5011xParams->wanIf.wanNumStreams; loop++)
   {
      if (status != ZL5011X_OK)
      {
         break;
      }

      wanStreamClockConfig.stream = (Uint8T)loop;
      status = zl5011xWanGetStreamClockConfig(zl5011xParams, &wanStreamClockConfig);

      if (status == ZL5011X_OK)
      {
         printf("%3ld: %s\n", loop, zl5011xDebugClockModeStr[wanStreamClockConfig.clockMode]);
      }

   }

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugDpllStatus

 Description:
    This function provides status information for the PLL.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

char *dpllModeStr[] =
{
   "ZL5011X_DPLL_AUTOMATIC_OPERATION",
   "ZL5011X_DPLL_NORMAL_OPERATION",
   "ZL5011X_DPLL_HOLDOVER_OPERATION",
   "ZL5011X_DPLL_FREERUN_OPERATION"
};

zlStatusE zl5011xDebugDpllStatus(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xDpllStatusS dpllStatus;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   if (zl5011xParams->wanIf.clock.sync.dpllConfig != ZL5011X_DPLL_MASTER_CONNECTION)
   {
      printf("DPLL not enabled\n");
      status = ZL5011X_ERROR;
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xPacDpllGetStatus(zl5011xParams, &dpllStatus);
   }

   if (status == ZL5011X_OK)
   {
      printf("DPLL mode    : %s\n", dpllModeStr[dpllStatus.dpllMode]);
      printf("     ref src : %s\n", (dpllStatus.primaryRefInUse == ZL5011X_TRUE) ? "Primary" : "Secondary");
      printf("     lock    : %d\n", dpllStatus.locked);
   }

   zl5011xPrintErr(status);
   return(status);
}


/******************************************************************************/
/* the following functions provided information for the Lan connection */
/******************************************************************************/

/*******************************************************************************

 Function:
    zl5011xDebugPkcStats

 Description:
   This function provides information on the packet classification process.
   Displaying the number of packets received for each of the protocols along
   with the number of unmatched packets.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugPkcStats(zl5011xParamsS *zl5011xParams)
{
   zl5011xPkcStatsS pktStats;
   Uint32T loop;
   zlStatusE status = ZL5011X_OK;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   status = zl5011xPkcGetStats(zl5011xParams, &pktStats);

   for (loop = 0; loop < ZL5011X_PKC_NUM_PROTOCOL_ENTRIES; loop++)
   {
      if (status != ZL5011X_OK)
      {
         break;
      }

      printf("Protocol cnt %3ld  = %8lu\n", loop, pktStats.protocolCount[loop]);
   }

   if (status == ZL5011X_OK)
   {
      printf("Protocol no match = %8lu\n", pktStats.protocolNoMatchCount);
      printf("Classify no match = %8lu\n", pktStats.classifyNoMatchCount);
      printf("Verify fail       = %8lu\n", pktStats.verifyFailCount);
      printf("IPv4 checksum     = %8lu\n", pktStats.ipv4ChecksumFailCount);
   }

   zl5011xPrintErr(status);
   return(status);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久久久免费看| 精品国产凹凸成av人网站| 丁香六月久久综合狠狠色| 久久超碰97中文字幕| 日本不卡一区二区| 美女被吸乳得到大胸91| 国产又粗又猛又爽又黄91精品| 免费观看日韩av| 精品一区二区三区在线观看 | 国产**成人网毛片九色 | 最新热久久免费视频| 日韩一区在线看| 亚洲国产视频在线| 青青青爽久久午夜综合久久午夜 | 亚洲视频网在线直播| 成人免费在线视频| 亚洲激情网站免费观看| 偷拍日韩校园综合在线| 黄色成人免费在线| 国产成人亚洲综合a∨婷婷| proumb性欧美在线观看| 欧美日韩精品免费| 欧美大片免费久久精品三p| 亚洲国产精品国自产拍av| 亚洲人吸女人奶水| 免费久久99精品国产| 国产福利一区在线观看| 91国产免费观看| 日韩欧美中文字幕公布| 国产精品国产三级国产aⅴ入口 | 亚洲精品一二三| 日本美女视频一区二区| 国产69精品久久99不卡| 欧美色区777第一页| 久久午夜免费电影| 一区二区久久久| 国产精品2024| 欧美丰满少妇xxxxx高潮对白| 亚洲精品在线观看视频| 亚洲综合色成人| 国产一区二区免费视频| 欧美色网站导航| 国产精品乱人伦| 精品一区二区三区免费毛片爱| 色综合一个色综合亚洲| 久久亚洲综合av| 日本一区中文字幕 | 久久99日本精品| 在线视频你懂得一区二区三区| 26uuu国产在线精品一区二区| 一区二区免费在线| 国产.欧美.日韩| 欧美成人r级一区二区三区| 一级特黄大欧美久久久| 波多野结衣在线aⅴ中文字幕不卡| 精品国产青草久久久久福利| 亚洲国产wwwccc36天堂| 99v久久综合狠狠综合久久| 久久免费国产精品| 极品少妇xxxx偷拍精品少妇| 日韩欧美中文字幕制服| 偷拍自拍另类欧美| 在线成人免费视频| 亚洲影院久久精品| 色先锋久久av资源部| 自拍偷拍亚洲综合| 波多野结衣视频一区| 国产精品国产三级国产| 91一区二区三区在线观看| 国产日韩亚洲欧美综合| 国产精品性做久久久久久| 亚洲精品一区二区三区香蕉| 狠狠色丁香九九婷婷综合五月| 日韩一区二区三区av| 久久精品国产久精国产| 欧美成人三级在线| 精品伊人久久久久7777人| 精品久久久久久久久久久久久久久久久 | 欧美一级国产精品| 麻豆成人久久精品二区三区红| 日韩一级成人av| 久久超碰97中文字幕| 精品国产91乱码一区二区三区| 久久精品国产99久久6| 欧美精品一区二区在线播放| 国产成a人亚洲精| 国产精品盗摄一区二区三区| 在线观看日韩一区| 偷拍亚洲欧洲综合| 欧美精品一区二区久久婷婷| 成人高清在线视频| 亚洲最大成人综合| 3751色影院一区二区三区| 久久av中文字幕片| 国产精品狼人久久影院观看方式| 日本高清不卡一区| 青草国产精品久久久久久| 久久男人中文字幕资源站| 91一区二区在线| 免费成人你懂的| 日韩一区中文字幕| 日韩欧美一二三四区| 国产999精品久久久久久| 亚洲最色的网站| 久久久精品免费网站| 97成人超碰视| 精品亚洲成a人| 亚洲色图丝袜美腿| 精品久久久久99| 色乱码一区二区三区88| 美女视频黄频大全不卡视频在线播放| 久久你懂得1024| 欧美精品日日鲁夜夜添| 国产成人在线视频网站| 五月天一区二区三区| 国产精品水嫩水嫩| 日韩一区二区在线观看视频播放| 成人网男人的天堂| 美女高潮久久久| 一区二区三区高清在线| 中文字幕 久热精品 视频在线| 欧美老年两性高潮| 91免费看视频| 国产成人亚洲综合a∨婷婷图片| 日本视频中文字幕一区二区三区| 亚洲猫色日本管| 久久久久九九视频| 欧美一级精品大片| 欧美色涩在线第一页| 色哟哟国产精品| 丁香五精品蜜臀久久久久99网站 | 亚洲免费av网站| 国产午夜亚洲精品不卡| 日韩限制级电影在线观看| 欧美这里有精品| 色哟哟国产精品| 色婷婷久久99综合精品jk白丝| 国产成人啪免费观看软件| 免费欧美日韩国产三级电影| 亚洲成人免费影院| 一区二区免费视频| 亚洲综合色丁香婷婷六月图片| 国产精品成人网| 一区在线中文字幕| 国产精品短视频| 最新日韩av在线| 亚洲精品欧美激情| 亚洲综合在线免费观看| 亚洲精品福利视频网站| 日韩码欧中文字| 玉米视频成人免费看| 一区二区三区日韩精品视频| 亚洲欧美日韩小说| 亚洲国产美女搞黄色| 性做久久久久久久免费看| 婷婷综合五月天| 蜜桃精品在线观看| 久久机这里只有精品| 国产一区二区在线视频| 国产成人免费视频精品含羞草妖精 | 日韩和的一区二区| 五月激情综合婷婷| 精品亚洲成a人在线观看| 国产91精品免费| 9色porny自拍视频一区二区| 99久久99久久免费精品蜜臀| 在线亚洲高清视频| 欧美精品777| 国产亚洲精品中文字幕| 亚洲色图视频免费播放| 亚洲成av人片一区二区三区| 久久99国产精品久久| 成人午夜激情片| 欧美视频在线观看一区二区| 日韩一区二区三区精品视频 | 成人激情开心网| 色诱亚洲精品久久久久久| 欧美中文字幕一二三区视频| 欧美成人精品二区三区99精品| 欧美经典一区二区| 午夜视频一区二区三区| 国产精品99久久久| 欧亚一区二区三区| 精品国产乱码久久久久久影片| 国产精品久久久久久久久快鸭| 亚洲国产精品久久艾草纯爱| 国产一区二区不卡老阿姨| 日本精品一区二区三区高清| 777a∨成人精品桃花网| 中文字幕不卡一区| 爽好多水快深点欧美视频| 国产夫妻精品视频| 欧美精品色综合| 国产精品网站在线观看| 美腿丝袜在线亚洲一区| 91免费观看国产| 久久久久久影视| 蜜桃视频一区二区三区在线观看| 99riav一区二区三区| 精品国产a毛片|