⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmi.c

📁 Linux下SDIO设备的驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    wmi_qos_state_init(wmip);    return status;}A_STATUSwmi_startscan_cmd(struct wmi_t *wmip, WMI_SCAN_TYPE scanType){    void *osbuf;    WMI_START_SCAN_CMD *sc;    if ((scanType != WMI_LONG_SCAN) && (scanType != WMI_SHORT_SCAN)) {        return A_EINVAL;    }    osbuf = a_netbuf_alloc(sizeof(*sc));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*sc));    sc = (WMI_START_SCAN_CMD *)(a_netbuf_to_data(osbuf));    sc->scanType = scanType;    return (wmi_cmd_send(wmip, osbuf, WMI_START_SCAN_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_scanparams_cmd(struct wmi_t *wmip, A_UINT16 fg_start_sec,                   A_UINT16 fg_end_sec, A_UINT16 bg_sec,                   A_UINT16 act_chdw_msec, A_UINT16 pas_chdw_msec,                   A_UINT8 shScanRatio){    void *osbuf;    WMI_SCAN_PARAMS_CMD *sc;    osbuf = a_netbuf_alloc(sizeof(*sc));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*sc));    sc = (WMI_SCAN_PARAMS_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(sc, sizeof(*sc));    sc->fg_start_period  = fg_start_sec;    sc->fg_end_period    = fg_end_sec;    sc->bg_period        = bg_sec;    sc->act_chdwell_time = act_chdw_msec;    sc->pas_chdwell_time = pas_chdw_msec;    sc->shortScanRatio   = shScanRatio;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_SCAN_PARAMS_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_bssfilter_cmd(struct wmi_t *wmip, A_UINT8 filter){    void *osbuf;    WMI_BSS_FILTER_CMD *cmd;    if (filter >= LAST_BSS_FILTER) {        return A_EINVAL;    }    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_BSS_FILTER_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->bssFilter = filter;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_BSS_FILTER_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_probedSsid_cmd(struct wmi_t *wmip, A_UINT8 index, A_UINT8 flag,                   A_UINT8 ssidLength, A_UCHAR *ssid){    void *osbuf;    WMI_PROBED_SSID_CMD *cmd;    if (index > MAX_PROBED_SSID_INDEX) {        return A_EINVAL;    }    if (ssidLength > sizeof(cmd->ssid)) {        return A_EINVAL;    }    if ((flag & (DISABLE_SSID_FLAG | ANY_SSID_FLAG)) && (ssidLength > 0)) {        return A_EINVAL;    }    if ((flag & SPECIFIC_SSID_FLAG) && !ssidLength) {        return A_EINVAL;    }    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_PROBED_SSID_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->entryIndex = index;    cmd->flag       = flag;    cmd->ssidLength = ssidLength;    A_MEMCPY(cmd->ssid, ssid, ssidLength);    return (wmi_cmd_send(wmip, osbuf, WMI_SET_PROBED_SSID_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_listeninterval_cmd(struct wmi_t *wmip, A_UINT16 listenInterval, A_UINT16 listenBeacons){    void *osbuf;    WMI_LISTEN_INT_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_LISTEN_INT_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->listenInterval = listenInterval;    cmd->numBeacons = listenBeacons;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_LISTEN_INT_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_bmisstime_cmd(struct wmi_t *wmip, A_UINT16 bmissTime, A_UINT16 bmissBeacons){    void *osbuf;    WMI_BMISS_TIME_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_BMISS_TIME_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->bmissTime = bmissTime;    cmd->numBeacons =  bmissBeacons;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_BMISS_TIME_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_associnfo_cmd(struct wmi_t *wmip, A_UINT8 ieType,                     A_UINT8 ieLen, A_UINT8 *ieInfo){    void *osbuf;    WMI_SET_ASSOC_INFO_CMD *cmd;    A_UINT16 cmdLen;    cmdLen = sizeof(*cmd) + ieLen - 1;    osbuf = a_netbuf_alloc(cmdLen);    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, cmdLen);    cmd = (WMI_SET_ASSOC_INFO_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, cmdLen);    cmd->ieType = ieType;    cmd->bufferSize = ieLen;    A_MEMCPY(cmd->assocInfo, ieInfo, ieLen);    return (wmi_cmd_send(wmip, osbuf, WMI_SET_ASSOC_INFO_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_powermode_cmd(struct wmi_t *wmip, A_UINT8 powerMode){    void *osbuf;    WMI_POWER_MODE_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_POWER_MODE_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->powerMode = powerMode;    wmip->wmi_powerMode = powerMode;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_POWER_MODE_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_ibsspmcaps_cmd(struct wmi_t *wmip, A_UINT8 pmEnable, A_UINT8 ttl,                   A_UINT16 atim_windows, A_UINT16 timeout_value){    void *osbuf;    WMI_IBSS_PM_CAPS_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_IBSS_PM_CAPS_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->power_saving = pmEnable;    cmd->ttl = ttl;    cmd->atim_windows = atim_windows;    cmd->timeout_value = timeout_value;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_IBSS_PM_CAPS_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_pmparams_cmd(struct wmi_t *wmip, A_UINT16 idlePeriod,                 A_UINT16 psPollNum, A_UINT16 dtimPolicy){    void *osbuf;    WMI_POWER_PARAMS_CMD *pm;    osbuf = a_netbuf_alloc(sizeof(*pm));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*pm));    pm = (WMI_POWER_PARAMS_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(pm, sizeof(*pm));    pm->idle_period   = idlePeriod;    pm->pspoll_number = psPollNum;    pm->dtim_policy   = dtimPolicy;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_POWER_PARAMS_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_disctimeout_cmd(struct wmi_t *wmip, A_UINT8 timeout){    void *osbuf;    WMI_DISC_TIMEOUT_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_DISC_TIMEOUT_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->disconnectTimeout = timeout;    return (wmi_cmd_send(wmip, osbuf, WMI_SET_DISC_TIMEOUT_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_addKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex, CRYPTO_TYPE keyType,               A_UINT8 keyUsage, A_UINT8 keyLength, A_UINT8 *keyRSC,               A_UINT8 *keyMaterial, WMI_SYNC_FLAG sync_flag){    void *osbuf;    WMI_ADD_CIPHER_KEY_CMD *cmd;    if ((keyIndex > WMI_MAX_KEY_INDEX) || (keyLength > WMI_MAX_KEY_LEN) ||        (keyMaterial == NULL))    {        return A_EINVAL;    }    if ((WEP_CRYPT != keyType) && (NULL == keyRSC)) {        return A_EINVAL;    }    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_ADD_CIPHER_KEY_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->keyIndex = keyIndex;    cmd->keyType  = keyType;    cmd->keyUsage = keyUsage;    cmd->keyLength = keyLength;    A_MEMCPY(cmd->key, keyMaterial, keyLength);    if (NULL != keyRSC) {        A_MEMCPY(cmd->keyRSC, keyRSC, sizeof(cmd->keyRSC));    }    return (wmi_cmd_send(wmip, osbuf, WMI_ADD_CIPHER_KEY_CMDID, sync_flag));}A_STATUSwmi_add_krk_cmd(struct wmi_t *wmip, A_UINT8 *krk){    void *osbuf;    WMI_ADD_KRK_CMD *cmd;    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_ADD_KRK_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    A_MEMCPY(cmd->krk, krk, WMI_KRK_LEN);    return (wmi_cmd_send(wmip, osbuf, WMI_ADD_KRK_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_delete_krk_cmd(struct wmi_t *wmip){    void *osbuf;    osbuf = a_netbuf_alloc(0);    if (osbuf == NULL) {        return A_NO_MEMORY;    }    return (wmi_cmd_send(wmip, osbuf, WMI_DELETE_KRK_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_deleteKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex){    void *osbuf;    WMI_DELETE_CIPHER_KEY_CMD *cmd;    if (keyIndex > WMI_MAX_KEY_INDEX) {        return A_EINVAL;    }    osbuf = a_netbuf_alloc(sizeof(*cmd));    if (osbuf == NULL) {        return A_NO_MEMORY;    }    a_netbuf_put(osbuf, sizeof(*cmd));    cmd = (WMI_DELETE_CIPHER_KEY_CMD *)(a_netbuf_to_data(osbuf));    A_MEMZERO(cmd, sizeof(*cmd));    cmd->keyIndex = keyIndex;    return (wmi_cmd_send(wmip, osbuf, WMI_DELETE_CIPHER_KEY_CMDID,                         NO_SYNC_WMIFLAG));}A_STATUSwmi_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_STATUSwmi_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_STATUSwmi_dataSync_send(struct wmi_t *wmip, void *osbuf, int endPoint){    WMI_DATA_HDR     *dtHdr;    A_ASSERT(endPoint != WMI_CONTROL_MBOX);    A_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);    dtHdr->info =      (SYNC_MSGTYPE & WMI_DATA_HDR_MSG_TYPE_MASK) << WMI_DATA_HDR_MSG_TYPE_SHIFT;    WMI_DEBUG_PRINTF("wmi sync pkt sent on mbox %d\n", endPoint);    return (ar6000_control_tx(wmip->wmi_devt, osbuf, endPoint));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -