diff options
Diffstat (limited to 'drivers/staging/rtl8192u/r819xU_cmdpkt.c')
-rw-r--r-- | drivers/staging/rtl8192u/r819xU_cmdpkt.c | 117 |
1 files changed, 57 insertions, 60 deletions
diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.c b/drivers/staging/rtl8192u/r819xU_cmdpkt.c index 545f49ec9c03..3e0731b04619 100644 --- a/drivers/staging/rtl8192u/r819xU_cmdpkt.c +++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.c @@ -30,16 +30,17 @@ rt_status SendTxCommandPacket(struct net_device *dev, void *pData, u32 DataLen) { struct r8192_priv *priv = ieee80211_priv(dev); struct sk_buff *skb; - cb_desc *tcb_desc; + struct cb_desc *tcb_desc; unsigned char *ptr_buf; /* Get TCB and local buffer from common pool. - (It is shared by CmdQ, MgntQ, and USB coalesce DataQ) */ + * (It is shared by CmdQ, MgntQ, and USB coalesce DataQ) + */ skb = dev_alloc_skb(USB_HWDESC_HEADER_LEN + DataLen + 4); if (!skb) return RT_STATUS_FAILURE; memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev)); - tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); + tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_NORMAL; tcb_desc->bLastIniPkt = 0; @@ -76,7 +77,8 @@ rt_status SendTxCommandPacket(struct net_device *dev, void *pData, u32 DataLen) * When Who Remark * 05/12/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_count_txstatistic(struct net_device *dev, cmpk_txfb_t *pstx_fb) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -87,8 +89,9 @@ static void cmpk_count_txstatistic(struct net_device *dev, cmpk_txfb_t *pstx_fb) (pu1Byte)(&rtState)); /* When RF is off, we should not count the packet for hw/sw synchronize - reason, ie. there may be a duration while sw switch is changed and - hw switch is being changed. */ + * reason, ie. there may be a duration while sw switch is changed and + * hw switch is being changed. + */ if (rtState == eRfOff) return; #endif @@ -98,8 +101,9 @@ static void cmpk_count_txstatistic(struct net_device *dev, cmpk_txfb_t *pstx_fb) return; #endif /* We can not know the packet length and transmit type: - broadcast or uni or multicast. So the relative statistics - must be collected in tx feedback info. */ + * broadcast or uni or multicast. So the relative statistics + * must be collected in tx feedback info. + */ if (pstx_fb->tok) { priv->stats.txfeedbackok++; priv->stats.txoktotal++; @@ -133,11 +137,8 @@ static void cmpk_count_txstatistic(struct net_device *dev, cmpk_txfb_t *pstx_fb) priv->stats.txretrycount += pstx_fb->retry_cnt; priv->stats.txfeedbackretry += pstx_fb->retry_cnt; - } - - /*----------------------------------------------------------------------------- * Function: cmpk_handle_tx_feedback() * @@ -158,7 +159,8 @@ static void cmpk_count_txstatistic(struct net_device *dev, cmpk_txfb_t *pstx_fb) * When Who Remark * 05/08/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_handle_tx_feedback(struct net_device *dev, u8 *pmsg) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -168,8 +170,9 @@ static void cmpk_handle_tx_feedback(struct net_device *dev, u8 *pmsg) /* 1. Extract TX feedback info from RFD to temp structure buffer. */ /* It seems that FW use big endian(MIPS) and DRV use little endian in - windows OS. So we have to read the content byte by byte or transfer - endian type before copy the message copy. */ + * windows OS. So we have to read the content byte by byte or transfer + * endian type before copy the message copy. + */ /* Use pointer to transfer structure memory. */ memcpy((u8 *)&rx_tx_fb, pmsg, sizeof(cmpk_txfb_t)); /* 2. Use tx feedback info to count TX statistics. */ @@ -177,8 +180,8 @@ static void cmpk_handle_tx_feedback(struct net_device *dev, u8 *pmsg) /* Comment previous method for TX statistic function. */ /* Collect info TX feedback packet to fill TCB. */ /* We can not know the packet length and transmit type: broadcast or uni - or multicast. */ - + * or multicast. + */ } static void cmdpkt_beacontimerinterrupt_819xusb(struct net_device *dev) @@ -187,9 +190,9 @@ static void cmdpkt_beacontimerinterrupt_819xusb(struct net_device *dev) u16 tx_rate; /* 87B have to S/W beacon for DTM encryption_cmn. */ if (priv->ieee80211->current_network.mode == IEEE_A || - priv->ieee80211->current_network.mode == IEEE_N_5G || - (priv->ieee80211->current_network.mode == IEEE_N_24G && - (!priv->ieee80211->pHTInfo->bCurSuppCCK))) { + priv->ieee80211->current_network.mode == IEEE_N_5G || + (priv->ieee80211->current_network.mode == IEEE_N_24G && + (!priv->ieee80211->pHTInfo->bCurSuppCCK))) { tx_rate = 60; DMESG("send beacon frame tx rate is 6Mbpm\n"); } else { @@ -198,13 +201,8 @@ static void cmdpkt_beacontimerinterrupt_819xusb(struct net_device *dev) } rtl819xusb_beacon_tx(dev, tx_rate); /* HW Beacon */ - - } - - - /*----------------------------------------------------------------------------- * Function: cmpk_handle_interrupt_status() * @@ -224,7 +222,8 @@ static void cmdpkt_beacontimerinterrupt_819xusb(struct net_device *dev) * When Who Remark * 05/12/2008 amy Add this for rtl8192 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_handle_interrupt_status(struct net_device *dev, u8 *pmsg) { cmpk_intr_sta_t rx_intr_status; /* */ @@ -234,15 +233,15 @@ static void cmpk_handle_interrupt_status(struct net_device *dev, u8 *pmsg) /* 1. Extract TX feedback info from RFD to temp structure buffer. */ /* It seems that FW use big endian(MIPS) and DRV use little endian in - windows OS. So we have to read the content byte by byte or transfer - endian type before copy the message copy. */ + * windows OS. So we have to read the content byte by byte or transfer + * endian type before copy the message copy. + */ rx_intr_status.length = pmsg[1]; if (rx_intr_status.length != (sizeof(cmpk_intr_sta_t) - 2)) { DMESG("cmpk_Handle_Interrupt_Status: wrong length!\n"); return; } - /* Statistics of beacon for ad-hoc mode. */ if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) { /* 2 maybe need endian transform? */ @@ -261,17 +260,13 @@ static void cmpk_handle_interrupt_status(struct net_device *dev, u8 *pmsg) if (rx_intr_status.interrupt_status & ISR_BcnTimerIntr) cmdpkt_beacontimerinterrupt_819xusb(dev); - } /* Other informations in interrupt status we need? */ - DMESG("<---- cmpk_handle_interrupt_status()\n"); - } - /*----------------------------------------------------------------------------- * Function: cmpk_handle_query_config_rx() * @@ -290,16 +285,17 @@ static void cmpk_handle_interrupt_status(struct net_device *dev, u8 *pmsg) * When Who Remark * 05/12/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_handle_query_config_rx(struct net_device *dev, u8 *pmsg) { cmpk_query_cfg_t rx_query_cfg; - /* 1. Extract TX feedback info from RFD to temp structure buffer. */ /* It seems that FW use big endian(MIPS) and DRV use little endian in - windows OS. So we have to read the content byte by byte or transfer - endian type before copy the message copy. */ + * windows OS. So we have to read the content byte by byte or transfer + * endian type before copy the message copy. + */ rx_query_cfg.cfg_action = (pmsg[4] & 0x80000000) >> 31; rx_query_cfg.cfg_type = (pmsg[4] & 0x60) >> 5; rx_query_cfg.cfg_size = (pmsg[4] & 0x18) >> 3; @@ -309,10 +305,8 @@ static void cmpk_handle_query_config_rx(struct net_device *dev, u8 *pmsg) (pmsg[10] << 8) | (pmsg[11] << 0); rx_query_cfg.mask = (pmsg[12] << 24) | (pmsg[13] << 16) | (pmsg[14] << 8) | (pmsg[15] << 0); - } - /*----------------------------------------------------------------------------- * Function: cmpk_count_tx_status() * @@ -329,7 +323,8 @@ static void cmpk_handle_query_config_rx(struct net_device *dev, u8 *pmsg) * When Who Remark * 05/12/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_count_tx_status(struct net_device *dev, cmpk_tx_status_t *pstx_status) { @@ -343,8 +338,9 @@ static void cmpk_count_tx_status(struct net_device *dev, (pu1Byte)(&rtState)); /* When RF is off, we should not count the packet for hw/sw synchronize - reason, ie. there may be a duration while sw switch is changed and - hw switch is being changed. */ + * reason, ie. there may be a duration while sw switch is changed and + * hw switch is being changed. + */ if (rtState == eRfOff) return; #endif @@ -374,8 +370,6 @@ static void cmpk_count_tx_status(struct net_device *dev, priv->stats.last_packet_rate = pstx_status->rate; } - - /*----------------------------------------------------------------------------- * Function: cmpk_handle_tx_status() * @@ -392,7 +386,8 @@ static void cmpk_count_tx_status(struct net_device *dev, * When Who Remark * 05/12/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_handle_tx_status(struct net_device *dev, u8 *pmsg) { cmpk_tx_status_t rx_tx_sts; @@ -400,10 +395,8 @@ static void cmpk_handle_tx_status(struct net_device *dev, u8 *pmsg) memcpy((void *)&rx_tx_sts, (void *)pmsg, sizeof(cmpk_tx_status_t)); /* 2. Use tx feedback info to count TX statistics. */ cmpk_count_tx_status(dev, &rx_tx_sts); - } - /*----------------------------------------------------------------------------- * Function: cmpk_handle_tx_rate_history() * @@ -419,7 +412,8 @@ static void cmpk_handle_tx_status(struct net_device *dev, u8 *pmsg) * When Who Remark * 05/12/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ static void cmpk_handle_tx_rate_history(struct net_device *dev, u8 *pmsg) { cmpk_tx_rahis_t *ptxrate; @@ -428,14 +422,14 @@ static void cmpk_handle_tx_rate_history(struct net_device *dev, u8 *pmsg) u32 *ptemp; struct r8192_priv *priv = ieee80211_priv(dev); - #ifdef ENABLE_PS pAdapter->HalFunc.GetHwRegHandler(pAdapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); /* When RF is off, we should not count the packet for hw/sw synchronize - reason, ie. there may be a duration while sw switch is changed and - hw switch is being changed. */ + * reason, ie. there may be a duration while sw switch is changed and + * hw switch is being changed. + */ if (rtState == eRfOff) return; #endif @@ -443,7 +437,8 @@ static void cmpk_handle_tx_rate_history(struct net_device *dev, u8 *pmsg) ptemp = (u32 *)pmsg; /* Do endian transfer to word alignment(16 bits) for windows system. - You must do different endian transfer for linux and MAC OS */ + * You must do different endian transfer for linux and MAC OS + */ for (i = 0; i < (length/4); i++) { u16 temp1, temp2; @@ -469,10 +464,8 @@ static void cmpk_handle_tx_rate_history(struct net_device *dev, u8 *pmsg) for (j = 0; j < 4; j++) priv->stats.txrate.ht_mcs[j][i] += ptxrate->ht_mcs[j][i]; } - } - /*----------------------------------------------------------------------------- * Function: cmpk_message_handle_rx() * @@ -492,7 +485,8 @@ static void cmpk_handle_tx_rate_history(struct net_device *dev, u8 *pmsg) * When Who Remark * 05/06/2008 amy Create Version 0 porting from windows code. * - *---------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------- + */ u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats *pstats) { @@ -502,7 +496,8 @@ u32 cmpk_message_handle_rx(struct net_device *dev, u8 *pcmd_buff; /* 0. Check inpt arguments. If is is a command queue message or - pointer is null. */ + * pointer is null. + */ if (pstats == NULL) return 0; /* This is not a command packet. */ @@ -516,10 +511,12 @@ u32 cmpk_message_handle_rx(struct net_device *dev, element_id = pcmd_buff[0]; /* 4. Check every received command packet content according to different - element type. Because FW may aggregate RX command packet to - minimize transmit time between DRV and FW.*/ + * element type. Because FW may aggregate RX command packet to + * minimize transmit time between DRV and FW. + */ /* Add a counter to prevent the lock in the loop from being held too - long */ + * long + */ while (total_length > 0 && exe_cnt++ < 100) { /* We support aggregation of different cmd in the same packet */ element_id = pcmd_buff[0]; @@ -547,7 +544,8 @@ u32 cmpk_message_handle_rx(struct net_device *dev, case RX_TX_PER_PKT_FEEDBACK: /* You must at lease add a switch case element here, - Otherwise, we will jump to default case. */ + * Otherwise, we will jump to default case. + */ cmd_length = CMPK_RX_TX_FB_SIZE; break; @@ -567,5 +565,4 @@ u32 cmpk_message_handle_rx(struct net_device *dev, pcmd_buff += cmd_length; } return 1; /* This is a command packet. */ - } |