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

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

?? wmi.c

?? WLAN在AR6000程序中的驅動代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
//------------------------------------------------------------------------------
// <copyright file="wmi.c" company="Atheros">
//    Copyright (c) 2006 Microsoft Corporation.  All rights reserved.
//    Copyright (c) 2006 Atheros Corporation.  All rights reserved.
//
//    The use and distribution terms for this software are covered by the
//    Microsoft Limited Permissive License (Ms-LPL) 
//    http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx 
//    which can be found in the file MS-LPL.txt at the root of this distribution.
//    By using this software in any fashion, you are agreeing to be bound by
//    the terms of this license.
//
//    You must not remove this notice, or any other, from this software.
// </copyright>
// 
// <summary>
//    Windows CE Wifi Driver for AR-6000
// </summary>
//------------------------------------------------------------------------------
//==============================================================================
// This module implements the hardware independent layer of the
// Wireless Module Interface (WMI) protocol.
//
// Author(s): ="Atheros"
//==============================================================================


#include <athdefs.h>
#include <athtypes.h>
#include <osapi.h>
#include "htc.h"
#include <ieee80211.h>
#include <ieee80211_node.h>
#include <wlan_api.h>
#include <wmi_api.h>
#include "dset_api.h"
#include "gpio_api.h"
#include "wmi_host.h"
#include "athdrv.h"
#include <ar6000_api.h>

static A_STATUS wmi_ready_event_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);

static A_STATUS wmi_connect_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
static A_STATUS wmi_disconnect_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                        int len);
static A_STATUS wmi_tkip_micerr_event_rx(struct wmi_t *wmip, A_UINT8 *datap, 
                                        int len);
static A_STATUS wmi_bssInfo_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
static A_STATUS wmi_opt_frame_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                       int len);
static A_STATUS wmi_pstream_timeout_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
static A_STATUS wmi_sync_point(struct wmi_t *wmip);

static A_STATUS wmi_create_pstream_reply_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                          int len);
static A_STATUS wmi_delete_pstream_reply_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                          int len);
static A_STATUS wmi_bitrate_reply_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
static A_STATUS wmi_channelList_reply_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                         int len);
static A_STATUS wmi_regDomain_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                       int len);
static A_STATUS wmi_txPwr_reply_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_neighborReport_event_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                             int len);
static A_STATUS wmi_dset_open_req_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
#if CONFIG_HOST_DSET_SUPPORT
static A_STATUS wmi_dset_close_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_dset_data_req_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
#endif /* CONFIG_HOST_DSET_SUPPORT */
static A_STATUS wmi_scanComplete_rx(struct wmi_t *wmip, A_UINT8 *datap,
                                     int len);
static A_STATUS wmi_errorEvent_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_statsEvent_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_rssiThresholdEvent_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_reportErrorEvent_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_roam_tbl_event_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_cac_event_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_road_data_event_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
#if CONFIG_HOST_GPIO_SUPPORT
static A_STATUS wmi_gpio_intr_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_gpio_data_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
static A_STATUS wmi_gpio_ack_rx(struct wmi_t *wmip, A_UINT8 *datap, int len);
#endif /* CONFIG_HOST_GPIO_SUPPORT */

static const A_INT32 wmi_rateTable[] = {
    1000,
    2000,
    5500,
    11000,
    6000,
    9000,
    12000,
    18000,
    24000,
    36000,
    48000,
    54000,
    0};

