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

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

?? zl5011xpkc.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    TM to control the routing.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   flow           the flow type that should be used for messages forwarded to
                  the host.

 Outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xPkcSetHostFlowType(zl5011xParamsS *zl5011xParams,
      zl5011xFlowTypeE flow)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_PKC_FN_ID,
         "zl5011xPkcSetHostFlowType: flow %d",
         flow, 0, 0, 0, 0, 0);

   status = ZL5011X_CHECK_FLOW_TYPE(flow);

   if (status == ZL5011X_OK)
   {
      status = zl5011xWrite(zl5011xParams, ZL5011X_PKC_HOST_FLOW_TYPE,
            flow  << ZL5011X_PKC_NO_MATCH_FLOW_BITS);
   }

   return (status);
}

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

 Function:
    zl5011xAssembleBitFields

 Description:
    This function is used to assemble bit fields into 32 bit words.
    An array of input words is provided, and the new data field is written into
    the array, using the current index and the bit position within the word as
    the starting point

 Inputs:
   newField       the data bits that are to be copied into the output word
   newFieldSize   how many bits are to be copied to the output word

 Outputs:
   word           the base address of the word array used to store the fields
   index          current word to use in the array
   wordPos        the bit position for data to be added to the word. This is input,
                  and updated when bits are added.

 Returns:
   zlStatusE

 Remarks:
   If the bit field size is greater than 32 bits, then the remaining bits will
   be padded with 0.

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

zlStatusE zl5011xAssembleBitFields(Uint32T *word, Uint8T *index, Uint8T *wordPos,
      Uint32T newField, Uint8T newFieldSize)
{
   Uint32T loop;
   Uint32T bit;
   zlStatusE status = ZL5011X_OK;

   loop = 0;
   while (loop < newFieldSize)
   {
      /* get the bit from the new field */
      if (loop >= 32)
      {
         bit = 0;
      }
      else
      {
         bit = (newField >> loop) & ZL5011X_1BIT_MASK;
      }

      /* shift the new bit into the right place in the current word */
      word[*index] = (word[*index] & ~(ZL5011X_1BIT_MASK << *wordPos)) | bit << *wordPos;

      (*wordPos)++;

      /* if we have reached the end of the word then change over to start
         working on the second one */
      if (*wordPos >= 32)
      {
         (*index)++;
         *wordPos = 0;
      }

      loop++;
   }

   return (status);
}

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

 Function:
    zl5011xWriteAssembledBitFields

 Description:
   This function is used to write data to the device that has been assembled
   into an array. The device must be accessed in reverse order, due to a
   latching mechanism in the PKC - that is the highest address first.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   word           array of words to write to the device
   numWords       How many words to write to the device
   wordPos        The word position is needed to determine whether the word is
                  empty or not.
   address        the base address for the access. The last write will be to this
                  address (i.e. the address is decremented after each write).

 Outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xWriteAssembledBitFields(zl5011xParamsS *zl5011xParams,
      Uint32T *word, Uint8T numWords, Uint8T wordPos, Uint32T address)
{
   zlStatusE status = ZL5011X_OK;
   Sint32T  loop;

   /* if no bits have been added to this word, then subtract one from the
      length count */
   if (wordPos == 0)
   {
      loop = (Sint32T)numWords - 1;
   }
   else
   {
      loop = (Sint32T)numWords;
   }

   do
   {
      status = zl5011xWrite(zl5011xParams, address + (loop * sizeof(Uint32T)),
            word[loop]);

      loop--;
   } while ((loop >= 0) && (status == ZL5011X_OK));

   return (status);
}

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

 Function:
    zl5011xPkcGetStats

 Description:
   Collects various statistics for packet matching

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance

 Outputs:
   stats          Structure to hold stats

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xPkcGetStats(zl5011xParamsS *zl5011xParams, zl5011xPkcStatsS *stats)
{
   Uint32T loop;
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_PKC_FN_ID,
         "zl5011xPkcGetStats:",
         0, 0, 0, 0, 0, 0);

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

      status = zl5011xRead(zl5011xParams,
            ZL5011X_PKC_PROTOCOL_COUNT + (loop * 2 * sizeof(Uint32T)),
            &(stats->protocolCount[loop]));
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_PROTOCOL_NO_MATCH_COUNT,
            &(stats->protocolNoMatchCount));
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_CLASSIFY_NO_MATCH_COUNT,
            &(stats->classifyNoMatchCount));
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_VERIFY_FAIL_COUNT,
            &(stats->verifyFailCount));
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_IPV4_CHECKSUM_COUNT,
            &(stats->ipv4ChecksumFailCount));
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_UDP_CHECKSUM_COUNT,
            &(stats->udpChecksumFailCount));
   }

   return (status);
}

