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

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

?? zl5011xcpq.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
*
*  File name:              zl5011xCpq.c
*
*  Version:                21
*
*  Author:                 LCW
*
*  Date created:           11/04/2002
*
*  Copyright 2002, 2003, 2004, 2005, Zarlink Semiconductor Limited.
*  All rights reserved.
*
*  Module Description:
*  This file contains all the functions that will initialise and control
*  the CPQ block.
*
*  Revision History:
*
*  Rev:  Date:       Author:  Comments:
*  1     15/04/2002  LCW      Created
*  2     15/04/2002  LCW      Minor mods
*  3     19/04/2002  LCW      Prepared for code review
*  4     19/04/2002  LCW      Minor mods
*  5     19/04/2002  LCW      Minor mods
*  6     19/04/2002  LCW      Minor mods
*  7     01/05/2002  LCW      Minor mods
*  8     07/05/2002  LCW      Minor mods
*  9     07/05/2002  LCW      Minor mods
*  10    08/05/2002  LCW      Minor mods
*  11    16/05/2002  LCW      Minor mods
*  12    16/05/2002  LCW      Minor mods
*  13    12/06/2002  MRC      Update
*  14    12/07/2002  MRC      Rationalised the 2 enums for CPU queues
*  15    19/09/2002  MRC      Tidied up register addresses
*  16    01/10/2002  DJA      ZL5011X_TRACE messages fixed up
*  17    18/10/2002  PJE      interruptEnable/Disable updated
*  18    31/10/2002  MRC      Added variants + minor fixes
*  19    07/04/2003  ARW      Added new function zl5011xCpqPacketsToReceive
*  20    07/04/2003  ARW      Fixed bug found in zl5011xCpqSetOverrunMode
*  21    15/02/2005  MRC      Corrected a few comments
*
*******************************************************************************/

/*****************   INCLUDE FILES   ******************************************/

#include "zl5011x.h"
#include "zl5011xCpqMap.h"
#include "zl5011xCpq.h"
#include "zl5011xRdWr.h"
#include "zl5011xUtilLib.h"

/*****************   # DEFINES   **********************************************/

/*****************   STATIC FUNCTION DECLARATIONS   ***************************/

/*****************   STATIC GLOBAL VARIABLES   ********************************/

/*****************   EXPORTED GLOBAL VARIABLES   ******************************/