void *
wmi_init(void *devt)
{
    struct wmi_t *wmip;

    A_UINT8 i;
    wmip = A_MALLOC(sizeof(struct wmi_t));
    if (wmip == NULL) {
        return (NULL);
    }
    A_MEMZERO(wmip, sizeof(*wmip));

    wmip->wmi_devt = devt;
    wlan_node_table_init(wmip, &wmip->wmi_scan_table);
    for (i = UPLINK_TRAFFIC; i < BIDIR_TRAFFIC; i++) {
        wmip->wmi_pstreamCmdInProgress[i][WMM_AC_BE] = FALSE;
        wmip->wmi_pstreamCmdInProgress[i][WMM_AC_BK] = FALSE;
        wmip->wmi_pstreamCmdInProgress[i][WMM_AC_VI] = FALSE;
        wmip->wmi_pstreamCmdInProgress[i][WMM_AC_VO] = FALSE;
    }
    wmip->wmi_cpstreamCmdInProgress = FALSE;
    wmi_qos_state_init(wmip);

    return (wmip);
}

void
wmi_qos_state_init(struct wmi_t *wmip)
{
    A_UINT8 i;

    if (wmip == NULL) {
        return;
    }

    /* Initialize QoS States */
    wmip->wmi_numQoSStream = 0;

    for (i = 0; i < WMI_MAX_NUM_PRI_STREAMS; i++) {
        wmip->wmi_priority[i].inUse = 0;
        wmip->wmi_priority[i].mbox = WMI_BEST_EFFORT_MBOX;
    }

    for (i = 0; i < WMM_NUM_AC; i++) {
        wmip->wmi_trafficClassMap[UPLINK_TRAFFIC][i] = WMI_NOT_MAPPED;
        wmip->wmi_trafficClassMap[DNLINK_TRAFFIC][i] = WMI_NOT_MAPPED;
    }
    wmip->wmi_trafficClassMap[UPLINK_TRAFFIC][WMM_AC_BE] = WMI_BEST_EFFORT_MBOX;
    wmip->wmi_trafficClassMap[DNLINK_TRAFFIC][WMM_AC_BE] = WMI_BEST_EFFORT_MBOX;

    for (i = 0; i < WMI_MBOX_COUNT; i++) {
        wmip->wmi_mboxMap[UPLINK_TRAFFIC][i].trafficClass = WMM_AC_BE;
        wmip->wmi_mboxMap[UPLINK_TRAFFIC][i].priorityNum = WMI_NOT_MAPPED;
        wmip->wmi_mboxMap[DNLINK_TRAFFIC][i].trafficClass = WMM_AC_BE;
        wmip->wmi_mboxMap[DNLINK_TRAFFIC][i].priorityNum = WMI_NOT_MAPPED;
    }

    wmip->wmi_olderPriRxMbox = WMI_HIGH_PRIORITY_MBOX;
    wmip->wmi_newerPriRxMbox = WMI_LOW_PRIORITY_MBOX;
    ar6000_set_numdataendpts(wmip->wmi_devt, 1);
}

void
wmi_shutdown(struct wmi_t *wmip)
{
    if (wmip != NULL) {
        wlan_node_table_cleanup(&wmip->wmi_scan_table);
        A_FREE(wmip);
    }
}

/*
 *  performs DIX to 802.3 encapsulation for transmit packets.
 *  uses passed in buffer.  Returns buffer or NULL if failed.
 *  Assumes the entire DIX header is contigous and that there is
 *  enough room in the buffer for a 802.3 mac header and LLC+SNAP headers.
 */
A_STATUS
wmi_dix_2_dot3(struct wmi_t *wmip, void *osbuf)
{
    A_UINT8          *datap;
    A_UINT16         typeorlen;
    ATH_MAC_HDR      macHdr;
    ATH_LLC_SNAP_HDR *llcHdr;

    AR_DEBUG_ASSERT(osbuf != NULL);

    if (a_netbuf_headroom(osbuf) <
        (sizeof(ATH_LLC_SNAP_HDR) + sizeof(WMI_DATA_HDR)))
    {
        return A_NO_MEMORY;
    }

    datap = a_netbuf_to_data(osbuf);

    typeorlen = *(A_UINT16 *)(datap + ATH_MAC_LEN + ATH_MAC_LEN);

    if (!IS_ETHERTYPE(A_BE2CPU16(typeorlen))) {
        /*
         * packet is already in 802.3 format - return success
         */
        WMI_DEBUG_PRINTF(ATH_LOG_INF,"packet already 802.3\n");
        return (A_OK);
    }

    /*
     * Save mac fields and length to be inserted later
     */
    A_MEMCPY(macHdr.dstMac, datap, ATH_MAC_LEN);
    A_MEMCPY(macHdr.srcMac, datap + ATH_MAC_LEN, ATH_MAC_LEN);
    macHdr.typeOrLen = A_CPU2BE16((A_UINT16)a_netbuf_to_len(osbuf) - sizeof(ATH_MAC_HDR) +
                                  sizeof(ATH_LLC_SNAP_HDR));

    /*
     * Make room for LLC+SNAP headers
     */
    if (a_netbuf_push(osbuf, sizeof(ATH_LLC_SNAP_HDR)) != A_OK) {
        return A_NO_MEMORY;
    }

    datap = a_netbuf_to_data(osbuf);

    A_MEMCPY(datap, &macHdr, sizeof (ATH_MAC_HDR));

    llcHdr = (ATH_LLC_SNAP_HDR *)(datap + sizeof(ATH_MAC_HDR));
    llcHdr->dsap      = 0xAA;
    llcHdr->ssap      = 0xAA;
    llcHdr->cntl      = 0x03;
    llcHdr->orgCode[0] = 0x0;
    llcHdr->orgCode[1] = 0x0;
    llcHdr->orgCode[2] = 0x0;
    llcHdr->etherType = typeorlen;

    return (A_OK);
}

/*
 * Adds a WMI data header
 * Assumes there is enough room in the buffer to add header.
 */
A_STATUS
wmi_data_hdr_add(struct wmi_t *wmip, void *osbuf, A_UINT8 msgType)
{
    WMI_DATA_HDR     *dtHdr;

    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, msgType );
    return (A_OK);
}

A_UINT8 wmi_implicit_create_pstream(struct wmi_t *wmip, void *osbuf, A_UINT8 dir, A_UINT32 ndisUserPriority)
{
    A_UINT8         *datap;
    A_UINT8         trafficClass;
    ATH_LLC_SNAP_HDR *llcHdr;
    A_UINT16        ipType = IP_ETHERTYPE;
    WMI_CREATE_PSTREAM_CMD cmd;

    AR_DEBUG_ASSERT(osbuf != NULL);
    AR_DEBUG_ASSERT(dir == DNLINK_TRAFFIC || dir == UPLINK_TRAFFIC);
    datap = a_netbuf_to_data(osbuf);
    llcHdr = (ATH_LLC_SNAP_HDR *)(datap + sizeof(WMI_DATA_HDR) +
                                  sizeof(ATH_MAC_HDR));

    if (llcHdr->etherType == htons(ipType)) {
        /* Extract the endpoint info from the TOS field in the IP header */
        trafficClass = ar6000_trafficclass(((A_UINT8 *)llcHdr) + sizeof(ATH_LLC_SNAP_HDR),ndisUserPriority);
    } else {
        trafficClass = ar6000_trafficclass(NULL,ndisUserPriority);
    }

    /* Implicitly determine whether a create_pstream_cmd is needed for this trafficClass */
    if (!((trafficClass == WMM_AC_BE) || (wmip->wmi_trafficClassMap[dir][trafficClass] != WMI_NOT_MAPPED))) {
        A_UINT8 reqMbox;
        /*
         * If the data pkt is tagged with a priority that doesn't have a MBOX created,
         * we must first call create_pstream_cmd
         * Originally, assume traffic goes to BE MBox,
         * until the driver receives the reply from the create_pstream cmd
         */
        wmip->wmi_trafficClassMap[dir][trafficClass] = WMI_BEST_EFFORT_MBOX;
        if (dir == DNLINK_TRAFFIC) {
            /* determine which mailbox to use */
            reqMbox = wmip->wmi_olderPriRxMbox;
        } else {
            reqMbox = WMI_BEST_EFFORT_MBOX;
        }

        cmd.trafficClass = trafficClass;
        cmd.rxQueueNum = reqMbox;
        cmd.inactivityInt = WMI_IMPLICIT_PSTREAM_INACTIVITY_INT;

        if (wmi_create_pstream_cmd(wmip, &cmd) != A_OK) {
            wmip->wmi_trafficClassMap[dir][trafficClass] = WMI_NOT_MAPPED;
            trafficClass = WMM_AC_BE;
        }

    }
    return trafficClass;
}