/*******************************************************************************
 Function:
    zl5011xPkcGetInterruptStatus

 Description:
   This function reads back the  interrupt status ( poll) register

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    ptr to intrStatus value returned

 Returns:
    zlStatusE

 Remarks:

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

zlStatusE zl5011xPkcGetInterruptStatus(zl5011xParamsS *zl5011xParams, Uint32T *pIntrStatus)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_PKC_FN_ID, "zl5011xPkcGetInterruptStatus:",0, 0, 0, 0, 0, 0);

   if( pIntrStatus== NULL)
   {
      status= ZL5011X_PARAMETER_INVALID;
   }
   if( status== ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_INT_POLL, pIntrStatus);
   }
   if( status== ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_PKC_FN_ID, "zl5011xPkcGetInterruptStatus: status 0x%.08lx",*pIntrStatus,
                     0, 0, 0, 0, 0);
   }
   return (status);

}

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

 Function:
    zl5011xPkcEnableInterrupts

 Description:
    Set enabling bits for the interrupt register. A ONE  indicates
    that interrupt is enabled. Leaves other bits unchanged.

 Inputs:
    zl5011xParams     Pointer to the structure for this device instance
    interruptBits    Set bit position to 1 to enable corresponding interrupt

 Outputs:

 Returns:
    zlStatusE

 Remarks:

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

zlStatusE zl5011xPkcEnableInterrupts(zl5011xParamsS *zl5011xParams, Uint32T interruptBits)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T regBits=0;

   ZL5011X_TRACE(ZL5011X_PKC_FN_ID,
          "zl5011xPkcEnableInterrupts: bits %08X",
          interruptBits, 0, 0, 0, 0, 0);

   if(status == ZL5011X_OK)
   {
      /* clear the interrupt before enabling it. The assumption being that if the
         interrupt was disabled, then there is no interest in any prior events.
         Do not clear the PW status interrupt though - queue MUST be read
         before clearing the bit!!! */
      regBits = interruptBits & ~(ZL5011X_1BIT_MASK << ZL5011X_PACKET_RX_PW_INT);

      status = zl5011xPkcClearInterrupts(zl5011xParams, regBits);
   }

   if(status == ZL5011X_OK)
   {
      status = zl5011xRead(zl5011xParams, ZL5011X_PKC_INT_MASK, &regBits);
   }

   /* write ZEROS to the mask reg (A 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞影院一区二区| 99久久综合99久久综合网站| 日韩av在线免费观看不卡| 一本到三区不卡视频| 欧美精彩视频一区二区三区| 国产福利91精品一区| 国产精品久久久久毛片软件| 波多野结衣视频一区| 成人国产精品免费观看| 日韩成人午夜电影| 青青青爽久久午夜综合久久午夜| 亚洲国产你懂的| 精品国产亚洲在线| 成人一区在线观看| 麻豆久久一区二区| 亚洲影视在线播放| 国产亚洲短视频| 91成人免费在线| 国产在线乱码一区二区三区| 亚洲日本va在线观看| 日韩欧美视频在线| 91蝌蚪porny| 国产麻豆精品在线观看| 日韩国产精品久久久久久亚洲| 一区二区三区成人| 国产精品久久久久久久午夜片| 最新国产の精品合集bt伙计| 亚洲一线二线三线视频| 麻豆久久久久久久| 色先锋aa成人| 日韩欧美亚洲另类制服综合在线 | 久久99精品久久只有精品| 自拍偷拍国产精品| 亚洲精品成人少妇| 国产精品欧美一区喷水| 欧美一区午夜视频在线观看 | 欧美性欧美巨大黑白大战| 国产在线视视频有精品| 成人免费黄色在线| 555www色欧美视频| 成人精品在线视频观看| 色一情一伦一子一伦一区| 欧美电视剧在线看免费| 亚洲最大成人综合| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美日韩精品福利| 91看片淫黄大片一级| 欧美成人国产一区二区| 91精品国产综合久久久蜜臀粉嫩 | 污片在线观看一区二区| 一区二区三区在线不卡| 久久精品国产亚洲a| 韩国女主播一区| 欧美精品成人一区二区三区四区| 在线观看日韩电影| 在线看国产日韩| 久久久国产一区二区三区四区小说| 久久久久久一二三区| 天堂va蜜桃一区二区三区漫画版| 亚洲伊人伊色伊影伊综合网| 成人av在线影院| 亚洲精品一区二区三区福利| 日本亚洲欧美天堂免费| 欧美日韩在线观看一区二区 | 欧美一区二区高清| 一区二区三区欧美日| 成人激情电影免费在线观看| 久久久综合九色合综国产精品| 麻豆精品一区二区三区| 欧美手机在线视频| 亚洲一二三区在线观看| 日本韩国欧美在线| 亚洲免费视频中文字幕| 亚洲国产精品一区二区久久恐怖片| 不卡一区在线观看| 久久综合久久鬼色中文字| 自拍av一区二区三区| 成人sese在线| 亚洲同性同志一二三专区| 不卡一二三区首页| 亚洲日本va在线观看| 91极品美女在线| 午夜激情一区二区三区| 欧美一区欧美二区| 国内精品伊人久久久久av一坑| 久久亚洲一级片| 国产不卡视频在线播放| 欧美日韩国产系列| 青青草精品视频| 精品国产91久久久久久久妲己| 狠狠色狠狠色综合| 亚洲欧洲日韩在线| 久久国产精品无码网站| 26uuu亚洲综合色欧美| 国产精品亚洲第一| 日韩码欧中文字| 91浏览器在线视频| 五月综合激情婷婷六月色窝| 日韩免费视频线观看| 国产经典欧美精品| 亚洲综合久久av| 精品乱人伦一区二区三区| 国产激情精品久久久第一区二区| 亚洲欧洲精品一区二区三区| 欧美日韩一区二区欧美激情| 精品亚洲porn| 亚洲日本免费电影| 日韩免费高清电影| 97久久精品人人做人人爽 | 色噜噜狠狠一区二区三区果冻| 亚洲不卡av一区二区三区| 成人黄色国产精品网站大全在线免费观看 | 欧美区视频在线观看| 国产麻豆成人传媒免费观看| 亚洲视频网在线直播| 91精品国产福利| 99精品视频一区| 国产一区在线不卡| 午夜在线电影亚洲一区| 中日韩免费视频中文字幕| 欧美精选一区二区| 色哟哟一区二区三区| 国产一区二区影院| 天天av天天翘天天综合网 | 经典一区二区三区| 亚洲美女屁股眼交3| 日韩欧美亚洲国产精品字幕久久久| 色综合天天狠狠| 国产不卡一区视频| 狠狠色丁香婷婷综合久久片| 亚洲国产欧美日韩另类综合 | 精品对白一区国产伦| 欧美日韩免费不卡视频一区二区三区| 国产99久久久国产精品潘金 | 本田岬高潮一区二区三区| 国产一区二区91| 免费观看在线综合| 亚洲一区二区五区| 一区二区三区日韩欧美| 国产精品久久久久一区二区三区 | av影院午夜一区| 国产福利视频一区二区三区| 久久99久久精品欧美| 日韩中文字幕一区二区三区| 一区二区三区电影在线播| 综合婷婷亚洲小说| 亚洲欧美日韩国产另类专区| 中文在线一区二区| 99国产精品久久| 成人白浆超碰人人人人| 国产 欧美在线| 成人免费观看视频| 波多野结衣视频一区| 91小视频免费观看| 在线精品亚洲一区二区不卡| 91国产视频在线观看| 欧美中文字幕一区| 欧美精品色一区二区三区| 91精品国产美女浴室洗澡无遮挡| 欧美韩日一区二区三区四区| www久久久久| 国产亚洲福利社区一区| 自拍偷拍亚洲欧美日韩| 亚洲永久免费av| 久久国产精品色| 国产一二精品视频| 99久久99久久久精品齐齐| 色呦呦国产精品| 91麻豆精品91久久久久久清纯 | 综合久久一区二区三区| 亚洲精品国产品国语在线app| 夜夜嗨av一区二区三区中文字幕| 亚洲国产一区二区视频| 麻豆精品久久精品色综合| 国产精一区二区三区| 91丨porny丨在线| 欧美天堂一区二区三区| 欧美不卡视频一区| 国产精品妹子av| 亚洲超丰满肉感bbw| 国产在线精品免费| 日本高清不卡视频| 日韩三级免费观看| 色婷婷亚洲婷婷| 制服丝袜亚洲网站| 国产偷国产偷亚洲高清人白洁| 国产精品三级av| 日产精品久久久久久久性色| 国产电影精品久久禁18| 欧美午夜精品一区| 久久久噜噜噜久久中文字幕色伊伊 | 成人欧美一区二区三区1314| 五月婷婷综合网| 成人自拍视频在线| 欧美日韩国产美| 国产精品高潮久久久久无| 天堂成人国产精品一区| 91小宝寻花一区二区三区| 精品粉嫩超白一线天av| 一区二区免费看|