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

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

?? wmi.c

?? WLAN在AR6000程序中的驅動代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:

A_STATUS
wmi_setPmkid_cmd(struct wmi_t *wmip, A_UINT8 *bssid, A_UINT8 *pmkId,
                 A_BOOL set)
{
    void *osbuf;
    WMI_SET_PMKID_CMD *cmd;

    if (bssid == NULL) {
        return A_EINVAL;
    }

    if ((set == TRUE) && (pmkId == NULL)) {
        return A_EINVAL;
    }

    osbuf = a_netbuf_alloc(sizeof(*cmd));
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    a_netbuf_put(osbuf, sizeof(*cmd));

    cmd = (WMI_SET_PMKID_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMCPY(cmd->bssid, bssid, sizeof(cmd->bssid));
    if (set == TRUE) {
        A_MEMCPY(cmd->pmkid, pmkId, sizeof(cmd->pmkid));
        cmd->enable = PMKID_ENABLE;
    } else {
        A_MEMZERO(cmd->pmkid, sizeof(cmd->pmkid));
        cmd->enable = PMKID_DISABLE;
    }

    return (wmi_cmd_send(wmip, osbuf, WMI_SET_PMKID_CMDID, NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_set_tkip_countermeasures_cmd(struct wmi_t *wmip, A_BOOL en)
{
    void *osbuf;
    WMI_SET_TKIP_COUNTERMEASURES_CMD *cmd;

    osbuf = a_netbuf_alloc(sizeof(*cmd));
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    a_netbuf_put(osbuf, sizeof(*cmd));

    cmd = (WMI_SET_TKIP_COUNTERMEASURES_CMD *)(a_netbuf_to_data(osbuf));
    cmd->cm_en = (en == TRUE)? WMI_TKIP_CM_ENABLE : WMI_TKIP_CM_DISABLE;

    return (wmi_cmd_send(wmip, osbuf, WMI_SET_TKIP_COUNTERMEASURES_CMDID, 
            NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_dataSync_send(struct wmi_t *wmip, void *osbuf, int endPoint)
{
    WMI_DATA_HDR     *dtHdr;

    AR_DEBUG_ASSERT(endPoint != WMI_CONTROL_MBOX);
    AR_DEBUG_ASSERT(osbuf != NULL);

    if (a_netbuf_push(osbuf, sizeof(WMI_DATA_HDR)) != A_OK) {
        return A_NO_MEMORY;
    }

    dtHdr = (WMI_DATA_HDR *)a_netbuf_to_data(osbuf);
#ifndef AR6K_FIRMWARE_1_0
    dtHdr->rssi = 0;
#else
    dtHdr->reserved1 = 0;
#endif
    WMI_DATA_HDR_SET_MSG_TYPE( dtHdr, SYNC_MSGTYPE);

    WMI_DEBUG_PRINTF(ATH_LOG_INF,"wmi sync pkt sent on mbox %d\n", endPoint);

    return (ar6000_control_tx(wmip->wmi_devt, osbuf, endPoint));
}

static A_STATUS
wmi_sync_point(struct wmi_t *wmip)
{
    void *cmd_osbuf, *be_osbuf, *pri_osbuf[WMI_MAX_NUM_PRI_STREAMS];
    A_UINT8 i;
    A_STATUS status;

    WMI_DEBUG_PRINTF(ATH_LOG_INF,"wmi_sync_point\n");
    /*
     * We allocate all network buffers needed so we will be able to
     * send all required frames.
     */
    cmd_osbuf = a_netbuf_alloc(0);      /* no payload */
    if (cmd_osbuf == NULL) {
        return A_NO_MEMORY;
    }
    be_osbuf = a_netbuf_alloc(0);      /* no payload */
    if (be_osbuf == NULL) {
        a_netbuf_free(cmd_osbuf);
        return A_NO_MEMORY;
    }

    for (i = 0; i < wmip->wmi_numQoSStream; i++) {
        pri_osbuf[i] = a_netbuf_alloc(0);      /* no payload */
        if (pri_osbuf[i] == NULL) {
            A_UINT8 j;        
            a_netbuf_free(be_osbuf);
            a_netbuf_free(cmd_osbuf);
            /* free previously allocated bufs */
            for (j = 0; j < i; j++) {
                a_netbuf_free(pri_osbuf[j]);
            }
            return A_NO_MEMORY;
        }
    }

    /*
     * Send sync cmd followed by sync data messages on all endpoints being
     * used
     */
    status = wmi_cmd_send(wmip, cmd_osbuf, WMI_SYNCHRONIZE_CMDID,
                          NO_SYNC_WMIFLAG);

    if (status == A_OK) {
        status = wmi_dataSync_send(wmip, be_osbuf, WMI_BEST_EFFORT_MBOX);
    }

    if (status == A_OK) {
        A_UINT8 priIndex = 0;
        for (i = 0; i < wmip->wmi_numQoSStream; i++) {
            while (priIndex < WMI_MAX_NUM_PRI_STREAMS &&
                  (!wmip->wmi_priority[priIndex].inUse)) {
                priIndex++;
            }
            if (priIndex >= WMI_MAX_NUM_PRI_STREAMS) {
                break;
            }
            status = wmi_dataSync_send(wmip, pri_osbuf[i], wmip->wmi_priority[priIndex].mbox);
            if (status != A_OK) {
                break;
            }
            priIndex++;
        }
    }

    return (status);
}

A_STATUS
wmi_create_pstream_cmd(struct wmi_t *wmip, WMI_CREATE_PSTREAM_CMD *params)
{
    void *osbuf;
    WMI_CREATE_PSTREAM_CMD *cmd;

#ifndef AR6K_FIRMWARE_1_0
    /* Validate all the parameters. */
    if( !((params->userPriority < 8) &&
         (params->trafficDirection == BIDIR_TRAFFIC ||
            params->trafficDirection == UPLINK_TRAFFIC ||
            params->trafficDirection == DNLINK_TRAFFIC ) &&
         (params->userPriority <= 0x7) &&
                  (params->trafficClass != WMM_AC_BE)  &&
         (params->trafficType == TRAFFIC_TYPE_APERIODIC ||
            params->trafficType == TRAFFIC_TYPE_PERIODIC ) &&
         (params->voicePSCapability == DISABLE_FOR_THIS_AC  ||
            params->voicePSCapability == ENABLE_FOR_THIS_AC ||
            params->voicePSCapability == ENABLE_FOR_ALL_AC) &&
         (params->tsid < 15)) )
    {
        return  A_EINVAL;
    }
#endif

    if (params->trafficDirection == BIDIR_TRAFFIC) {
        if (wmip->wmi_pstreamCmdInProgress[UPLINK_TRAFFIC][params->trafficClass]
          || wmip->wmi_pstreamCmdInProgress[DNLINK_TRAFFIC][params->trafficClass]
          || wmip->wmi_cpstreamCmdInProgress) {
            WMI_DEBUG_PRINTF(ATH_LOG_ERR,"create %d too busy !\n",params->trafficClass);
            return A_EBUSY;
        }
        wmip->wmi_pstreamCmdInProgress[UPLINK_TRAFFIC][params->trafficClass] = TRUE;
        wmip->wmi_pstreamCmdInProgress[DNLINK_TRAFFIC][params->trafficClass] = TRUE;
    } else {
        if (wmip->wmi_pstreamCmdInProgress[params->trafficDirection][params->trafficClass]
         || wmip->wmi_cpstreamCmdInProgress) {
            WMI_DEBUG_PRINTF(ATH_LOG_ERR,"create %d too busy !\n",params->trafficClass);
            return A_EBUSY;
        }
        wmip->wmi_pstreamCmdInProgress[params->trafficDirection][params->trafficClass] = TRUE;
    }

    osbuf = a_netbuf_alloc(sizeof(*cmd));
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    wmip->wmi_cpstreamCmdInProgress = TRUE;
    a_netbuf_put(osbuf, sizeof(*cmd));

    WMI_DEBUG_PRINTF(ATH_LOG_INF,"Sending create_pstream_cmd: ac=%d, rxQ=%d, dir=%d\n", 
                     params->trafficClass, params->rxQueueNum, params->trafficDirection);

    cmd = (WMI_CREATE_PSTREAM_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMZERO(cmd, sizeof(*cmd));
    A_MEMCPY(cmd, params, sizeof(*cmd));

    if (params->rxQueueNum == 0xFF) {
        if(wmip->wmi_trafficClassMap[DNLINK_TRAFFIC][params->trafficClass] != WMI_NOT_MAPPED)
            cmd->rxQueueNum = wmip->wmi_trafficClassMap[DNLINK_TRAFFIC][params->trafficClass];
        else
            cmd->rxQueueNum = wmip->wmi_olderPriRxMbox;
    } else {
        cmd->rxQueueNum = params->rxQueueNum;
    }
    
    /* mike: should be SYNC_BEFORE_WMIFLAG */
    return (wmi_cmd_send(wmip, osbuf, WMI_CREATE_PSTREAM_CMDID,
                         NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_delete_pstream_cmd(struct wmi_t *wmip, A_UINT8 txQueueNumber, A_UINT8 rxQueueNumber, A_UINT8 dir)
{
    void *osbuf;
    WMI_DELETE_PSTREAM_CMD *cmd;
    A_STATUS status;
    A_UINT8 class;

    osbuf = a_netbuf_alloc(sizeof(*cmd));
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    if (dir == BIDIR_TRAFFIC) {
        class = wmip->wmi_mboxMap[UPLINK_TRAFFIC][txQueueNumber].trafficClass;
        if (wmip->wmi_pstreamCmdInProgress[UPLINK_TRAFFIC][class]
         || wmip->wmi_pstreamCmdInProgress[DNLINK_TRAFFIC][class]) {
            return A_EBUSY;
        }
        wmip->wmi_pstreamCmdInProgress[UPLINK_TRAFFIC][class] = TRUE;
        wmip->wmi_pstreamCmdInProgress[DNLINK_TRAFFIC][class] = TRUE;
    } else {
        if (dir == UPLINK_TRAFFIC) {
            class = wmip->wmi_mboxMap[UPLINK_TRAFFIC][txQueueNumber].trafficClass;
        } else {
            class = wmip->wmi_mboxMap[DNLINK_TRAFFIC][rxQueueNumber].trafficClass;
        }
        if (wmip->wmi_pstreamCmdInProgress[dir][class]) {
            return A_EBUSY;
        }
        wmip->wmi_pstreamCmdInProgress[dir][class] = TRUE;
    }

    a_netbuf_put(osbuf, sizeof(*cmd));

    cmd = (WMI_DELETE_PSTREAM_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMZERO(cmd, sizeof(*cmd));
    cmd->txQueueNumber = txQueueNumber;
    cmd->rxQueueNumber = rxQueueNumber;
    cmd->trafficDirection = dir;
    cmd->trafficClass = class;
    WMI_DEBUG_PRINTF(ATH_LOG_INF,"Sending delete_pstream_cmd: txQ=%d, rxQ=%d, dir=%d\n", 
                     txQueueNumber, rxQueueNumber, dir);
    status = (wmi_cmd_send(wmip, osbuf, WMI_DELETE_PSTREAM_CMDID,
                         (dir == UPLINK_TRAFFIC || dir == BIDIR_TRAFFIC) ? SYNC_BEFORE_WMIFLAG : NO_SYNC_WMIFLAG));

    if (class != WMM_AC_BE) {
        /* Update internal states */
        if (dir == UPLINK_TRAFFIC || dir == BIDIR_TRAFFIC) {
            wmip->wmi_numQoSStream--;
            ar6000_set_numdataendpts(wmip->wmi_devt, wmip->wmi_numQoSStream+1);
            wmip->wmi_priority[wmip->wmi_mboxMap[UPLINK_TRAFFIC][txQueueNumber].priorityNum].inUse = 0;
            wmip->wmi_trafficClassMap[UPLINK_TRAFFIC][class] = WMI_NOT_MAPPED;
            wmip->wmi_mboxMap[UPLINK_TRAFFIC][txQueueNumber].priorityNum = WMI_NOT_MAPPED;
            wmip->wmi_mboxMap[UPLINK_TRAFFIC][txQueueNumber].trafficClass = WMM_AC_BE;
        }
    }

    return status;
}


/*
 * used to set the bit rate.  rate is in Kbps.  If rate == -1
 * then auto selection is used.
 */
A_STATUS
wmi_set_bitrate_cmd(struct wmi_t *wmip, A_INT32 rate)
{
    void *osbuf;
    WMI_BIT_RATE_CMD *cmd;
    A_INT8 i;

    if (rate != -1) {
        for (i=0;;i++) {
            if (wmi_rateTable[i] == 0) {
                return A_EINVAL;
            }
            if (wmi_rateTable[i] == rate) {
                break;
            }
        }
    } else {
        i = -1;
    }

    osbuf = a_netbuf_alloc(sizeof(*cmd));
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    a_netbuf_put(osbuf, sizeof(*cmd));

    cmd = (WMI_BIT_RATE_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMZERO(cmd, sizeof(*cmd));

    cmd->rateIndex = i;

    return (wmi_cmd_send(wmip, osbuf, WMI_SET_BITRATE_CMDID, NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_get_bitrate_cmd(struct wmi_t *wmip)
{
    void *osbuf;

    osbuf = a_netbuf_alloc(0);      /* no payload */
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    return (wmi_cmd_send(wmip, osbuf, WMI_GET_BITRATE_CMDID, NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_get_channelList_cmd(struct wmi_t *wmip)
{
    void *osbuf;

    osbuf = a_netbuf_alloc(0);      /* no payload */
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    return (wmi_cmd_send(wmip, osbuf, WMI_GET_CHANNEL_LIST_CMDID,
                         NO_SYNC_WMIFLAG));
}

/*
 * used to generate a wmi sey channel Parameters cmd.
 * mode should always be specified and corresponds to the phy mode of the
 * wlan.
 * numChan should alway sbe specified. If zero indicates that all available
 * channels should be used.
 * channelList is an array of channel frequencies (in Mhz) which the radio
 * should limit its operation to.  It should be NULL if numChan == 0.  Size of
 * array should correspond to numChan entries.
 */
A_STATUS
wmi_set_channelParams_cmd(struct wmi_t *wmip, WMI_PHY_MODE mode, A_INT8 numChan,
                          A_UINT16 *channelList)
{
    void *osbuf;
    WMI_CHANNEL_PARAMS_CMD *cmd;
    A_INT8 size;

    if ((mode <= WMI_MIN_PHY_MODE) || (mode >= WMI_MAX_PHY_MODE)) {
       return A_EINVAL;
    }

    size = sizeof (*cmd);

    if (numChan) {
        if (numChan > WMI_MAX_CHANNELS) {
            return A_EINVAL;
        }
        size += sizeof(A_UINT16) * (numChan - 1);
    }

    osbuf = a_netbuf_alloc(size);
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    a_netbuf_put(osbuf, size);

    cmd = (WMI_CHANNEL_PARAMS_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMZERO(cmd, size);

    cmd->phyMode     = mode;
    cmd->numChannels = numChan;
    A_MEMCPY(cmd->channelList, channelList, numChan * sizeof(A_UINT16));

    return (wmi_cmd_send(wmip, osbuf, WMI_SET_CHANNEL_PARAMS_CMDID,
                         NO_SYNC_WMIFLAG));
}

A_STATUS
wmi_set_link_threshold_params(struct wmi_t *wmip, 
                                A_UINT8     highThreshold_upperVal,
                                A_UINT8     highThreshold_lowerVal,
                                A_UINT8     lowThreshold_upperVal,
                                A_UINT8     lowThreshold_lowerVal,
                                A_UINT32    pollTime)
{
    void    *osbuf;
    A_INT8  size;
    WMI_RSSI_THRESHOLD_PARAMS_CMD *cmd;

    /* These values are in ascending order */
    if( highThreshold_upperVal <= highThreshold_lowerVal ||
        lowThreshold_upperVal  <= lowThreshold_lowerVal  ||
        highThreshold_lowerVal <= lowThreshold_upperVal)
        return A_EINVAL;

    size = sizeof (*cmd);

    osbuf = a_netbuf_alloc(size);
    if (osbuf == NULL) {
        return A_NO_MEMORY;
    }

    a_netbuf_put(osbuf, size);

    cmd = (WMI_RSSI_THRESHOLD_PARAMS_CMD *)(a_netbuf_to_data(osbuf));
    A_MEMZERO(cmd, size);

    cmd->highThreshold_upperVal = highThreshold_upperVal;
    cmd->highThreshold_lowerVal = highThreshold_lowerVal;
    cmd->lowThreshold_upperVal  = lowThreshold_upperVal;
    cmd->lowThreshold_lowerVal  = lowThreshold_lowerV

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品欧美综合四区| 一区二区三区中文字幕电影| 色国产精品一区在线观看| 国产一区不卡在线| 免费人成网站在线观看欧美高清| 亚洲一区二区不卡免费| 一区二区三区精密机械公司| 日本不卡视频一二三区| 99久久99久久精品国产片果冻| 国产精品一品视频| av在线一区二区三区| 99久久婷婷国产综合精品电影| 777欧美精品| 7777女厕盗摄久久久| 国产精品久久久久婷婷二区次| 中文字幕免费观看一区| 亚洲视频在线一区| 亚洲成精国产精品女| 视频一区中文字幕国产| 久久99精品久久久久久久久久久久| 狠狠色2019综合网| 99国产精品一区| 日本一区免费视频| 亚洲自拍欧美精品| 99久久综合狠狠综合久久| 久久精品日韩一区二区三区| 亚洲精品国久久99热| 成人激情av网| 欧美色窝79yyyycom| 日韩欧美综合在线| 国产精品白丝在线| 高清国产一区二区| 91麻豆精品国产自产在线| 亚洲一区二区三区影院| 色欧美片视频在线观看| 日韩写真欧美这视频| 日韩精品一二三区| 欧美一区二区三区精品| 国产精品美女久久久久久久网站| 亚洲国产欧美日韩另类综合| 国产精品一区专区| √…a在线天堂一区| 亚洲欧美日韩综合aⅴ视频| 奇米精品一区二区三区在线观看| 欧美日韩久久不卡| 18涩涩午夜精品.www| av亚洲精华国产精华精| **欧美大码日韩| 91福利国产成人精品照片| 亚洲国产成人精品视频| 欧美日本一区二区三区四区| 五月天国产精品| 成人黄色一级视频| 日韩理论片在线| 欧美日韩国产综合一区二区| 日日摸夜夜添夜夜添国产精品| 欧美一区二区性放荡片| 激情小说亚洲一区| 日韩一区有码在线| 欧美巨大另类极品videosbest | 欧美性大战久久久久久久| 一区二区三区色| 日韩一区二区三区高清免费看看| 精品在线免费观看| 国产精品美女久久久久aⅴ| 日本福利一区二区| 免费欧美在线视频| 国产精品国产三级国产有无不卡| 欧洲精品在线观看| 亚洲男人天堂av网| 4hu四虎永久在线影院成人| 韩国女主播一区| 亚洲激情六月丁香| 欧美刺激脚交jootjob| 亚洲a一区二区| 久久久一区二区| 韩国精品主播一区二区在线观看 | 亚洲自拍偷拍麻豆| 久久综合精品国产一区二区三区 | 国产91综合网| 亚洲国产精品麻豆| 国产欧美精品在线观看| 欧美午夜在线一二页| 国产乱对白刺激视频不卡| 亚洲黄色免费电影| 久久久五月婷婷| 欧美日韩美女一区二区| 成人h动漫精品| 欧美a级理论片| 亚洲精品国产第一综合99久久| 日韩精品一区二区三区视频 | 国产高清无密码一区二区三区| 久久久不卡网国产精品一区| 精品视频一区二区三区免费| 日韩中文字幕一区二区三区| 国产精品久久久久久妇女6080 | 欧美日韩高清一区二区| 成人av午夜电影| 国产精品中文字幕一区二区三区| 香蕉av福利精品导航| 樱花影视一区二区| 综合婷婷亚洲小说| 国产精品久久久久毛片软件| 精品国产伦一区二区三区观看方式 | 在线综合亚洲欧美在线视频| 色综合久久综合网97色综合 | 麻豆91精品视频| 久久久久青草大香线综合精品| 精品视频一区 二区 三区| 91丨九色丨蝌蚪丨老版| 午夜久久久影院| 亚洲精品成人悠悠色影视| 国产精品欧美一区二区三区| 久久综合久色欧美综合狠狠| 91精品国产色综合久久久蜜香臀| 欧美午夜一区二区三区| 91在线免费看| 91影院在线观看| 91丨九色porny丨蝌蚪| aaa亚洲精品| 91同城在线观看| 色综合色综合色综合| 色88888久久久久久影院按摩| av在线播放一区二区三区| 成人动漫中文字幕| 91视频免费播放| 欧美系列亚洲系列| 91精品国产高清一区二区三区蜜臀| 欧美日产在线观看| 日韩小视频在线观看专区| 日韩精品中文字幕在线不卡尤物 | 亚洲国产精品高清| 国产欧美日本一区视频| 国产精品毛片久久久久久| 国产精品久线在线观看| 亚洲四区在线观看| 亚洲bt欧美bt精品777| 免费精品视频最新在线| 韩国精品免费视频| 成人av免费观看| 欧洲精品在线观看| 日韩一区二区三区视频在线| 久久久久久久精| 国产精品久99| 亚洲www啪成人一区二区麻豆| 青青草原综合久久大伊人精品 | 欧美性猛交xxxxxx富婆| 欧美一二三四区在线| 久久婷婷国产综合国色天香| 国产精品麻豆一区二区| 日日摸夜夜添夜夜添精品视频 | 91精品国产一区二区三区香蕉| 日韩精品一区二区三区四区视频| 欧美国产激情二区三区| 一区二区三区四区在线免费观看| 五月天中文字幕一区二区| 国产真实乱偷精品视频免| 91免费国产在线观看| 91精品久久久久久蜜臀| 国产精品色婷婷久久58| 亚洲国产精品一区二区久久恐怖片| 久久黄色级2电影| 免费在线看一区| 97久久超碰精品国产| 91精品国产色综合久久ai换脸| 国产精品久久久久久久久果冻传媒 | 亚洲乱码一区二区三区在线观看| 日韩国产成人精品| 老司机精品视频导航| 91在线无精精品入口| 精品少妇一区二区三区视频免付费 | 丁香五精品蜜臀久久久久99网站| 欧美日韩高清一区二区不卡 | 日本福利一区二区| 欧美国产禁国产网站cc| 精品一区二区三区视频| 欧美群妇大交群的观看方式| 国产精品全国免费观看高清| 亚洲午夜一二三区视频| 风流少妇一区二区| 欧美日韩免费电影| 亚洲另类在线视频| 国产一区欧美二区| 大胆亚洲人体视频| 91香蕉视频污在线| 欧美一区二区人人喊爽| 国产欧美一区二区三区沐欲| 免费在线看成人av| 色婷婷av久久久久久久| 国产日本欧美一区二区| 亚洲一区在线观看免费 | 欧美一区二区三区在线观看视频| 国产精品久久久久精k8 | 欧美日韩在线三级| 久久综合99re88久久爱| 中文字幕中文字幕中文字幕亚洲无线| 日本在线不卡视频一二三区| 99久久综合精品| 亚洲女爱视频在线| 大陆成人av片|