HTC_ENDPOINT_ID
wmi_get_endpoint(struct wmi_t *wmip, A_UINT8 trafficClass)
{
    WMI_DEBUG_PRINTF(ATH_LOG_INF,"1 pkt of traffic class(%d) to mbox(%d)\n",
                      trafficClass, wmip->wmi_trafficClassMap[UPLINK_TRAFFIC][trafficClass]);
    return wmip->wmi_trafficClassMap[UPLINK_TRAFFIC][trafficClass];
}

/*
 *  performs 802.3 to DIX encapsulation for received packets.
 *  Assumes the entire 802.3 header is contigous.
 */
A_STATUS
wmi_dot3_2_dix(struct wmi_t *wmip, void *osbuf)
{
    A_UINT8          *datap;
    ATH_MAC_HDR      macHdr;
    ATH_LLC_SNAP_HDR *llcHdr;

    AR_DEBUG_ASSERT(osbuf != NULL);
    datap = a_netbuf_to_data(osbuf);

    A_MEMCPY(&macHdr, datap, sizeof(ATH_MAC_HDR));
    llcHdr = (ATH_LLC_SNAP_HDR *)(datap + sizeof(ATH_MAC_HDR));
    macHdr.typeOrLen = llcHdr->etherType;

    if (a_netbuf_pull(osbuf, sizeof(ATH_LLC_SNAP_HDR)) != A_OK) {
        return A_NO_MEMORY;
    }

    datap = a_netbuf_to_data(osbuf);

    A_MEMCPY(datap, &macHdr, sizeof (ATH_MAC_HDR));

    return (A_OK);
}

/*
 * Removes a WMI data header
 */
A_STATUS
wmi_data_hdr_remove(struct wmi_t *wmip, void *osbuf)
{
    AR_DEBUG_ASSERT(osbuf != NULL);

    return (a_netbuf_pull(osbuf, sizeof(WMI_DATA_HDR)));
}

void
wmi_iterate_nodes(struct wmi_t *wmip, wlan_node_iter_func *f, void *arg)
{
    wlan_iterate_nodes(&wmip->wmi_scan_table, f, arg);
}

void 
wmi_free_allnodes(struct wmi_t *wmip)
{
	wlan_free_allnodes(&wmip->wmi_scan_table);
}

bss_t *
wmi_find_node(struct wmi_t *wmip, const A_UINT8 *macaddr) 
{
	bss_t *ni=NULL;
	ni=wlan_find_node(&wmip->wmi_scan_table,macaddr);
	return ni;
}

/*
 * WMI Extended Event received from Target.
 */
