这篇教程C++ DBG_871X函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DBG_871X函数的典型用法代码示例。如果您正苦于以下问题:C++ DBG_871X函数的具体用法?C++ DBG_871X怎么用?C++ DBG_871X使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DBG_871X函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: _rtw_mutex_initstatic struct dvobj_priv *gspi_dvobj_init(struct spi_device *spi){ int status = _FAIL; struct dvobj_priv *dvobj = NULL; PGSPI_DATA pgspi;_func_enter_; dvobj = (struct dvobj_priv*)rtw_zmalloc(sizeof(*dvobj)); if (NULL == dvobj) { goto exit; } _rtw_mutex_init(&dvobj->hw_init_mutex); _rtw_mutex_init(&dvobj->h2c_fwcmd_mutex); _rtw_mutex_init(&dvobj->setch_mutex); _rtw_mutex_init(&dvobj->setbw_mutex); //spi init /* This is the only SPI value that we need to set here, the rest * comes from the board-peripherals file */ spi->bits_per_word = 32; spi->max_speed_hz = 48 * 1000 * 1000; //here mode 0 and 3 all ok, //3 can run under 48M clock when SPI_CTL4 bit14 IS_FST set to 1 //0 can run under 24M clock, but can run under 48M when SPI_CTL4 bit14 IS_FST set to 1 and Ctl0_reg[1:0] set to 3. spi->mode = SPI_MODE_3; spi_setup(spi);#if 1 //DBG_8192C("set spi ==========================%d /n", spi_setup(spi)); DBG_871X("%s, mode = %d /n", __func__, spi->mode); DBG_871X("%s, bit_per_word = %d /n", __func__, spi->bits_per_word); DBG_871X("%s, speed = %d /n", __func__, spi->max_speed_hz); DBG_871X("%s, chip_select = %d /n", __func__, spi->chip_select); DBG_871X("%s, controller_data = %d /n", __func__, *(int *)spi->controller_data); DBG_871X("%s, irq= %d /n", __func__, oob_irq);#endif spi_set_drvdata(spi, dvobj); pgspi = &dvobj->intf_data; pgspi->func = spi; if (gspi_init(dvobj) != _SUCCESS) { DBG_871X("%s: initialize GSPI Failed!/n", __FUNCTION__); goto free_dvobj; } status = _SUCCESS;free_dvobj: if (status != _SUCCESS && dvobj) { spi_set_drvdata(spi, NULL); _rtw_mutex_free(&dvobj->hw_init_mutex); _rtw_mutex_free(&dvobj->h2c_fwcmd_mutex); _rtw_mutex_free(&dvobj->setch_mutex); _rtw_mutex_free(&dvobj->setbw_mutex); rtw_mfree((u8*)dvobj, sizeof(*dvobj)); dvobj = NULL; }exit:_func_exit_; return dvobj;}
开发者ID:DanDanBu,项目名称:uclinux,代码行数:67,
示例2: rtw_ps_processorvoid rtw_ps_processor(_adapter*padapter){#ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &( padapter->wdinfo );#endif //CONFIG_P2P struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);#ifdef SUPPORT_HW_RFOFF_DETECTED rt_rf_power_state rfpwrstate;#endif //SUPPORT_HW_RFOFF_DETECTED pwrpriv->ps_processing = _TRUE;#ifdef SUPPORT_HW_RFOFF_DETECTED if(pwrpriv->bips_processing == _TRUE) goto exit; //DBG_871X("==> fw report state(0x%x)/n",rtw_read8(padapter,0x1ca)); if(padapter->pwrctrlpriv.bHWPwrPindetect) { #ifdef CONFIG_AUTOSUSPEND if(padapter->registrypriv.usbss_enable) { if(pwrpriv->rf_pwrstate == rf_on) { if(padapter->net_closed == _TRUE) pwrpriv->ps_flag = _TRUE; rfpwrstate = RfOnOffDetect(padapter); DBG_871X("@@@@- #1 %s==> rfstate:%s /n",__FUNCTION__,(rfpwrstate==rf_on)?"rf_on":"rf_off"); if(rfpwrstate!= pwrpriv->rf_pwrstate) { if(rfpwrstate == rf_off) { pwrpriv->change_rfpwrstate = rf_off; pwrpriv->bkeepfwalive = _TRUE; pwrpriv->brfoffbyhw = _TRUE; autosuspend_enter(padapter); } } } } else #endif //CONFIG_AUTOSUSPEND { rfpwrstate = RfOnOffDetect(padapter); DBG_871X("@@@@- #2 %s==> rfstate:%s /n",__FUNCTION__,(rfpwrstate==rf_on)?"rf_on":"rf_off"); if(rfpwrstate!= pwrpriv->rf_pwrstate) { if(rfpwrstate == rf_off) { pwrpriv->change_rfpwrstate = rf_off; pwrpriv->brfoffbyhw = _TRUE; padapter->bCardDisableWOHSM = _TRUE; rtw_hw_suspend(padapter ); } else { pwrpriv->change_rfpwrstate = rf_on; rtw_hw_resume(padapter ); } DBG_871X("current rf_pwrstate(%s)/n",(pwrpriv->rf_pwrstate == rf_off)?"rf_off":"rf_on"); } } pwrpriv->pwr_state_check_cnts ++; }#endif //SUPPORT_HW_RFOFF_DETECTED if (pwrpriv->ips_mode_req == IPS_NONE #ifdef CONFIG_CONCURRENT_MODE || padapter->pbuddy_adapter->pwrctrlpriv.ips_mode_req == IPS_NONE #endif ) goto exit; if (rtw_pwr_unassociated_idle(padapter) == _FALSE) goto exit; if((pwrpriv->rf_pwrstate == rf_on) && ((pwrpriv->pwr_state_check_cnts%4)==0)) { DBG_871X("==>%s .fw_state(%x)/n",__FUNCTION__,get_fwstate(pmlmepriv)); pwrpriv->change_rfpwrstate = rf_off; #ifdef CONFIG_AUTOSUSPEND if(padapter->registrypriv.usbss_enable) { if(pwrpriv->bHWPwrPindetect) pwrpriv->bkeepfwalive = _TRUE; if(padapter->net_closed == _TRUE) pwrpriv->ps_flag = _TRUE; padapter->bCardDisableWOHSM = _TRUE; autosuspend_enter(padapter); } else if(pwrpriv->bHWPwrPindetect) {//.........这里部分代码省略.........
开发者ID:lwfinger,项目名称:rtl8192cu,代码行数:101,
示例3: rtw_xmit_entryint rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev){ _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); struct xmit_priv *pxmitpriv = &padapter->xmitpriv;#ifdef CONFIG_TX_MCAST2UNI struct mlme_priv *pmlmepriv = &padapter->mlmepriv; extern int rtw_mc2u_disable;#endif // CONFIG_TX_MCAST2UNI s32 res = 0;#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) u16 queue;#endif_func_enter_; RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("+xmit_enry/n")); if (rtw_if_up(padapter) == _FALSE) { RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("rtw_xmit_entry: rtw_if_up fail/n")); #ifdef DBG_TX_DROP_FRAME DBG_871X("DBG_TX_DROP_FRAME %s if_up fail/n", __FUNCTION__); #endif goto drop_packet; }#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) queue = skb_get_queue_mapping(pkt); /* No free space for Tx, tx_worker is too slow */ if (pxmitpriv->hwxmits[queue].accnt > NR_XMITFRAME/2) { //DBG_871X("%s(): stop netif_subqueue[%d]/n", __FUNCTION__, queue); netif_stop_subqueue(padapter->pnetdev, queue); return NETDEV_TX_BUSY; }#endif#ifdef CONFIG_TX_MCAST2UNI if ( !rtw_mc2u_disable && check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE && ( IP_MCAST_MAC(pkt->data) || ICMPV6_MCAST_MAC(pkt->data) ) ) { if ( pxmitpriv->free_xmitframe_cnt > (NR_XMITFRAME/4) ) { res = rtw_mlcst2unicst(padapter, pkt); if (res == _TRUE) { goto exit; } } else { //DBG_871X("Stop M2U(%d, %d)! ", pxmitpriv->free_xmitframe_cnt, pxmitpriv->free_xmitbuf_cnt); //DBG_871X("!m2u ); } } #endif // CONFIG_TX_MCAST2UNI res = rtw_xmit(padapter, &pkt); if (res < 0) { #ifdef DBG_TX_DROP_FRAME DBG_871X("DBG_TX_DROP_FRAME %s rtw_xmit fail/n", __FUNCTION__); #endif goto drop_packet; } pxmitpriv->tx_pkts++; RT_TRACE(_module_xmit_osdep_c_, _drv_info_, ("rtw_xmit_entry: tx_pkts=%d/n", (u32)pxmitpriv->tx_pkts)); goto exit;drop_packet: pxmitpriv->tx_drop++; dev_kfree_skb_any(pkt); RT_TRACE(_module_xmit_osdep_c_, _drv_notice_, ("rtw_xmit_entry: drop, tx_drop=%d/n", (u32)pxmitpriv->tx_drop));exit:_func_exit_; return 0;}
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:77,
示例4: rtw_init_drv_swu8 rtw_init_drv_sw(_adapter *padapter){ u8 ret8=_SUCCESS;_func_enter_; RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_init_drv_sw/n")); if ((rtw_init_cmd_priv(&padapter->cmdpriv)) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("/n Can't init cmd_priv/n")); ret8=_FAIL; goto exit; } padapter->cmdpriv.padapter=padapter; if ((rtw_init_evt_priv(&padapter->evtpriv)) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("/n Can't init evt_priv/n")); ret8=_FAIL; goto exit; } if (rtw_init_mlme_priv(padapter) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("/n Can't init mlme_priv/n")); ret8=_FAIL; goto exit; } if(init_mlme_ext_priv(padapter) == _FAIL) { RT_TRACE(_module_os_intfs_c_,_drv_err_,("/n Can't init mlme_ext_priv/n")); ret8=_FAIL; goto exit; } if(_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) { DBG_871X("Can't _rtw_init_xmit_priv/n"); ret8=_FAIL; goto exit; } if(_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) { DBG_871X("Can't _rtw_init_recv_priv/n"); ret8=_FAIL; goto exit; } // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). //_rtw_memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); //_init_timer(&(padapter->securitypriv.tkip_timer), padapter->pnetdev, rtw_use_tkipkey_handler, padapter); if(_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) { DBG_871X("Can't _rtw_init_sta_priv/n"); ret8=_FAIL; goto exit; } padapter->stapriv.padapter = padapter; rtw_init_bcmc_stainfo(padapter); rtw_init_pwrctrl_priv(padapter); //_rtw_memset((u8 *)&padapter->qospriv, 0, sizeof (struct qos_priv));//move to mlme_priv #ifdef CONFIG_MP_INCLUDED if (init_mp_priv(padapter) == _FAIL) { ERR_8192C("%s: initialize MP private data Fail!/n", __func__); }#endif ret8 = rtw_init_default_value(padapter); rtw_dm_init(padapter); rtw_sw_led_init(padapter);#ifdef DBG_CONFIG_ERROR_DETECT rtw_sreset_init(padapter);#endif#ifdef CONFIG_BR_EXT _rtw_spinlock_init(&padapter->br_ext_lock);#endif // CONFIG_BR_EXTexit: RT_TRACE(_module_os_intfs_c_,_drv_info_,("-rtw_init_drv_sw/n")); _func_exit_; //.........这里部分代码省略.........
开发者ID:hillbeast,项目名称:android_kernel_ainol_novo8,代码行数:101,
示例5: rtw_set_rpwm/* * * Parameters * padapter * pslv power state level, only could be PS_STATE_S0 ~ PS_STATE_S4 * */void rtw_set_rpwm(PADAPTER padapter, u8 pslv){ u8 rpwm; struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;_func_enter_; pslv = PS_STATE(pslv); if (_TRUE == pwrpriv->btcoex_rfon) { if (pslv < PS_STATE_S4) pslv = PS_STATE_S3; }#ifdef CONFIG_LPS_RPWM_TIMER if (pwrpriv->brpwmtimeout == _TRUE) { DBG_871X("%s: RPWM timeout, force to set RPWM(0x%02X) again!/n", __FUNCTION__, pslv); } else#endif // CONFIG_LPS_RPWM_TIMER { if ( (pwrpriv->rpwm == pslv)#ifdef CONFIG_LPS_LCLK#ifndef CONFIG_RTL8723A || ((pwrpriv->rpwm >= PS_STATE_S2)&&(pslv >= PS_STATE_S2))#endif#endif ) { RT_TRACE(_module_rtl871x_pwrctrl_c_,_drv_err_, ("%s: Already set rpwm[0x%02X], new=0x%02X!/n", __FUNCTION__, pwrpriv->rpwm, pslv)); return; } } if ((padapter->bSurpriseRemoved == _TRUE) || (padapter->hw_init_completed == _FALSE)) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, ("%s: SurpriseRemoved(%d) hw_init_completed(%d)/n", __FUNCTION__, padapter->bSurpriseRemoved, padapter->hw_init_completed)); pwrpriv->cpwm = PS_STATE_S4; return; } if (padapter->bDriverStopped == _TRUE) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, ("%s: change power state(0x%02X) when DriverStopped/n", __FUNCTION__, pslv)); if (pslv < PS_STATE_S2) { RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, ("%s: Reject to enter PS_STATE(0x%02X) lower than S2 when DriverStopped!!/n", __FUNCTION__, pslv)); return; } } rpwm = pslv | pwrpriv->tog;#ifdef CONFIG_LPS_LCLK // only when from PS_STATE S0/S1 to S2 and higher needs ACK if ((pwrpriv->cpwm < PS_STATE_S2) && (pslv >= PS_STATE_S2)) rpwm |= PS_ACK;#endif RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, ("rtw_set_rpwm: rpwm=0x%02x cpwm=0x%02x/n", rpwm, pwrpriv->cpwm)); pwrpriv->rpwm = pslv;#ifdef CONFIG_LPS_RPWM_TIMER if (rpwm & PS_ACK) _set_timer(&pwrpriv->pwr_rpwm_timer, LPS_RPWM_WAIT_MS);#endif // CONFIG_LPS_RPWM_TIMER rtw_hal_set_hwreg(padapter, HW_VAR_SET_RPWM, (u8 *)(&rpwm)); pwrpriv->tog += 0x80;#ifdef CONFIG_LPS_LCLK // No LPS 32K, No Ack if (!(rpwm & PS_ACK))#endif { pwrpriv->cpwm = pslv; }_func_exit_;}
开发者ID:GREYFOXRGR,项目名称:kernel,代码行数:98,
示例6: _enter_critical_bh//struct sta_info *rtw_alloc_stainfo(_queue *pfree_sta_queue, unsigned char *hwaddr)struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) { _irqL irqL, irqL2; uint tmp_aid; s32 index; _list *phash_list; struct sta_info *psta; _queue *pfree_sta_queue; struct recv_reorder_ctrl *preorder_ctrl; int i = 0; u16 wRxSeqInitialValue = 0xffff; _func_enter_; pfree_sta_queue = &pstapriv->free_sta_queue; //_enter_critical_bh(&(pfree_sta_queue->lock), &irqL); _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); if (_rtw_queue_empty(pfree_sta_queue) == _TRUE) { //_exit_critical_bh(&(pfree_sta_queue->lock), &irqL); _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); psta = NULL; } else { psta = LIST_CONTAINOR(get_next(&pfree_sta_queue->queue), struct sta_info, list); rtw_list_delete(&(psta->list)); //_exit_critical_bh(&(pfree_sta_queue->lock), &irqL); tmp_aid = psta->aid; _rtw_init_stainfo(psta); psta->padapter = pstapriv->padapter; memcpy(psta->hwaddr, hwaddr, ETH_ALEN); index = wifi_mac_hash(hwaddr); RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_info_,("rtw_alloc_stainfo: index = %x", index)); if(index >= NUM_STA){ RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_err_,("ERROR=> rtw_alloc_stainfo: index >= NUM_STA")); psta= NULL; goto exit; } phash_list = &(pstapriv->sta_hash[index]); //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); rtw_list_insert_tail(&psta->hash_list, phash_list); pstapriv->asoc_sta_count ++ ; //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2);// Commented by Albert 2009/08/13// For the SMC router, the sequence number of first packet of WPS handshake will be 0.// In this case, this packet will be dropped by recv_decache function if we use the 0x00 as the default value for tid_rxseq variable.// So, we initialize the tid_rxseq variable as the 0xffff. for( i = 0; i < 16; i++ ) { memcpy( &psta->sta_recvpriv.rxcache.tid_rxseq[ i ], &wRxSeqInitialValue, 2 ); } RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_info_,("alloc number_%d stainfo with hwaddr = %x %x %x %x %x %x /n", pstapriv->asoc_sta_count , hwaddr[0], hwaddr[1], hwaddr[2],hwaddr[3],hwaddr[4],hwaddr[5])); init_addba_retry_timer(pstapriv->padapter, psta);#ifdef CONFIG_TDLS rtw_init_tdls_timer(pstapriv->padapter, psta);#endif //CONFIG_TDLS //for A-MPDU Rx reordering buffer control for(i=0; i < 16 ; i++) { preorder_ctrl = &psta->recvreorder_ctrl[i]; preorder_ctrl->padapter = pstapriv->padapter; preorder_ctrl->enable = _FALSE; preorder_ctrl->indicate_seq = 0xffff; #ifdef DBG_RX_SEQ DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d/n", __FUNCTION__, __LINE__, preorder_ctrl->indicate_seq); #endif preorder_ctrl->wend_b= 0xffff; //preorder_ctrl->wsize_b = (NR_RECVBUFF-2); preorder_ctrl->wsize_b = 64;//64; _rtw_init_queue(&preorder_ctrl->pending_recvframe_queue); rtw_init_recv_timer(preorder_ctrl);//.........这里部分代码省略.........
开发者ID:saiarcot895,项目名称:rtl8811AU_rtl8821A-linux,代码行数:101,
示例7: rtl8723_dequeue_writeport//.........这里部分代码省略......... PageIdx = MID_QUEUE_IDX; break; case WLAN_TX_LOQ_DEVICE_ID: PageIdx = LOW_QUEUE_IDX; break; } // check if hardware tx fifo page is enough n = 0;// _enter_critical_bh(&phal->SdioTxFIFOFreePageLock, &irql); do { if (requiredPage <= freePage[PageIdx]) { freePage[PageIdx] -= requiredPage; break; } // The number of page which public page included is available. if ((freePage[PageIdx] + freePage[PUBLIC_QUEUE_IDX]) > (requiredPage + 1)) { u8 requiredPublicPage; requiredPublicPage = requiredPage - freePage[PageIdx]; freePage[PageIdx] = 0; freePage[PUBLIC_QUEUE_IDX] -= requiredPublicPage; break; }// _exit_critical_bh(&phal->SdioTxFIFOFreePageLock, &irql); ret = (padapter->bDriverStopped == _TRUE) || (padapter->bSurpriseRemoved == _TRUE)#ifdef CONFIG_CONCURRENT_MODE ||((padapter->pbuddy_adapter) && ((padapter->pbuddy_adapter->bSurpriseRemoved) ||(padapter->pbuddy_adapter->bDriverStopped)))#endif ; if (ret) { RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("%s: bSurpriseRemoved(update TX FIFO page)/n", __func__)); goto free_xmitbuf; } n++; //if ((n & 0x3FF) == 0) if ((n % 100) == 0) { if (n >= 5000) { u8 reg_value_1 = 0; u8 reg_value_2 = 0; u8 reg_value_3 = 0; DBG_8192C(KERN_NOTICE "%s: FIFO starvation!(%d) len=%d agg=%d page=(R)%d(A)%d/n", __func__, n, pxmitbuf->len, pxmitbuf->agg_num, pxmitbuf->pg_num, freePage[PageIdx] + freePage[PUBLIC_QUEUE_IDX]); //try to recover the transmission reg_value_1 = rtw_read8(padapter, REG_SYS_FUNC_EN); reg_value_2 = rtw_read8(padapter, REG_CR); reg_value_3 = rtw_read8(padapter, REG_TXPAUSE); DBG_871X("Before recovery: REG_SYS_FUNC_EN = 0x%X, REG_CR = 0x%X, REG_TXPAUSE = 0x%X/n", reg_value_1, reg_value_2, reg_value_3); rtw_write8(padapter, REG_SYS_FUNC_EN, reg_value_1 | 0x01); rtw_write8(padapter, REG_CR, reg_value_2 | 0xC0); rtw_write8(padapter, REG_TXPAUSE, 0); DBG_871X("After recovery: REG_SYS_FUNC_EN = 0x%X, REG_CR = 0x%X, REG_TXPAUSE = 0x%X/n", rtw_read8(padapter, REG_SYS_FUNC_EN), rtw_read8(padapter, REG_CR), rtw_read8(padapter, REG_TXPAUSE)); } else { //RT_TRACE(_module_hal_xmit_c_, _drv_notice_, // ("%s: FIFO starvation!(%d) len=%d agg=%d page=(R)%d(A)%d/n", // __FUNCTION__, n, pxmitbuf->len, pxmitbuf->agg_num, pxmitbuf->pg_num, freePage[PageIdx] + freePage[PUBLIC_QUEUE_IDX])); } //rtw_yield_os(); rtw_msleep_os(1); } // Total number of page is NOT available, so update current FIFO status#ifdef CONFIG_CONCURRENT_MODE if (padapter->adapter_type > 0) pri_padapter = padapter->pbuddy_adapter;#endif HalQueryTxBufferStatus8723ASdio(pri_padapter); } while (1); if ((padapter->bSurpriseRemoved == _TRUE)#ifdef CONFIG_CONCURRENT_MODE ||((padapter->pbuddy_adapter)&& (padapter->pbuddy_adapter->bSurpriseRemoved))#endif ){ RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("%s: bSurpriseRemoved(wirte port)/n", __FUNCTION__)); goto free_xmitbuf; } rtw_write_port(padapter, deviceId, pxmitbuf->len, (u8 *)pxmitbuf);free_xmitbuf: //rtw_free_xmitframe(pxmitpriv, pframe); //pxmitbuf->priv_data = NULL; rtw_free_xmitbuf(pxmitpriv, pxmitbuf); return _FAIL;}
开发者ID:avila-devlogic,项目名称:D33_KK_Kernel,代码行数:101,
示例8: rtw_resume_processint rtw_resume_process(_adapter *padapter){ struct net_device *pnetdev; struct pwrctrl_priv *pwrpriv; u8 is_pwrlock_hold_by_caller; u8 is_directly_called_by_auto_resume; int ret = 0; u32 start_time = rtw_get_current_time(); _func_enter_; DBG_871X("==> %s (%s:%d)/n",__FUNCTION__, current->comm, current->pid); rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_ON); rtw_mdelay_os(1); { u32 ret = 0; DBG_8192C("read start:/n"); //spi_write8_endian(padapter, SPI_LOCAL_OFFSET | 0xF0, 0x01, 1); rtw_write8(padapter, SPI_LOCAL_OFFSET | 0xF0, 0x03); ret = rtw_read32(padapter, SPI_LOCAL_OFFSET | 0xF0); DBG_8192C("read end 0xF0 read32:%x:/n", ret); DBG_8192C("read end 0xF0 read8:%x:/n", rtw_read8(padapter, SPI_LOCAL_OFFSET | 0xF0)); } if (padapter) { pnetdev = padapter->pnetdev; pwrpriv = &padapter->pwrctrlpriv; } else { ret = -1; goto exit; } // interface init if (gspi_init(adapter_to_dvobj(padapter)) != _SUCCESS) { ret = -1; RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("%s: initialize SDIO Failed!!/n", __FUNCTION__)); goto exit; } rtw_hal_disable_interrupt(padapter); if (gspi_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS) { ret = -1; RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("%s: gspi_alloc_irq Failed!!/n", __FUNCTION__)); goto exit; } rtw_reset_drv_sw(padapter); pwrpriv->bkeepfwalive = _FALSE; DBG_871X("bkeepfwalive(%x)/n",pwrpriv->bkeepfwalive); if(pm_netdev_open(pnetdev,_TRUE) != 0) { ret = -1; goto exit; } netif_device_attach(pnetdev); netif_carrier_on(pnetdev); if( padapter->pid[1]!=0) { DBG_871X("pid[1]:%d/n",padapter->pid[1]); rtw_signal_process(padapter->pid[1], SIGUSR2); } #ifdef CONFIG_LAYER2_ROAMING_RESUME rtw_roaming(padapter, NULL); #endif #ifdef CONFIG_RESUME_IN_WORKQUEUE rtw_unlock_suspend(); #endif //CONFIG_RESUME_IN_WORKQUEUEexit: pwrpriv->bInSuspend = _FALSE; DBG_871X("<=== %s return %d.............. in %dms/n", __FUNCTION__ , ret, rtw_get_passing_time_ms(start_time)); _func_exit_; return ret;}
开发者ID:DanDanBu,项目名称:uclinux,代码行数:84,
示例9: xmit_xmitframes//.........这里部分代码省略......... break; } k = 0; } // ok to send, remove frame from queue //_enter_critical_bh(&pxmitpriv->lock, &irql);#ifdef CONFIG_AP_MODE if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) { if ((pxmitframe->attrib.psta->state & WIFI_SLEEP_STATE) && (pxmitframe->attrib.triggered == 0)) { //_exit_critical_bh(&pxmitpriv->lock, &irql); DBG_8192C("%s: one not triggered pkt in queue when STA sleep/n", __func__); break; } }#endif rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; hwxmits->accnt--; if (k == 0) { pxmitbuf->ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); pxmitbuf->priv_data = (u8*)pxmitframe; } // coalesce the xmitframe to xmitbuf pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->ptail; ret = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); if (ret == _FAIL) { RT_TRACE(_module_hal_xmit_c_, _drv_err_, ("%s: coalesce FAIL!", __FUNCTION__)); // Todo: error handler DBG_871X("%s: coalesce FAIL!", __FUNCTION__); } else { k++; if (k != 1) rtl8723a_update_txdesc(pxmitframe, pxmitframe->buf_addr); rtw_count_tx_stats(padapter, pxmitframe, pxmitframe->attrib.last_txcmdsz); txlen = TXDESC_SIZE + pxmitframe->attrib.last_txcmdsz; pxmitframe->pg_num = (txlen + 127)/128; pxmitbuf->pg_num += (txlen + 127)/128; //if (k != 1) // ((struct xmit_frame*)pxmitbuf->priv_data)->pg_num += pxmitframe->pg_num; pxmitbuf->ptail += _RND(txlen, 8); // round to 8 bytes alignment pxmitbuf->len = _RND(pxmitbuf->len, 8) + txlen; } if (k != 1) rtw_free_xmitframe(pxmitpriv, pxmitframe); pxmitframe = NULL; } //_enter_critical_bh(&pxmitpriv->lock, &irql); if (_rtw_queue_empty(pframe_queue) == _TRUE) rtw_list_delete(&ptxservq->tx_pending); //_exit_critical_bh(&pxmitpriv->lock, &irql);// _exit_critical(&pframe_queue->lock, &irqL1); //_exit_critical_bh(&pxmitpriv->lock, &irql); if (err) break; }// _exit_critical(&hwxmits->sta_queue->lock, &irqL0); _exit_critical_bh(&pxmitpriv->lock, &irql); // dump xmit_buf to hw tx fifo if (pxmitbuf) { RT_TRACE(_module_hal_xmit_c_, _drv_notice_, ("pxmitbuf->len=%d enqueue/n",pxmitbuf->len)); if (pxmitbuf->len > 0) { struct xmit_frame *pframe; pframe = (struct xmit_frame*)pxmitbuf->priv_data; pframe->agg_num = k; pxmitbuf->agg_num = k; rtl8723a_update_txdesc(pframe, pframe->buf_addr); rtw_free_xmitframe(pxmitpriv, pframe); pxmitbuf->priv_data = NULL; enqueue_pending_xmitbuf(pxmitpriv, pxmitbuf); rtw_yield_os(); } else rtw_free_xmitbuf(pxmitpriv, pxmitbuf); pxmitbuf = NULL; } if (err) break; } return err;}
开发者ID:avila-devlogic,项目名称:D33_KK_Kernel,代码行数:101,
示例10: rtw_gspi_suspendstatic int rtw_gspi_suspend(struct spi_device *spi, pm_message_t mesg){ struct dvobj_priv *dvobj = spi_get_drvdata(spi); PADAPTER padapter = dvobj->if1; struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct net_device *pnetdev = padapter->pnetdev; int ret = 0; u32 start_time = rtw_get_current_time(); _func_enter_; DBG_871X("==> %s (%s:%d)/n",__FUNCTION__, current->comm, current->pid); pwrpriv->bInSuspend = _TRUE; while (pwrpriv->bips_processing == _TRUE) rtw_msleep_os(1); if((!padapter->bup) || (padapter->bDriverStopped)||(padapter->bSurpriseRemoved)) { DBG_871X("%s bup=%d bDriverStopped=%d bSurpriseRemoved = %d/n", __FUNCTION__ ,padapter->bup, padapter->bDriverStopped,padapter->bSurpriseRemoved); goto exit; } rtw_cancel_all_timer(padapter); LeaveAllPowerSaveMode(padapter); //padapter->net_closed = _TRUE; //s1. if(pnetdev) { netif_carrier_off(pnetdev); rtw_netif_stop_queue(pnetdev); }#ifdef CONFIG_WOWLAN padapter->pwrctrlpriv.bSupportRemoteWakeup=_TRUE;#else //s2. rtw_disassoc_cmd(padapter, 0, _FALSE);#endif#ifdef CONFIG_LAYER2_ROAMING_RESUME if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED) ) { DBG_871X("%s %s(" MAC_FMT "), length:%d assoc_ssid.length:%d/n",__FUNCTION__, pmlmepriv->cur_network.network.Ssid.Ssid, MAC_ARG(pmlmepriv->cur_network.network.MacAddress), pmlmepriv->cur_network.network.Ssid.SsidLength, pmlmepriv->assoc_ssid.SsidLength); rtw_set_roaming(padapter, 1); }#endif //s2-2. indicate disconnect to os rtw_indicate_disconnect(padapter); //s2-3. rtw_free_assoc_resources(padapter, 1); //s2-4. rtw_free_network_queue(padapter, _TRUE); rtw_led_control(padapter, LED_CTL_POWER_OFF); rtw_dev_unload(padapter); if(check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) rtw_indicate_scan_done(padapter, 1); if(check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) rtw_indicate_disconnect(padapter); // interface deinit gspi_deinit(dvobj); RT_TRACE(_module_hci_intfs_c_, _drv_notice_, ("%s: deinit GSPI complete!/n", __FUNCTION__)); rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_OFF); rtw_mdelay_os(1);exit: DBG_871X("<=== %s return %d.............. in %dms/n", __FUNCTION__ , ret, rtw_get_passing_time_ms(start_time)); _func_exit_; return ret;}
开发者ID:DanDanBu,项目名称:uclinux,代码行数:88,
示例11: rtw_drv_probe/* * drv_init() - a device potentially for us * * notes: drv_init() is called when the bus driver has located a card for us to support. * We accept the new device by returning 0. */static int /*__devinit*/ rtw_drv_probe(struct spi_device *spi){ int status = _FAIL; struct dvobj_priv *dvobj; struct net_device *pnetdev; PADAPTER if1 = NULL, if2 = NULL; DBG_8192C("RTW: %s line:%d", __FUNCTION__, __LINE__); if ((dvobj = gspi_dvobj_init(spi)) == NULL) { DBG_871X("%s: Initialize device object priv Failed!/n", __FUNCTION__); goto exit; } if ((if1 = rtw_gspi_if1_init(dvobj)) == NULL) { DBG_871X("rtw_init_primary_adapter Failed!/n"); goto free_dvobj; }#ifdef CONFIG_CONCURRENT_MODE if ((if2 = rtw_drv_if2_init(if1, NULL, spi_set_intf_ops)) == NULL) { goto free_if1; }#endif //dev_alloc_name && register_netdev if((status = rtw_drv_register_netdev(if1)) != _SUCCESS) { goto free_if2; }#ifdef CONFIG_HOSTAPD_MLME hostapd_mode_init(if1);#endif#ifdef CONFIG_PLATFORM_RTD2880B DBG_871X("wlan link up/n"); rtd2885_wlan_netlink_sendMsg("linkup", "8712");#endif#ifdef RTK_DMP_PLATFORM rtw_proc_init_one(if1->pnetdev);#endif if (gspi_alloc_irq(dvobj) != _SUCCESS) goto free_if2;#ifdef CONFIG_GLOBAL_UI_PID if(ui_pid[1]!=0) { DBG_871X("ui_pid[1]:%d/n",ui_pid[1]); rtw_signal_process(ui_pid[1], SIGUSR2); }#endif RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-871x_drv - drv_init, success!/n")); status = _SUCCESS;free_if2: if (status != _SUCCESS && if2) { #ifdef CONFIG_CONCURRENT_MODE rtw_drv_if2_stop(if2); rtw_drv_if2_free(if2); #endif }free_if1: if (status != _SUCCESS && if1) { rtw_gspi_if1_deinit(if1); }free_dvobj: if (status != _SUCCESS) gspi_dvobj_deinit(spi);exit: return status == _SUCCESS?0:-ENODEV;}
开发者ID:DanDanBu,项目名称:uclinux,代码行数:84,
示例12: rtw_gspi_if1_initstatic PADAPTER rtw_gspi_if1_init(struct dvobj_priv *dvobj){ int status = _FAIL; struct net_device *pnetdev; PADAPTER padapter = NULL; padapter = (PADAPTER)rtw_zvmalloc(sizeof(*padapter)); if (NULL == padapter) { goto exit; } padapter->dvobj = dvobj; dvobj->if1 = padapter; padapter->bDriverStopped = _TRUE; dvobj->padapters[dvobj->iface_nums++] = padapter; padapter->iface_id = IFACE_ID0;#if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) //set adapter_type/iface type for primary padapter padapter->isprimary = _TRUE; padapter->adapter_type = PRIMARY_ADAPTER; #ifndef CONFIG_HWPORT_SWAP padapter->iface_type = IFACE_PORT0; #else padapter->iface_type = IFACE_PORT1; #endif#endif padapter->interface_type = RTW_GSPI; decide_chip_type_by_device_id(padapter); //3 1. init network device data pnetdev = rtw_init_netdev(padapter); if (!pnetdev) goto free_adapter; SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj));#ifdef CONFIG_IOCTL_CFG80211 rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj));#endif //3 3. init driver special setting, interface, OS and hardware relative //4 3.1 set hardware operation functions hal_set_hal_ops(padapter); //3 5. initialize Chip version padapter->intf_start = &gspi_intf_start; padapter->intf_stop = &gspi_intf_stop; if (rtw_init_io_priv(padapter, spi_set_intf_ops) == _FAIL) { RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("rtw_drv_init: Can't init io_priv/n")); goto free_hal_data; } { u32 ret = 0; DBG_8192C("read start:/n"); //spi_write8_endian(padapter, SPI_LOCAL_OFFSET | 0xF0, 0x01, 1); rtw_write8(padapter, SPI_LOCAL_OFFSET | 0xF0, 0x03); ret = rtw_read32(padapter, SPI_LOCAL_OFFSET | 0xF0); DBG_8192C("read end 0xF0 read32:%x:/n", ret); DBG_8192C("read end 0xF0 read8:%x:/n", rtw_read8(padapter, SPI_LOCAL_OFFSET | 0xF0)); } rtw_hal_read_chip_version(padapter); rtw_hal_chip_configure(padapter); //3 6. read efuse/eeprom data rtw_hal_read_chip_info(padapter); //3 7. init driver common data if (rtw_init_drv_sw(padapter) == _FAIL) { RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("rtw_drv_init: Initialize driver software resource Failed!/n")); goto free_hal_data; } //3 8. get WLan MAC address // set mac addr rtw_macaddr_cfg(padapter->eeprompriv.mac_addr); rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr); rtw_hal_disable_interrupt(padapter); DBG_871X("bDriverStopped:%d, bSurpriseRemoved:%d, bup:%d, hw_init_completed:%d/n" ,padapter->bDriverStopped ,padapter->bSurpriseRemoved//.........这里部分代码省略.........
开发者ID:DanDanBu,项目名称:uclinux,代码行数:101,
示例13: rtw_set_802_11_ssidu8 rtw_set_802_11_ssid(_adapter* padapter, NDIS_802_11_SSID *ssid){ _irqL irqL; u8 status = _SUCCESS; u32 cur_time = 0; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *pnetwork = &pmlmepriv->cur_network; _func_enter_; RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_notice_, ("+rtw_set_802_11_ssid: ssid=[%s] fw_state=0x%08x/n", ssid->Ssid, get_fwstate(pmlmepriv))); if(padapter->hw_init_completed==_FALSE){ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("set_ssid: hw_init_completed==_FALSE=>exit!!!/n")); status = _FAIL; goto exit; } _enter_critical_bh(&pmlmepriv->lock, &irqL); DBG_871X("Set SSID under fw_state=0x%08x/n", get_fwstate(pmlmepriv)); if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { goto handle_tkip_countermeasure; } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { goto release_mlme_lock; } if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) { RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE/n")); if ((pmlmepriv->assoc_ssid.SsidLength == ssid->SsidLength) && (_rtw_memcmp(&pmlmepriv->assoc_ssid.Ssid, ssid->Ssid, ssid->SsidLength) == _TRUE)) { if((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _FALSE)) { RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("Set SSID is the same ssid, fw_state=0x%08x/n", get_fwstate(pmlmepriv))); if(rtw_is_same_ibss(padapter, pnetwork) == _FALSE) { //if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again rtw_disassoc_cmd(padapter); if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_indicate_disconnect(padapter); rtw_free_assoc_resources(padapter, 1); if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } else { goto release_mlme_lock;//it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. } }#ifdef CONFIG_LPS else { rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1); }#endif } else { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("Set SSID not the same ssid/n")); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_ssid=[%s] len=0x%x/n", ssid->Ssid, (unsigned int)ssid->SsidLength)); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("assoc_ssid=[%s] len=0x%x/n", pmlmepriv->assoc_ssid.Ssid, (unsigned int)pmlmepriv->assoc_ssid.SsidLength)); rtw_disassoc_cmd(padapter); if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_indicate_disconnect(padapter); rtw_free_assoc_resources(padapter, 1); if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } }handle_tkip_countermeasure:#ifdef PLATFORM_WINDOWS if (padapter->securitypriv.btkip_countermeasure==_TRUE) { LARGE_INTEGER sys_time; u32 diff_time,cur_time ; RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_ssid:padapter->securitypriv.btkip_countermeasure==_TRUE/n")); NdisGetCurrentSystemTime(&sys_time); cur_time=(u32)(sys_time.QuadPart/10); // In micro-second.//.........这里部分代码省略.........
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:101,
示例14: rtw_ieee802_11_parse_elems/** * ieee802_11_parse_elems - Parse information elements in management frames * @start: Pointer to the start of IEs * @len: Length of IE buffer in octets * @elems: Data structure for parsed elements * @show_errors: Whether to show parsing errors in debug log * Returns: Parsing result */ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, struct rtw_ieee802_11_elems *elems, int show_errors){ uint left = len; u8 *pos = start; int unknown = 0; _rtw_memset(elems, 0, sizeof(*elems)); while (left >= 2) { u8 id, elen; id = *pos++; elen = *pos++; left -= 2; if (elen > left) { if (show_errors) { DBG_871X("IEEE 802.11 element " "parse failed (id=%d elen=%d " "left=%lu)/n", id, elen, (unsigned long) left); } return ParseFailed; } switch (id) { case WLAN_EID_SSID: elems->ssid = pos; elems->ssid_len = elen; break; case WLAN_EID_SUPP_RATES: elems->supp_rates = pos; elems->supp_rates_len = elen; break; case WLAN_EID_FH_PARAMS: elems->fh_params = pos; elems->fh_params_len = elen; break; case WLAN_EID_DS_PARAMS: elems->ds_params = pos; elems->ds_params_len = elen; break; case WLAN_EID_CF_PARAMS: elems->cf_params = pos; elems->cf_params_len = elen; break; case WLAN_EID_TIM: elems->tim = pos; elems->tim_len = elen; break; case WLAN_EID_IBSS_PARAMS: elems->ibss_params = pos; elems->ibss_params_len = elen; break; case WLAN_EID_CHALLENGE: elems->challenge = pos; elems->challenge_len = elen; break; case WLAN_EID_ERP_INFO: elems->erp_info = pos; elems->erp_info_len = elen; break; case WLAN_EID_EXT_SUPP_RATES: elems->ext_supp_rates = pos; elems->ext_supp_rates_len = elen; break; case WLAN_EID_VENDOR_SPECIFIC: if (rtw_ieee802_11_parse_vendor_specific(pos, elen, elems, show_errors)) unknown++; break; case WLAN_EID_RSN: elems->rsn_ie = pos; elems->rsn_ie_len = elen; break; case WLAN_EID_PWR_CAPABILITY: elems->power_cap = pos; elems->power_cap_len = elen; break; case WLAN_EID_SUPPORTED_CHANNELS: elems->supp_channels = pos; elems->supp_channels_len = elen; break; case WLAN_EID_MOBILITY_DOMAIN: elems->mdie = pos; elems->mdie_len = elen; break; case WLAN_EID_FAST_BSS_TRANSITION: elems->ftie = pos;//.........这里部分代码省略.........
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:101,
示例15: rtl8192cu_xmitframe_completes32 rtl8192cu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf){ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); struct xmit_frame *pxmitframe = NULL; struct xmit_frame *pfirstframe = NULL; // aggregate variable struct hw_xmit *phwxmit; struct sta_info *psta = NULL; struct tx_servq *ptxservq = NULL; _irqL irqL; _list *xmitframe_plist = NULL, *xmitframe_phead = NULL; u32 pbuf; // next pkt address u32 pbuf_tail; // last pkt tail u32 len; // packet length, except TXDESC_SIZE and PKT_OFFSET u32 bulkSize = pHalData->UsbBulkOutSize; u8 descCount; u32 bulkPtr; // dump frame variable u32 ff_hwaddr;#ifndef IDEA_CONDITION int res = _SUCCESS;#endif RT_TRACE(_module_rtl8192c_xmit_c_, _drv_info_, ("+xmitframe_complete/n")); // check xmitbuffer is ok if (pxmitbuf == NULL) { pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); if (pxmitbuf == NULL) return _FALSE; } //3 1. pick up first frame do { rtw_free_xmitframe(pxmitpriv, pxmitframe); pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); if (pxmitframe == NULL) { // no more xmit frame, release xmit buffer rtw_free_xmitbuf(pxmitpriv, pxmitbuf); return _FALSE; }#ifndef IDEA_CONDITION if (pxmitframe->frame_tag != DATA_FRAMETAG) { RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, ("xmitframe_complete: frame tag(%d) is not DATA_FRAMETAG(%d)!/n", pxmitframe->frame_tag, DATA_FRAMETAG));// rtw_free_xmitframe(pxmitpriv, pxmitframe); continue; } // TID 0~15 if ((pxmitframe->attrib.priority < 0) || (pxmitframe->attrib.priority > 15)) { RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, ("xmitframe_complete: TID(%d) should be 0~15!/n", pxmitframe->attrib.priority));// rtw_free_xmitframe(pxmitpriv, pxmitframe); continue; }#endif pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf; pxmitbuf->priv_data = pxmitframe; //pxmitframe->agg_num = 1; // alloc xmitframe should assign to 1. pxmitframe->pkt_offset = (PACKET_OFFSET_SZ/8); // 1; // first frame of aggregation, reserve offset if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { DBG_871X("%s coalesce 1st xmitframe failed /n",__FUNCTION__); continue; } // always return ndis_packet after rtw_xmitframe_coalesce rtw_os_xmit_complete(padapter, pxmitframe); break; } while (1); //3 2. aggregate same priority and same DA(AP or STA) frames pfirstframe = pxmitframe; len = xmitframe_need_length(pfirstframe) + TXDESC_OFFSET; pbuf_tail = len; pbuf = _RND8(pbuf_tail); // check pkt amount in one bluk descCount = 0; bulkPtr = bulkSize;//.........这里部分代码省略.........
开发者ID:abrakev,项目名称:RTL-8188C-8192C,代码行数:101,
示例16: rtw_ieee802_11_parse_vendor_specificstatic int rtw_ieee802_11_parse_vendor_specific(u8 *pos, uint elen, struct rtw_ieee802_11_elems *elems, int show_errors){ unsigned int oui; /* first 3 bytes in vendor specific information element are the IEEE * OUI of the vendor. The following byte is used a vendor specific * sub-type. */ if (elen < 4) { if (show_errors) { DBG_871X("short vendor specific " "information element ignored (len=%lu)/n", (unsigned long) elen); } return -1; } oui = RTW_GET_BE24(pos); switch (oui) { case OUI_MICROSOFT: /* Microsoft/Wi-Fi information elements are further typed and * subtyped */ switch (pos[3]) { case 1: /* Microsoft OUI (00:50:F2) with OUI Type 1: * real WPA information element */ elems->wpa_ie = pos; elems->wpa_ie_len = elen; break; case WME_OUI_TYPE: /* this is a Wi-Fi WME info. element */ if (elen < 5) { DBG_871X("short WME " "information element ignored " "(len=%lu)/n", (unsigned long) elen); return -1; } switch (pos[4]) { case WME_OUI_SUBTYPE_INFORMATION_ELEMENT: case WME_OUI_SUBTYPE_PARAMETER_ELEMENT: elems->wme = pos; elems->wme_len = elen; break; case WME_OUI_SUBTYPE_TSPEC_ELEMENT: elems->wme_tspec = pos; elems->wme_tspec_len = elen; break; default: DBG_871X("unknown WME " "information element ignored " "(subtype=%d len=%lu)/n", pos[4], (unsigned long) elen); return -1; } break; case 4: /* Wi-Fi Protected Setup (WPS) IE */ elems->wps_ie = pos; elems->wps_ie_len = elen; break; default: DBG_871X("Unknown Microsoft " "information element ignored " "(type=%d len=%lu)/n", pos[3], (unsigned long) elen); return -1; } break; case OUI_BROADCOM: switch (pos[3]) { case VENDOR_HT_CAPAB_OUI_TYPE: elems->vendor_ht_cap = pos; elems->vendor_ht_cap_len = elen; break; default: DBG_871X("Unknown Broadcom " "information element ignored " "(type=%d len=%lu)/n", pos[3], (unsigned long) elen); return -1; } break; default: DBG_871X("unknown vendor specific information " "element ignored (vendor OUI %02x:%02x:%02x " "len=%lu)/n", pos[0], pos[1], pos[2], (unsigned long) elen); return -1; } return 0; }
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:96,
示例17: rtl8723bs_recv_taskletstatic void rtl8723bs_recv_tasklet(void *priv){ PADAPTER padapter; PHAL_DATA_TYPE pHalData; struct recv_priv *precvpriv; struct recv_buf *precvbuf; union recv_frame *precvframe; struct recv_frame_hdr *phdr; struct rx_pkt_attrib *pattrib; u8 *ptr; _pkt *ppkt; u32 pkt_offset; _irqL irql; padapter = (PADAPTER)priv; pHalData = GET_HAL_DATA(padapter); precvpriv = &padapter->recvpriv; do { precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue); if (NULL == precvbuf) break; ptr = precvbuf->pdata; while (ptr < precvbuf->ptail) { precvframe = rtw_alloc_recvframe(&precvpriv->free_recv_queue); if (precvframe == NULL) { RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("rtl8723bs_recv_tasklet: no enough recv frame!/n")); rtw_enqueue_recvbuf_to_head(precvbuf, &precvpriv->recv_buf_pending_queue); // The case of can't allocte recvframe should be temporary, // schedule again and hope recvframe is available next time.#ifdef PLATFORM_LINUX tasklet_schedule(&precvpriv->recv_tasklet);#endif return; } phdr = &precvframe->u.hdr; pattrib = &phdr->attrib; update_recvframe_attrib_8723b(padapter, precvframe, (struct recv_stat*)ptr);#if 0 { int i, len = 64; u8 *pptr = ptr; if((*(pptr + RXDESC_SIZE + pattrib->drvinfo_sz) != 0x80) && (*(pptr + RXDESC_SIZE + pattrib->drvinfo_sz) != 0x40)) { DBG_871X("##############RxDESC############### /n"); for(i=0; i<32;i=i+16) DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:/n", *(pptr+i), *(pptr+i+1), *(pptr+i+2) ,*(pptr+i+3) ,*(pptr+i+4),*(pptr+i+5), *(pptr+i+6), *(pptr+i+7), *(pptr+i+8), *(pptr+i+9), *(pptr+i+10), *(pptr+i+11), *(pptr+i+12), *(pptr+i+13), *(pptr+i+14), *(pptr+i+15)); if(pattrib->pkt_len < 100) len = pattrib->pkt_len; pptr = ptr + RXDESC_SIZE + pattrib->drvinfo_sz; DBG_871X("##############Len=%d############### /n", pattrib->pkt_len); for(i=0; i<len;i=i+16) DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:/n", *(pptr+i), *(pptr+i+1), *(pptr+i+2) ,*(pptr+i+3) ,*(pptr+i+4),*(pptr+i+5), *(pptr+i+6), *(pptr+i+7), *(pptr+i+8), *(pptr+i+9), *(pptr+i+10), *(pptr+i+11), *(pptr+i+12), *(pptr+i+13), *(pptr+i+14), *(pptr+i+15)); DBG_871X("############################# /n"); } }#endif // fix Hardware RX data error, drop whole recv_buffer if ((!(pHalData->ReceiveConfig & RCR_ACRC32)) && pattrib->crc_err) { DBG_8192C("%s()-%d: RX Warning! rx CRC ERROR !!/n", __FUNCTION__, __LINE__); rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); break; } pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->pkt_len;#if 0 // reduce check to speed up if ((ptr + pkt_offset) > precvbuf->ptail) { RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("%s: next pkt len(%p,%d) exceed ptail(%p)!/n", __FUNCTION__, ptr, pkt_offset, precvbuf->ptail)); rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); break; }#endif if ((pattrib->crc_err) || (pattrib->icv_err)) {#ifdef CONFIG_MP_INCLUDED if (padapter->registrypriv.mp_mode == 1) { if ((check_fwstate(&padapter->mlmepriv, WIFI_MP_STATE) == _TRUE))//&&(padapter->mppriv.check_mp_pkt == 0)) { if (pattrib->crc_err == 1) padapter->mppriv.rx_crcerrpktcount++; }//.........这里部分代码省略.........
开发者ID:abgoyal,项目名称:alcatel_ot_4020D_kernel,代码行数:101,
示例18: rtw_set_802_11_ssidu8 rtw_set_802_11_ssid(_adapter* padapter, NDIS_802_11_SSID *ssid){ _irqL irqL; u8 status = _SUCCESS; u32 cur_time = 0; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *pnetwork = &pmlmepriv->cur_network;_func_enter_; DBG_871X_LEVEL(_drv_always_, "set ssid [%s] fw_state=0x%08x/n", ssid->Ssid, get_fwstate(pmlmepriv)); if(padapter->hw_init_completed==_FALSE){ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("set_ssid: hw_init_completed==_FALSE=>exit!!!/n")); status = _FAIL; goto exit; } _enter_critical_bh(&pmlmepriv->lock, &irqL); DBG_871X("Set SSID under fw_state=0x%08x/n", get_fwstate(pmlmepriv)); if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { goto handle_tkip_countermeasure; } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { goto release_mlme_lock; } if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) { RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE/n")); if ((pmlmepriv->assoc_ssid.SsidLength == ssid->SsidLength) && (_rtw_memcmp(&pmlmepriv->assoc_ssid.Ssid, ssid->Ssid, ssid->SsidLength) == _TRUE)) { if((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _FALSE)) { RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("Set SSID is the same ssid, fw_state=0x%08x/n", get_fwstate(pmlmepriv))); if(rtw_is_same_ibss(padapter, pnetwork) == _FALSE) { //if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again rtw_disassoc_cmd(padapter, 0, _TRUE); if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_indicate_disconnect(padapter); rtw_free_assoc_resources(padapter, 1); if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } else { goto release_mlme_lock;//it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. } }#ifdef CONFIG_LPS else { rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1); }#endif } else { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("Set SSID not the same ssid/n")); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_ssid=[%s] len=0x%x/n", ssid->Ssid, (unsigned int)ssid->SsidLength)); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("assoc_ssid=[%s] len=0x%x/n", pmlmepriv->assoc_ssid.Ssid, (unsigned int)pmlmepriv->assoc_ssid.SsidLength)); rtw_disassoc_cmd(padapter, 0, _TRUE); if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_indicate_disconnect(padapter); rtw_free_assoc_resources(padapter, 1); if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } }handle_tkip_countermeasure: if((status=rtw_handle_tkip_countermeasure(padapter)) == _FAIL) goto release_mlme_lock; #ifdef CONFIG_VALIDATE_SSID if (rtw_validate_ssid(ssid) == _FALSE) { status = _FAIL; goto release_mlme_lock; }//.........这里部分代码省略.........
开发者ID:zefie,项目名称:nxt_andx86_kernel,代码行数:101,
示例19: rtw_proc_init_onevoid rtw_proc_init_one(struct net_device *dev){ struct proc_dir_entry *dir_dev = NULL; struct proc_dir_entry *entry=NULL; _adapter *padapter = rtw_netdev_priv(dev); if(rtw_proc == NULL) { if(padapter->chip_type == RTL8188C_8192C) { _rtw_memcpy(rtw_proc_name, RTL8192C_PROC_NAME, sizeof(RTL8192C_PROC_NAME)); } else if(padapter->chip_type == RTL8192D) { _rtw_memcpy(rtw_proc_name, RTL8192D_PROC_NAME, sizeof(RTL8192D_PROC_NAME)); }#if(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) rtw_proc=create_proc_entry(rtw_proc_name, S_IFDIR, proc_net);#else rtw_proc=create_proc_entry(rtw_proc_name, S_IFDIR, init_net.proc_net);#endif if (rtw_proc == NULL) { DBG_8192C(KERN_ERR "Unable to create rtw_proc directory/n"); return; } entry = create_proc_read_entry("ver_info", S_IFREG | S_IRUGO, rtw_proc, proc_get_drv_version, dev); if (!entry) { DBG_871X("Unable to create_proc_read_entry!/n"); return; } } if(padapter->dir_dev == NULL) { padapter->dir_dev = create_proc_entry(dev->name, S_IFDIR | S_IRUGO | S_IXUGO, rtw_proc); dir_dev = padapter->dir_dev; if(dir_dev==NULL) { if(rtw_proc_cnt == 0) { if(rtw_proc){#if(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) remove_proc_entry(rtw_proc_name, proc_net);#else remove_proc_entry(rtw_proc_name, init_net.proc_net);#endif rtw_proc = NULL; } } DBG_8192C("Unable to create dir_dev directory/n"); return; } } else { return; } rtw_proc_cnt++; entry = create_proc_read_entry("write_reg", S_IFREG | S_IRUGO, dir_dev, proc_get_write_reg, dev); if (!entry) { DBG_871X("Unable to create_proc_read_entry!/n"); return; } entry->write_proc = proc_set_write_reg; entry = create_proc_read_entry("read_reg", S_IFREG | S_IRUGO, dir_dev, proc_get_read_reg, dev); if (!entry) { DBG_871X("Unable to create_proc_read_entry!/n"); return; } entry->write_proc = proc_set_read_reg; entry = create_proc_read_entry("fwstate", S_IFREG | S_IRUGO, dir_dev, proc_get_fwstate, dev); if (!entry) { DBG_871X("Unable to create_proc_read_entry!/n"); return; } entry = create_proc_read_entry("sec_info", S_IFREG | S_IRUGO, dir_dev, proc_get_sec_info, dev); if (!entry) { DBG_871X("Unable to create_proc_read_entry!/n"); return; }//.........这里部分代码省略.........
开发者ID:hillbeast,项目名称:android_kernel_ainol_novo8,代码行数:101,
示例20: update_txdesc//.........这里部分代码省略......... if(pdmpriv->INIDATA_RATE[pattrib->mac_id] & BIT(7)) SET_TX_DESC_DATA_SHORT_92E(ptxdesc, 1); SET_TX_DESC_TX_RATE_92E(ptxdesc, (pdmpriv->INIDATA_RATE[pattrib->mac_id] & 0x7F)); } //for debug #if 1 if(padapter->fix_rate!= 0xFF){ struct dm_priv *pdmpriv = &pHalData->dmpriv; SET_TX_DESC_USE_RATE_92E(ptxdesc, 1); //if(pdmpriv->INIDATA_RATE[pattrib->mac_id] & BIT(7)) { if(padapter->fix_rate & BIT(7)) SET_TX_DESC_DATA_SHORT_92E(ptxdesc, 1); } SET_TX_DESC_TX_RATE_92E(ptxdesc, (padapter->fix_rate & 0x7F)); SET_TX_DESC_DISABLE_FB_92E(ptxdesc,1); //ptxdesc->datarate = padapter->fix_rate; } #endif } else { // EAP data packet and ARP packet and DHCP. // Use the 1M data rate to send the EAP/ARP packet. // This will maybe make the handshake smooth. SET_TX_DESC_USE_RATE_92E(ptxdesc, 1); SET_TX_DESC_BK_92E(ptxdesc, 1); // HW will ignore this setting if the transmission rate is legacy OFDM. if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT) { SET_TX_DESC_DATA_SHORT_92E(ptxdesc, 1); } SET_TX_DESC_TX_RATE_92E(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); } } else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { //DBG_8192C("pxmitframe->frame_tag == MGNT_FRAMETAG/n"); SET_TX_DESC_MBSSID_92E(ptxdesc, pattrib->mbssid);//for issue port1/mbssid beacon //offset 20 SET_TX_DESC_RETRY_LIMIT_ENABLE_92E(ptxdesc, 1); if (pattrib->retry_ctrl == _TRUE) { SET_TX_DESC_DATA_RETRY_LIMIT_92E(ptxdesc, 6); } else { SET_TX_DESC_DATA_RETRY_LIMIT_92E(ptxdesc, 12); } SET_TX_DESC_USE_RATE_92E(ptxdesc, 1);#ifdef CONFIG_INTEL_PROXIM if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ DBG_871X("/n %s pattrib->rate=%d/n",__FUNCTION__,pattrib->rate); SET_TX_DESC_TX_RATE_92E(ptxdesc, pattrib->rate); } else#endif { SET_TX_DESC_TX_RATE_92E(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); }#ifdef CONFIG_XMIT_ACK //CCX-TXRPT ack for xmit mgmt frames. if (pxmitframe->ack_report) { SET_TX_DESC_SPE_RPT_92E(ptxdesc, 1); #ifdef DBG_CCX DBG_871X("%s set tx report/n", __func__); #endif }#endif //CONFIG_XMIT_ACK } else if((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) { DBG_8192C("pxmitframe->frame_tag == TXAGG_FRAMETAG/n"); }#ifdef CONFIG_MP_INCLUDED else if(((pxmitframe->frame_tag&0x0f) == MP_FRAMETAG) && (padapter->registrypriv.mp_mode == 1)) { fill_txdesc_for_mp(padapter, ptxdesc); }#endif else { DBG_8192C("pxmitframe->frame_tag = %d/n", pxmitframe->frame_tag); SET_TX_DESC_USE_RATE_92E(ptxdesc, 1); SET_TX_DESC_TX_RATE_92E(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); } rtl8192e_cal_txdesc_chksum(ptxdesc); _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); return pull;}
开发者ID:OpenLD,项目名称:linux-wetek-3.10.y,代码行数:101,
示例21: update_txdesc//.........这里部分代码省略......... ptxdesc->txdw5 |= cpu_to_le32(MRateToHwRate(pmlmeext->tx_rate)); } //offset 24#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX if ( pattrib->hw_tcp_csum == 1 ) { // ptxdesc->txdw6 = 0; // clear TCP_CHECKSUM and IP_CHECKSUM. It's zero already!! u8 ip_hdr_offset = 32 + pattrib->hdrlen + pattrib->iv_len + 8; ptxdesc->txdw7 = (1 << 31) | (ip_hdr_offset << 16); DBG_8192C("ptxdesc->txdw7 = %08x/n", ptxdesc->txdw7); }#endif } else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { //DBG_8192C("pxmitframe->frame_tag == MGNT_FRAMETAG/n"); //offset 4 ptxdesc->txdw1 |= cpu_to_le32(pattrib->mac_id&0x1f); qsel = (uint)(pattrib->qsel&0x0000001f); ptxdesc->txdw1 |= cpu_to_le32((qsel<<QSEL_SHT)&0x00001f00); ptxdesc->txdw1 |= cpu_to_le32((pattrib->raid<< 16) & 0x000f0000); //fill_txdesc_sectype(pattrib, ptxdesc); //offset 8 #ifdef CONFIG_XMIT_ACK //CCX-TXRPT ack for xmit mgmt frames. if (pxmitframe->ack_report) { ptxdesc->txdw2 |= cpu_to_le32(BIT(19)); #ifdef DBG_CCX DBG_871X("%s set ccx/n", __func__); #endif }#endif //CONFIG_XMIT_ACK //offset 12 ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<16)&0xffff0000); //offset 16 ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate //offset 20 ptxdesc->txdw5 |= cpu_to_le32(BIT(17));//retry limit enable if(pattrib->retry_ctrl == _TRUE) {#ifdef CONFIG_P2P if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) { ptxdesc->txdw5 |= cpu_to_le32(0x00080000);//retry limit = 2 } else#endif //CONFIG_P2P ptxdesc->txdw5 |= cpu_to_le32(0x00180000);//retry limit = 6 } else ptxdesc->txdw5 |= cpu_to_le32(0x00300000);//retry limit = 12#ifdef CONFIG_INTEL_PROXIM if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ printk("/n %s pattrib->rate=%d/n",__FUNCTION__,pattrib->rate); ptxdesc->txdw5 |= cpu_to_le32( pattrib->rate); } else
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:67,
示例22: rtw_os_alloc_recvframeint rtw_os_alloc_recvframe(_adapter *padapter, union recv_frame *precvframe, u8 *pdata, _pkt *pskb){ int res = _SUCCESS; u8 shift_sz = 0; u32 skb_len, alloc_sz; _pkt *pkt_copy = NULL; struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; if(pdata == NULL) { precvframe->u.hdr.pkt = NULL; res = _FAIL; return res; } // Modified by Albert 20101213 // For 8 bytes IP header alignment. shift_sz = pattrib->qos ? 6:0;// Qos data, wireless lan header length is 26 skb_len = pattrib->pkt_len; // for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. // modify alloc_sz for recvive crc error packet by thomas 2011-06-02 if((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)) { //alloc_sz = 1664; //1664 is 128 alignment. alloc_sz = (skb_len <= 1650) ? 1664:(skb_len + 14); } else { alloc_sz = skb_len; // 6 is for IP header 8 bytes alignment in QoS packet case. // 8 is for skb->data 4 bytes alignment. alloc_sz += 14; } pkt_copy = rtw_skb_alloc(alloc_sz); if(pkt_copy) { pkt_copy->dev = padapter->pnetdev; precvframe->u.hdr.pkt = pkt_copy; precvframe->u.hdr.rx_head = pkt_copy->data; precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz; skb_reserve(pkt_copy, 8 - ((SIZE_PTR)( pkt_copy->data) & 7 ));//force pkt_copy->data at 8-byte alignment address skb_reserve(pkt_copy, shift_sz);//force ip_hdr at 8-byte alignment address according to shift_sz. _rtw_memcpy(pkt_copy->data, pdata, skb_len); precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data; } else {#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX DBG_871X("%s:can not allocate memory for skb copy/n", __FUNCTION__); precvframe->u.hdr.pkt = NULL; //rtw_free_recvframe(precvframe, pfree_recv_queue); //goto _exit_recvbuf2recvframe; res = _FAIL; #else if((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)) { DBG_871X("%s: alloc_skb fail , drop frag frame /n", __FUNCTION__); //rtw_free_recvframe(precvframe, pfree_recv_queue); res = _FAIL; goto exit_rtw_os_recv_resource_alloc; } if(pskb == NULL) { res = _FAIL; goto exit_rtw_os_recv_resource_alloc; } precvframe->u.hdr.pkt = rtw_skb_clone(pskb); if(precvframe->u.hdr.pkt) { precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pdata; precvframe->u.hdr.rx_end = pdata + alloc_sz; } else { DBG_871X("%s: rtw_skb_clone fail/n", __FUNCTION__); //rtw_free_recvframe(precvframe, pfree_recv_queue); //goto _exit_recvbuf2recvframe; res = _FAIL; }#endif } exit_rtw_os_recv_resource_alloc: return res;}
开发者ID:rcd765,项目名称:rtl8723bs_intel_compute_stick,代码行数:98,
示例23: rtw_set_ps_modevoid rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode){ struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;#ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &( padapter->wdinfo );#endif //CONFIG_P2P#ifdef CONFIG_TDLS struct sta_priv *pstapriv = &padapter->stapriv; _irqL irqL; int i, j; _list *plist, *phead; struct sta_info *ptdls_sta;#endif //CONFIG_TDLS_func_enter_; RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, ("%s: PowerMode=%d Smart_PS=%d/n", __FUNCTION__, ps_mode, smart_ps)); if(ps_mode > PM_Card_Disable) { RT_TRACE(_module_rtl871x_pwrctrl_c_,_drv_err_,("ps_mode:%d error/n", ps_mode)); return; } if (pwrpriv->pwr_mode == ps_mode) { if (PS_MODE_ACTIVE == ps_mode) return; if ((pwrpriv->smart_ps == smart_ps) && (pwrpriv->bcn_ant_mode == bcn_ant_mode)) { return; } }#ifdef CONFIG_LPS_LCLK _enter_pwrlock(&pwrpriv->lock);#endif //if(pwrpriv->pwr_mode == PS_MODE_ACTIVE) if(ps_mode == PS_MODE_ACTIVE) {#ifdef CONFIG_P2P_PS if(pwdinfo->opp_ps == 0)#endif //CONFIG_P2P_PS { DBG_871X("rtw_set_ps_mode: Leave 802.11 power save/n");#ifdef CONFIG_TDLS _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for(i=0; i< NUM_STA; i++) { phead = &(pstapriv->sta_hash[i]); plist = get_next(phead); while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { ptdls_sta = LIST_CONTAINOR(plist, struct sta_info, hash_list); if( ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE ) issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 0); plist = get_next(plist); } } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL);#endif //CONFIG_TDLS pwrpriv->pwr_mode = ps_mode; rtw_set_rpwm(padapter, PS_STATE_S4);#ifdef CONFIG_WOWLAN if (padapter->pwrctrlpriv.wowlan_mode == _TRUE) { u32 start_time, delay_ms; u8 val8; delay_ms = 20; start_time = rtw_get_current_time(); do { val8 = rtw_read8(padapter, 0x90); if (!(val8 & BIT(0))) break; if (rtw_get_passing_time_ms(start_time) > delay_ms) { DBG_871X("%s: Wait for FW 32K leave more than %u ms!!!/n", __FUNCTION__, delay_ms); break; } rtw_usleep_os(100); } while (1); pwrpriv->cpwm = PS_STATE_S4; }#endif rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); pwrpriv->bFwCurrentInPSMode = _FALSE; } }
开发者ID:GREYFOXRGR,项目名称:kernel,代码行数:96,
示例24: rtw_xmits32 rtw_xmit(_adapter *padapter, _pkt **ppkt){ static u32 start = 0; static u32 drop_cnt = 0; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct xmit_frame *pxmitframe = NULL; TXDESC_8195A txdesc; struct xmit_buf *pxmitbuf; s32 res; struct intf_hdl *pintfhdl; _pkt *skb; struct pkt_file pfile; DBG_871X("%s(): ==> xmit wanted!/n", __FUNCTION__);// pfile.pkt = *ppkt;// pfile.cur_addr = pfile.buf_start = *ppkt->data;// pfile.pkt_len = pfile.buf_len = *skb->len;// skb = *ppkt;// pintfhdl->padapter = padapter;// pxmitbuf = (struct xmit_buf *)rtw_zmalloc(sizeof(*pxmitbuf));// _rtw_memcpy(pxmitbuf->pdata, skb->data, skb->len);// _rtw_init_listhead(&pxmitbuf->list);// // pxmitbuf->priv_data = NULL;// pxmitbuf->padapter = padapter;// pxmitbuf->buf_tag = XMITBUF_DATA;// pxmitbuf->pallocated_buf = rtw_zmalloc(MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ);// if (pxmitbuf->pallocated_buf == NULL)// {// return _FAIL;// }// // pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ);// #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)// pxmitbuf->phead = pxmitbuf->pbuf;// pxmitbuf->pend = pxmitbuf->pbuf + MAX_XMITBUF_SZ;// pxmitbuf->len = 0;// pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead;// #endif// // pxmitbuf->flags = XMIT_VO_QUEUE;// if (start == 0)// start = rtw_get_current_time();// pxmitframe = rtw_alloc_xmitframe(pxmitpriv);// if (rtw_get_passing_time_ms(start) > 2000) {// if (drop_cnt)// DBG_871X("DBG_TX_DROP_FRAME %s no more pxmitframe, drop_cnt:%u/n", __FUNCTION__, drop_cnt);// start = rtw_get_current_time();// drop_cnt = 0;// }// // if (pxmitframe == NULL) {// drop_cnt ++;// RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("rtw_xmit: no more pxmitframe/n"));// return -1;// }// res = update_txdesc(padapter, *ppkt, &txdesc);// TxDescGen(&txdesc, txdesc.txpktsize, 1);// pxmitframe->pxmitbuf = pxmitbuf;// pxmitframe->pkt = *ppkt;// // skb = *ppkt; // _rtw_memcpy(pxmitbuf->pdata, skb->data, skb->len);// sdio_write_port(pintfhdl, WLAN_TX_HIQ_DEVICE_ID, txdesc.txpktsize, pxmitbuf);// if (rtw_hal_xmit(padapter, pxmitframe) == _FALSE)// return 1; return 0;}
开发者ID:qiancuo,项目名称:Ameba_sdio_device,代码行数:72,
示例25: rtw_set_ps_modevoid rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps){ struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;#ifdef CONFIG_P2P struct wifidirect_info *pwdinfo = &( padapter->wdinfo );#endif //CONFIG_P2P#ifdef CONFIG_TDLS struct sta_priv *pstapriv = &padapter->stapriv; _irqL irqL; int i, j; _list *plist, *phead; struct sta_info *ptdls_sta;#endif //CONFIG_TDLS_func_enter_; RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, ("%s: PowerMode=%d Smart_PS=%d/n", __FUNCTION__, ps_mode, smart_ps)); if(ps_mode > PM_Card_Disable) { RT_TRACE(_module_rtl871x_pwrctrl_c_,_drv_err_,("ps_mode:%d error/n", ps_mode)); return; } if((pwrpriv->pwr_mode == ps_mode) && (pwrpriv->smart_ps == smart_ps)){ return; } //if(pwrpriv->pwr_mode == PS_MODE_ACTIVE) if(ps_mode == PS_MODE_ACTIVE) {#ifdef CONFIG_P2P_PS if(pwdinfo->opp_ps == 0)#endif // CONFIG_P2P_PS {#ifdef CONFIG_LPS_LCLK _enter_pwrlock(&pwrpriv->lock);#endif DBG_871X("rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save../n");#ifdef CONFIG_TDLS _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for(i=0; i< NUM_STA; i++) { phead = &(pstapriv->sta_hash[i]); plist = get_next(phead); while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { ptdls_sta = LIST_CONTAINOR(plist, struct sta_info, hash_list); if( ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE ) issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 0); plist = get_next(plist); } } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL);#endif //CONFIG_TDLS pwrpriv->smart_ps = smart_ps; pwrpriv->pwr_mode = ps_mode; rtw_set_rpwm(padapter, PS_STATE_S4);#ifdef CONFIG_LPS_LCLK{ u32 n = 0; while (pwrpriv->cpwm != PS_STATE_S4) { n++; if (n == 10000) break; if (padapter->bSurpriseRemoved == _TRUE) break; rtw_msleep_os(1); } if (n == 10000) printk(KERN_ERR "%s: wait CPWM to S4 too long! cpwm=0x%02x/n", __func__, pwrpriv->cpwm);}#endif rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); pwrpriv->bFwCurrentInPSMode = _FALSE;#ifdef CONFIG_LPS_LCLK _exit_pwrlock(&pwrpriv->lock);#endif } }
开发者ID:lwfinger,项目名称:rtl8192cu,代码行数:87,
示例26: rtw_set_802_11_bssidu8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid){ _irqL irqL; u8 status=_SUCCESS; u32 cur_time = 0; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; _func_enter_; RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_notice_, ("+rtw_set_802_11_bssid: bssid="MAC_FMT"/n", MAC_ARG(bssid) )); if ((bssid[0]==0x00 && bssid[1]==0x00 && bssid[2]==0x00 && bssid[3]==0x00 && bssid[4]==0x00 &&bssid[5]==0x00) || (bssid[0]==0xFF && bssid[1]==0xFF && bssid[2]==0xFF && bssid[3]==0xFF && bssid[4]==0xFF &&bssid[5]==0xFF)) { status = _FAIL; goto exit; } _enter_critical_bh(&pmlmepriv->lock, &irqL); DBG_871X("Set BSSID under fw_state=0x%08x/n", get_fwstate(pmlmepriv)); if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { goto handle_tkip_countermeasure; } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { goto release_mlme_lock; } if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) { RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ("set_bssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE/n")); if (_rtw_memcmp(&pmlmepriv->cur_network.network.MacAddress, bssid, ETH_ALEN) == _TRUE) { if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _FALSE) goto release_mlme_lock;//it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. } else { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("Set BSSID not the same bssid/n")); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_bssid="MAC_FMT"/n", MAC_ARG(bssid) )); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("cur_bssid="MAC_FMT"/n", MAC_ARG(pmlmepriv->cur_network.network.MacAddress) )); rtw_disassoc_cmd(padapter); if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_indicate_disconnect(padapter); rtw_free_assoc_resources(padapter, 1); if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } }handle_tkip_countermeasure: //should we add something here...?#ifdef PLATFORM_LINUX if (padapter->securitypriv.btkip_countermeasure == _TRUE) { cur_time = rtw_get_current_time(); if( (cur_time - padapter->securitypriv.btkip_countermeasure_time) > 60 * HZ ) { padapter->securitypriv.btkip_countermeasure = _FALSE; padapter->securitypriv.btkip_countermeasure_time = 0; } else { status = _FAIL; goto release_mlme_lock; } }#endif _rtw_memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN); pmlmepriv->assoc_by_bssid=_TRUE; if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { pmlmepriv->to_join = _TRUE; } else { status = rtw_do_join(padapter); }release_mlme_lock: _exit_critical_bh(&pmlmepriv->lock, &irqL); exit: RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("rtw_set_802_11_bssid: status=%d/n", status)); _func_exit_; return status;}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:98,
示例27: shutdown_cardstatic void shutdown_card(void){ u32 addr; u8 tmp8, cnt=0; if (NULL == g_test_adapter) { DBG_871X("%s: padapter==NULL/n", __FUNCTION__); return; }#ifdef CONFIG_FWLPS_IN_IPS LeaveAllPowerSaveMode(g_test_adapter);#endif // CONFIG_FWLPS_IN_IPS // Leave SDIO HCI Suspend addr = 0x10250086; rtw_write8(g_test_adapter, addr, 0); do { tmp8 = rtw_read8(g_test_adapter, addr); cnt++; DBG_871X(FUNC_ADPT_FMT ": polling SDIO_HSUS_CTRL(0x%x)=0x%x, cnt=%d/n", FUNC_ADPT_ARG(g_test_adapter), addr, tmp8, cnt); if (tmp8 & BIT(1)) break; if (cnt >= 100) { DBG_871X(FUNC_ADPT_FMT ": polling 0x%x[1]==1 FAIL!!/n", FUNC_ADPT_ARG(g_test_adapter), addr); break; } rtw_mdelay_os(10); } while (1); // unlock register I/O rtw_write8(g_test_adapter, 0x1C, 0); // enable power down function // 0x04[4] = 1 // 0x05[7] = 1 addr = 0x04; tmp8 = rtw_read8(g_test_adapter, addr); tmp8 |= BIT(4); rtw_write8(g_test_adapter, addr, tmp8); DBG_871X(FUNC_ADPT_FMT ": read after write 0x%x=0x%x/n", FUNC_ADPT_ARG(g_test_adapter), addr, rtw_read8(g_test_adapter, addr)); addr = 0x05; tmp8 = rtw_read8(g_test_adapter, addr); tmp8 |= BIT(7); rtw_write8(g_test_adapter, addr, tmp8); DBG_871X(FUNC_ADPT_FMT ": read after write 0x%x=0x%x/n", FUNC_ADPT_ARG(g_test_adapter), addr, rtw_read8(g_test_adapter, addr)); // lock register page0 0x0~0xB read/write rtw_write8(g_test_adapter, 0x1C, 0x0E); g_test_adapter->bSurpriseRemoved = _TRUE; DBG_871X(FUNC_ADPT_FMT ": bSurpriseRemoved=%d/n", FUNC_ADPT_ARG(g_test_adapter), g_test_adapter->bSurpriseRemoved);#ifdef CONFIG_CONCURRENT_MODE if (g_test_adapter->pbuddy_adapter) { PADAPTER pbuddy; pbuddy = g_test_adapter->pbuddy_adapter; pbuddy->bSurpriseRemoved = _TRUE; DBG_871X(FUNC_ADPT_FMT ": buddy(" ADPT_FMT ") bSurpriseRemoved=%d/n", FUNC_ADPT_ARG(g_test_adapter), ADPT_ARG(pbuddy), pbuddy->bSurpriseRemoved); }#endif // CONFIG_CONCURRENT_MODE}
开发者ID:1fans,项目名称:rtl8192eu-linux-driver,代码行数:74,
示例28: rtw_hal_inituint rtw_hal_init(_adapter *padapter) { uint status = _SUCCESS; struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); int i;#ifdef CONFIG_DUALMAC_CONCURRENT if(padapter->hw_init_completed == _TRUE) { DBG_871X("rtw_hal_init: hw_init_completed == _TRUE/n"); return status; } // before init mac0, driver must init mac1 first to avoid usb rx error. if((padapter->pbuddy_adapter != NULL) && (padapter->DualMacConcurrent == _TRUE) && (padapter->adapter_type == PRIMARY_ADAPTER)) { if(padapter->pbuddy_adapter->hw_init_completed == _TRUE) { DBG_871X("rtw_hal_init: pbuddy_adapter hw_init_completed == _TRUE/n"); } else { status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter); if(status == _SUCCESS){ padapter->pbuddy_adapter->hw_init_completed = _TRUE; } else{ padapter->pbuddy_adapter->hw_init_completed = _FALSE; RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail(pbuddy_adapter)/n")); DBG_871X("rtw_hal_init: hal__init fail(pbuddy_adapter)/n"); return status; } } }#endif status = padapter->HalFunc.hal_init(padapter); if(status == _SUCCESS){ rtw_hal_init_opmode(padapter); for (i = 0; i<dvobj->iface_nums; i++) dvobj->padapters[i]->hw_init_completed = _TRUE; if (padapter->registrypriv.notch_filter == 1) rtw_hal_notch_filter(padapter, 1); rtw_hal_reset_security_engine(padapter); for (i = 0; i<dvobj->iface_nums; i++) rtw_sec_restore_wep_key(dvobj->padapters[i]); rtw_led_control(padapter, LED_CTL_POWER_ON); init_hw_mlme_ext(padapter); } else{ for (i = 0; i<dvobj->iface_nums; i++) dvobj->padapters[i]->hw_init_completed = _FALSE; DBG_871X("rtw_hal_init: hal__init fail/n"); } RT_TRACE(_module_hal_init_c_,_drv_err_,("-rtl871x_hal_init:status=0x%x/n",status)); return status;}
开发者ID:codesnake,项目名称:kernel_amlogic_meson-common,代码行数:69,
注:本文中的DBG_871X函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ DBG_871X_LEVEL函数代码示例 C++ DBGV函数代码示例 |