/*****************   FUNCTION DEFINTIONS   ************************************/

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

 Function:
   zl5011xCpqInit

 Description:
   Initialises the CPQ block.

 Inputs:
    zl5011xParams           Pointer to the structure for this device instance

 Outputs:
   None

 Returns:
  zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xCpqInit(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T loop;

   ZL5011X_TRACE(ZL5011X_CPQ_FN_ID, "zl5011xCpqInit:", 0, 0, 0, 0, 0, 0);

   /* set up defaults for the queue depths */
   for (loop = 0; loop < ZL5011X_CPQ_QUEUES; loop++)
   {
      status = zl5011xCpqConfigureQueue(zl5011xParams, (zl5011xQueueE)loop,
            ZL5011X_CPQ_DEFAULT_GRAN_THLD, ZL5011X_CPQ_DEFAULT_PACKET_DROP_MODE);
   }

   /* set a default for the maximum number of grnaules to be used in the
      CPU queues */
   if(status == ZL5011X_OK)
   {
      status = zl5011xCpqSetGranuleUsage(zl5011xParams, ZL5011X_CPQ_DEFAULT_GRAN_THLD);
   }

   return status;
}

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

 Function:
   zl5011xCpqConfigureQueue

 Description:
   Sets the queue overrun threshold and maximum queue size. If the queue is
   configured to drop packets when the threshold is reached, then the maximum
   size in terms of granules will never be reached.

 Inputs:
   zl5011xParams       Pointer to the structure for this device instance
   queue              The queue on which to set the threshold
   overrunThld        Overrun threshold
   enablePacketDrop   Enables/disables packet dropping mode
   maxGranUsage       Sets the maximum number of granules to be held in the
                      queue

 Outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xCpqConfigureQueue(zl5011xParamsS *zl5011xParams,
                                  zl5011xQueueE queue, Uint32T overrunThld,
                                  zl5011xBooleanE enablePacketDrop)
{

   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_CPQ_FN_ID, "zl5011xCpqConfigureQueue: Queue %d, Threshold %d, Drop Mode %d",
         queue, overrunThld, enablePacketDrop, 0, 0, 0);

   /* Check enum parameter is within range */
   status = ZL5011X_CHECK_QUEUE_NUMBER(queue);

   if(status == ZL5011X_OK)
   {
      status = ZL5011X_CHECK_BOOLEAN(enablePacketDrop);
   }

   if(status == ZL5011X_OK)
   {
     /* Set overrun threshold */
     status = zl5011xCpqSetOverrunThreshold(zl5011xParams, queue,
         overrunThld);
   }

   if(status == ZL5011X_OK)
   {
      /* Set packet dropping mode */
      status = zl5011xCpqSetOverrunMode(zl5011xParams, queue, enablePacketDrop);
   }

   return status;
}

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

 Function:
   zl5011xCpqSetOverrunThreshold

 Description:
   Sets the overrun threshold.

 Inputs:
   zl5011xParams     Pointer to the structure for this device instance
   queue            The queue to be configured
   overrunThld      QoS parameter used to limit the capacity of queues

 Outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xCpqSetOverrunThreshold(zl5011xParamsS *zl5011xParams,
                                       zl5011xQueueE queue, Uint32T overrunThld)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_CPQ_FN_ID,"zl5011xCpqSetOverrunThreshold: Queue %d,Threshold %d",
         queue, overrunThld, 0, 0, 0, 0);

   /* Check queue number is within range */
   status = ZL5011X_CHECK_QUEUE_NUMBER(queue);

   /* Check parameter for illegal value */
   if (status == ZL5011X_OK)
   {
      if ((overrunThld & ~ZL5011X_CPQ_OVERRUN_THLD_CHECK) != 0)
      {
         status = ZL5011X_PARAMETER_INVALID;
      }
   }

   if (status == ZL5011X_OK)
   {
      /* Set overrun threshold to a queue */
      status = zl5011xWrite(zl5011xParams,
            ZL5011X_CPQ_OVERFLOW + (queue * sizeof(Uint32T)), overrunThld);

      /* Record parameters to device structure */
      zl5011xParams->cpuIf.overrunThreshold[queue] = overrunThld;
   }

   return status;
}

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

 Function:
   zl5011xCpqSetOverrunMode

 Description:
   Enables or disables packet dropping. When in enabled mode, packets will
   be dropped when overrun threshold is exceeded.

 Inputs:
   zl5011xParams         Pointer to the structure for this device instance
   queue                The queue on which to set overrun mode
   enablePacketDrop     ZL5011X_TRUE to drop packets when the threshold is
                        exceeded or ZL5011X_FALSE to continue

 Outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xCpqSetOverrunMode(zl5011xParamsS *zl5011xParams,
                                  zl5011xQueueE queue, zl5011xBooleanE enablePacketDrop)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits, bitMask;

   ZL5011X_TRACE(ZL5011X_CPQ_FN_ID, "zl5011xCpqSetOverrunMode: Queue %d, Mode %d",
         queue, enablePacketDrop, 0, 0, 0, 0);

   /* Check enum parameter is within range */
   status = ZL5011X_CHECK_QUEUE_NUMBER(queue);

   if(status == ZL5011X_OK)
   {
      status = ZL5011X_CHECK_BOOLEAN(enablePacketDrop);
   }

   /* Set packet dropping */
   if (status == ZL5011X_OK)
   {
      bitMask = ZL5011X_1BIT_MASK << (queue +ZL5011X_CPQ_ENABLE_THRES_DROP0);

      if (enablePacketDrop == ZL5011X_TRUE)
      {
         bits = bitMask;
      }
      else
      {
         bits = 0;
      }

      status = zl5011xReadModWrite(zl5011xParams, ZL5011X_CPQ_CONTROL,
            bits, bitMask);

      /* Record parameters in device structure */
      zl5011xParams -> cpuIf.enablePacketDrop[queue] = enablePacketDrop;
   }

   return status;
}

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

 Function:
   zl5011xCpqSetGranuleUsage

 Description:
   Controls the maximum number of granules that can be used by the CPQ.

 Inputs:
   zl5011xParams          Pointer to the structure for this device instance
   maxNumberOfGranules   Maximum number of granules used by CPQ.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影网站| 久久午夜羞羞影院免费观看| 久久综合久色欧美综合狠狠| 欧美日韩大陆一区二区| 五月天一区二区三区| 欧美剧情片在线观看| 天堂在线一区二区| 久久日韩粉嫩一区二区三区| 国产91高潮流白浆在线麻豆| 亚洲欧洲日韩一区二区三区| 色综合久久88色综合天天6 | 美女国产一区二区三区| 欧美一区二区啪啪| 国产精品亚洲午夜一区二区三区| 久久久电影一区二区三区| 精品免费一区二区三区| 99久久久国产精品| 日本不卡视频一二三区| 国产精品免费视频网站| 欧美探花视频资源| 国产99久久久国产精品潘金| 成人小视频在线观看| 视频在线在亚洲| 国内精品写真在线观看| 一区二区三区在线不卡| 日韩精品自拍偷拍| 3751色影院一区二区三区| 不卡电影一区二区三区| 国产乱码精品一区二区三区av| 国产精品一区专区| 91搞黄在线观看| 成人sese在线| 欧美三级欧美一级| 久久久久久免费网| 亚洲观看高清完整版在线观看| 国产日韩精品一区二区三区| 日韩欧美资源站| 欧美麻豆精品久久久久久| 久久蜜桃香蕉精品一区二区三区| 亚洲丝袜精品丝袜在线| 国产精品成人免费在线| 国产精品乱码人人做人人爱| 亚洲成人你懂的| 亚洲一二三四区| 一区二区三区四区乱视频| 蜜臀久久99精品久久久画质超高清| 国产福利精品导航| 9l国产精品久久久久麻豆| 成人午夜视频福利| 欧美一级夜夜爽| 一区二区在线观看免费| 亚洲超碰97人人做人人爱| 国产精品一区免费在线观看| 欧美日韩国产乱码电影| 亚洲日本在线天堂| 国产成人午夜精品影院观看视频 | 欧美电影免费观看高清完整版| 综合激情网...| 高清不卡一区二区| 精品88久久久久88久久久| 欧美精品一区二区三区四区| 一区二区三区丝袜| 91在线观看一区二区| 粉嫩av亚洲一区二区图片| 欧美绝品在线观看成人午夜影视| 日韩美女视频一区| youjizz久久| 国产精品国产三级国产| 国产成人日日夜夜| 久久无码av三级| 精品一区精品二区高清| 波多野结衣亚洲一区| 久久久久久97三级| 国产成人激情av| 久久久影院官网| 国产东北露脸精品视频| 久久人人97超碰com| 美女任你摸久久| 欧美mv日韩mv亚洲| 精品亚洲国内自在自线福利| 欧美一区二区三区电影| 美女mm1313爽爽久久久蜜臀| 91麻豆精品国产| 毛片av中文字幕一区二区| 正在播放亚洲一区| 捆绑调教美女网站视频一区| 国产69精品久久777的优势| 国产日韩欧美亚洲| 成人福利视频网站| 一级女性全黄久久生活片免费| 色综合久久久网| 日韩高清国产一区在线| 成人免费毛片片v| 亚洲美女屁股眼交3| 久草在线在线精品观看| 精品福利视频一区二区三区| 国产很黄免费观看久久| 国产精品电影院| 欧美日韩精品一区二区三区| 日本va欧美va精品| 日本一区二区在线不卡| 91精彩视频在线| 六月婷婷色综合| 国产精品免费aⅴ片在线观看| 色综合久久久久网| 奇米在线7777在线精品| 日本一区二区不卡视频| 美女视频网站久久| 国产视频一区二区在线| 免费不卡在线视频| 国产亚洲欧美色| 欧美综合天天夜夜久久| 一区二区三区日韩精品| 欧美va亚洲va在线观看蝴蝶网| 丰满少妇在线播放bd日韩电影| 亚洲免费大片在线观看| 2024国产精品视频| 欧美视频中文一区二区三区在线观看| 青青青伊人色综合久久| 亚洲欧洲成人自拍| 欧美v亚洲v综合ⅴ国产v| 色综合久久88色综合天天免费| 久久成人综合网| 亚洲国产欧美在线| 国产欧美视频在线观看| 91精品国产综合久久精品app| 国产凹凸在线观看一区二区| 水野朝阳av一区二区三区| 国产精品无码永久免费888| 7777精品伊人久久久大香线蕉的 | 亚洲精品日日夜夜| 久久青草国产手机看片福利盒子| 在线看国产一区| 波多野结衣中文字幕一区二区三区| 午夜激情久久久| 亚洲免费在线观看| 1区2区3区国产精品| 精品国产第一区二区三区观看体验 | 国产一区二区三区香蕉| 日韩免费福利电影在线观看| 色天使久久综合网天天| av电影天堂一区二区在线| 国产自产2019最新不卡| 图片区小说区国产精品视频| 亚洲欧美乱综合| 亚洲精品日日夜夜| 1024成人网| 1000精品久久久久久久久| 久久众筹精品私拍模特| 欧美精品一区二区三区在线| 日韩欧美一区中文| 日韩欧美在线综合网| 欧美丰满少妇xxxbbb| 欧美丰满少妇xxxbbb| 91精品国产综合久久香蕉麻豆 | 国产精品久久久久影院| 国产欧美精品国产国产专区| 337p日本欧洲亚洲大胆色噜噜| 欧美一级xxx| 精品第一国产综合精品aⅴ| 欧美zozozo| 国产日韩欧美一区二区三区综合| 久久精品一区二区三区不卡| 国产三级三级三级精品8ⅰ区| 久久久高清一区二区三区| 国产精品久久久久影视| 亚洲天天做日日做天天谢日日欢 | 午夜激情综合网| 免费观看30秒视频久久| 美女视频一区二区三区| 国产电影精品久久禁18| 不卡一区二区在线| 欧美在线观看视频一区二区| 在线视频国内一区二区| 日韩一区二区三区四区| 国产三级精品三级在线专区| 国产精品久久久久久久蜜臀| 一区二区三区在线视频免费观看| 亚洲电影一区二区| 青青草91视频| 国产精品123| 在线亚洲欧美专区二区| 日韩一级大片在线观看| 国产精品丝袜黑色高跟| 亚洲国产综合色| 国产中文一区二区三区| 色综合久久中文字幕综合网| 日韩片之四级片| 亚洲男人的天堂在线aⅴ视频| 日韩国产欧美一区二区三区| 国产成人精品亚洲午夜麻豆| 在线欧美一区二区| 久久色视频免费观看| 亚洲va中文字幕| 国产成人免费9x9x人网站视频| 色婷婷亚洲一区二区三区| 久久婷婷色综合| 亚洲国产精品欧美一二99| 国产成人午夜精品5599 | 国产欧美日产一区|