A_STATUS
wmi_control_rx_xtnd(struct wmi_t *wmip, void *osbuf)
{
    WMIX_CMD_HDR *cmd;
    A_UINT16 id;
    A_UINT8 *datap;
    A_UINT32 len;
    A_STATUS status = A_OK;

    if (a_netbuf_to_len(osbuf) < sizeof(WMIX_CMD_HDR)) {
        WMI_DEBUG_PRINTF(ATH_LOG_ERR, "wmi extended event rx: bad packet\n");
        wmip->wmi_stats.cmd_len_err++;
        return A_ERROR;
    }

    cmd = (WMIX_CMD_HDR *)a_netbuf_to_data(osbuf);
    id = cmd->commandId;

    if (a_netbuf_pull(osbuf, sizeof(WMIX_CMD_HDR)) != A_OK) {
        WMI_DEBUG_PRINTF(ATH_LOG_ERR, "wmi extended event rx: bad packet\n");
        wmip->wmi_stats.cmd_len_err++;
        return A_ERROR;
    }

    datap = a_netbuf_to_data(osbuf);
    len = a_netbuf_to_len(osbuf);

    switch (id) {
    case (WMIX_DSETOPENREQ_EVENTID):
        status = wmi_dset_open_req_rx(wmip, datap, len);
        break;
#if CONFIG_HOST_DSET_SUPPORT
    case (WMIX_DSETCLOSE_EVENTID):
        status = wmi_dset_close_rx(wmip, datap, len);
        break;
    case (WMIX_DSETDATAREQ_EVENTID):
        status = wmi_dset_data_req_rx(wmip, datap, len);
        break;
#endif /* CONFIG_HOST_DSET_SUPPORT */
#if CONFIG_HOST_GPIO_SUPPORT
    case (WMIX_GPIO_INTR_EVENTID):
        wmi_gpio_intr_rx(wmip, datap, len);
        break;
    case (WMIX_GPIO_DATA_EVENTID):

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费视频一区| 日本系列欧美系列| 亚洲gay无套男同| 国产传媒欧美日韩成人| 欧美视频三区在线播放| 精品久久五月天| 亚洲专区一二三| 成人白浆超碰人人人人| 日韩一区二区三区视频| 亚洲靠逼com| 国产精品系列在线播放| 欧美一区二区三区视频免费播放| 中文字幕亚洲电影| 国产·精品毛片| 欧美一区二区三区四区视频| 一区二区三区中文字幕电影 | 久久久久久一级片| 亚洲成av人综合在线观看| 91视频免费播放| 一级精品视频在线观看宜春院| 久久国产精品99久久久久久老狼| 欧美老肥妇做.爰bbww视频| 中文字幕制服丝袜一区二区三区| 国产99久久久国产精品潘金 | 免费久久精品视频| 欧美性色黄大片手机版| 亚洲免费看黄网站| 97se狠狠狠综合亚洲狠狠| 中国av一区二区三区| 国产成人自拍高清视频在线免费播放| 在线综合视频播放| 日韩国产欧美在线观看| 欧美老年两性高潮| 美女久久久精品| 日韩视频在线你懂得| 日韩在线一区二区| 日韩欧美一卡二卡| 韩国毛片一区二区三区| 久久久青草青青国产亚洲免观| 久草这里只有精品视频| 欧美成人女星排行榜| 国产精一区二区三区| 精品sm捆绑视频| 国产精一品亚洲二区在线视频| 久久色中文字幕| 福利视频网站一区二区三区| 国产欧美一区二区在线| 国产69精品久久99不卡| 亚洲色图色小说| 欧美午夜精品久久久久久孕妇| 亚洲第一福利一区| 欧美成人一区二区三区片免费 | 亚洲国产成人在线| 99视频超级精品| 亚洲国产精品天堂| 日韩一区二区视频| 成人午夜精品一区二区三区| 一区二区三区中文字幕电影| 欧美一区二区三区四区久久| 国产成人丝袜美腿| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩成人在线| 精品亚洲porn| 亚洲免费成人av| 在线综合视频播放| av在线不卡网| 喷白浆一区二区| 国产精品私人影院| 欧美日韩精品免费| 国产精品12区| 亚洲成人777| 日本一区二区三区四区在线视频| 欧美三级午夜理伦三级中视频| 美腿丝袜在线亚洲一区| 一区二区三区中文在线| 欧美大白屁股肥臀xxxxxx| 99久久99久久久精品齐齐| 日韩不卡一区二区三区| 国产精品伦一区| 91精品欧美久久久久久动漫| zzijzzij亚洲日本少妇熟睡| 天堂va蜜桃一区二区三区漫画版 | 国产成人av一区二区| 亚洲成人黄色小说| 亚洲国产成人一区二区三区| 91精品国产综合久久婷婷香蕉| 白白色亚洲国产精品| 99久久er热在这里只有精品15| 污片在线观看一区二区| 亚洲欧美日韩久久| 国产喂奶挤奶一区二区三区| 欧美老肥妇做.爰bbww| 99久久国产综合精品麻豆| 国产成人鲁色资源国产91色综| 一二三区精品视频| 国产精品福利电影一区二区三区四区| 欧美成va人片在线观看| 欧美日韩精品高清| 91成人免费网站| 91浏览器在线视频| 成人av动漫在线| 国产精品影视网| 激情综合网激情| 久久国产视频网| 日韩国产精品久久| 日本视频在线一区| 日韩成人伦理电影在线观看| 亚洲风情在线资源站| 一区二区久久久| 亚洲丝袜另类动漫二区| 国产精品传媒视频| 中日韩免费视频中文字幕| 国产人久久人人人人爽| 欧美国产综合一区二区| 久久综合av免费| 国产日韩综合av| 亚洲国产精品国自产拍av| 国产欧美日韩视频一区二区| 亚洲精品一区二区精华| 国产亚洲成年网址在线观看| 国产亚洲综合在线| 国产精品沙发午睡系列990531| 欧美国产精品中文字幕| 亚洲女爱视频在线| 亚洲最色的网站| 性做久久久久久久免费看| 麻豆成人免费电影| 国产一区二区三区四| 国产成人无遮挡在线视频| 92国产精品观看| 在线观看91视频| 欧美日韩久久不卡| 日韩免费电影一区| 亚洲国产精华液网站w| 一区二区在线观看免费视频播放| 亚洲激情综合网| 日本美女一区二区三区| 极品尤物av久久免费看| 国产成人免费9x9x人网站视频| 99久久精品一区| 欧美日韩国产精品成人| 精品盗摄一区二区三区| 欧美高清在线精品一区| 夜夜精品视频一区二区| 免费成人av在线| 福利电影一区二区| 欧美午夜精品久久久| 精品成人一区二区三区| 亚洲欧美怡红院| 日韩—二三区免费观看av| 国产99精品国产| 欧美一三区三区四区免费在线看| xfplay精品久久| 一区二区三区中文字幕精品精品| 精品系列免费在线观看| 94-欧美-setu| 欧美xxxxxxxxx| 一区二区三区在线观看视频| 精品一二线国产| 在线看一区二区| 亚洲精品在线免费观看视频| 亚洲自拍偷拍网站| 国产mv日韩mv欧美| 欧美日韩成人一区二区| 亚洲色图第一区| 极品少妇一区二区三区精品视频| 欧美综合色免费| 国产欧美日韩精品一区| 日本欧美加勒比视频| 色欧美片视频在线观看| 久久久久88色偷偷免费| 午夜欧美大尺度福利影院在线看| 成人中文字幕在线| www久久精品| 丝袜诱惑制服诱惑色一区在线观看| 成人av资源网站| 中文字幕二三区不卡| 久久精品久久99精品久久| 在线观看日韩高清av| 国产精品狼人久久影院观看方式| 国产制服丝袜一区| 日韩免费看的电影| 午夜一区二区三区视频| 91免费国产在线观看| 国产精品拍天天在线| 国产一区二区三区蝌蚪| 日韩欧美一二区| 蜜桃一区二区三区在线| 欧美巨大另类极品videosbest| 亚洲裸体在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产精品国产自产拍高清av| 久久国产婷婷国产香蕉| 欧美videofree性高清杂交| 亚洲18色成人| 欧美日本视频在线| 婷婷开心激情综合| 91精品国产欧美日韩| 麻豆精品一区二区三区| 日韩欧美电影在线|