static u16 s_vFillCTSHead(struct vnt_usb_send_context *tx_context,
u8 byPktType, union vnt_tx_data_head *head, u32 cbFrameLength,
- int bNeedAck, u16 wCurrentRate, u8 byFBOption);
+ int bNeedAck, u16 wCurrentRate);
static u16 s_vFillRTSHead(struct vnt_usb_send_context *tx_context, u8 byPktType,
union vnt_tx_data_head *head, u32 cbFrameLength, int bNeedAck,
- u16 wCurrentRate, u8 byFBOption);
+ u16 wCurrentRate);
static __le16 s_uGetDataDuration(struct vnt_private *pDevice,
u8 byPktType, int bNeedAck);
static __le16 s_uGetRTSCTSDuration(struct vnt_private *pDevice,
u8 byDurType, u32 cbFrameLength, u8 byPktType, u16 wRate,
- int bNeedAck, u8 byFBOption);
+ int bNeedAck);
static struct vnt_usb_send_context
*s_vGetFreeContext(struct vnt_private *priv)
//byFreqType: 0=>5GHZ 1=>2.4GHZ
static __le16 s_uGetRTSCTSDuration(struct vnt_private *pDevice, u8 byDurType,
- u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck,
- u8 byFBOption)
+ u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck)
{
u32 uCTSTime = 0, uDurTime = 0;
static u16 vnt_rxtx_rts_g_head(struct vnt_usb_send_context *tx_context,
struct vnt_rts_g *buf, u8 pkt_type, u32 frame_len, int need_ack,
- u16 current_rate, u8 fb_option)
+ u16 current_rate)
{
struct vnt_private *priv = tx_context->priv;
u16 rts_frame_len = 20;
priv->byTopOFDMBasicRate, pkt_type, &buf->a);
buf->duration_bb = s_uGetRTSCTSDuration(priv, RTSDUR_BB, frame_len,
- PK_TYPE_11B, priv->byTopCCKBasicRate, need_ack, fb_option);
+ PK_TYPE_11B, priv->byTopCCKBasicRate, need_ack);
buf->duration_aa = s_uGetRTSCTSDuration(priv, RTSDUR_AA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
buf->duration_ba = s_uGetRTSCTSDuration(priv, RTSDUR_BA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
vnt_fill_ieee80211_rts(tx_context, &buf->data, buf->duration_aa);
static u16 vnt_rxtx_rts_g_fb_head(struct vnt_usb_send_context *tx_context,
struct vnt_rts_g_fb *buf, u8 pkt_type, u32 frame_len, int need_ack,
- u16 current_rate, u8 fb_option)
+ u16 current_rate)
{
struct vnt_private *priv = tx_context->priv;
u16 rts_frame_len = 20;
buf->duration_bb = s_uGetRTSCTSDuration(priv, RTSDUR_BB, frame_len,
- PK_TYPE_11B, priv->byTopCCKBasicRate, need_ack, fb_option);
+ PK_TYPE_11B, priv->byTopCCKBasicRate, need_ack);
buf->duration_aa = s_uGetRTSCTSDuration(priv, RTSDUR_AA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
buf->duration_ba = s_uGetRTSCTSDuration(priv, RTSDUR_BA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
buf->rts_duration_ba_f0 = s_uGetRTSCTSDuration(priv, RTSDUR_BA_F0,
- frame_len, pkt_type, priv->tx_rate_fb0, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb0, need_ack);
buf->rts_duration_aa_f0 = s_uGetRTSCTSDuration(priv, RTSDUR_AA_F0,
- frame_len, pkt_type, priv->tx_rate_fb0, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb0, need_ack);
buf->rts_duration_ba_f1 = s_uGetRTSCTSDuration(priv, RTSDUR_BA_F1,
- frame_len, pkt_type, priv->tx_rate_fb1, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb1, need_ack);
buf->rts_duration_aa_f1 = s_uGetRTSCTSDuration(priv, RTSDUR_AA_F1,
- frame_len, pkt_type, priv->tx_rate_fb1, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb1, need_ack);
vnt_fill_ieee80211_rts(tx_context, &buf->data, buf->duration_aa);
static u16 vnt_rxtx_rts_ab_head(struct vnt_usb_send_context *tx_context,
struct vnt_rts_ab *buf, u8 pkt_type, u32 frame_len, int need_ack,
- u16 current_rate, u8 fb_option)
+ u16 current_rate)
{
struct vnt_private *priv = tx_context->priv;
u16 rts_frame_len = 20;
priv->byTopOFDMBasicRate, pkt_type, &buf->ab);
buf->duration = s_uGetRTSCTSDuration(priv, RTSDUR_AA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
vnt_fill_ieee80211_rts(tx_context, &buf->data, buf->duration);
static u16 vnt_rxtx_rts_a_fb_head(struct vnt_usb_send_context *tx_context,
struct vnt_rts_a_fb *buf, u8 pkt_type, u32 frame_len, int need_ack,
- u16 current_rate, u8 fb_option)
+ u16 current_rate)
{
struct vnt_private *priv = tx_context->priv;
u16 rts_frame_len = 20;
priv->byTopOFDMBasicRate, pkt_type, &buf->a);
buf->duration = s_uGetRTSCTSDuration(priv, RTSDUR_AA, frame_len,
- pkt_type, current_rate, need_ack, fb_option);
+ pkt_type, current_rate, need_ack);
buf->rts_duration_f0 = s_uGetRTSCTSDuration(priv, RTSDUR_AA_F0,
- frame_len, pkt_type, priv->tx_rate_fb0, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb0, need_ack);
buf->rts_duration_f1 = s_uGetRTSCTSDuration(priv, RTSDUR_AA_F1,
- frame_len, pkt_type, priv->tx_rate_fb1, need_ack, fb_option);
+ frame_len, pkt_type, priv->tx_rate_fb1, need_ack);
vnt_fill_ieee80211_rts(tx_context, &buf->data, buf->duration);
static u16 s_vFillRTSHead(struct vnt_usb_send_context *tx_context, u8 byPktType,
union vnt_tx_data_head *head, u32 cbFrameLength, int bNeedAck,
- u16 wCurrentRate, u8 byFBOption)
+ u16 wCurrentRate)
{
if (!head)
if (!tx_context->fb_option)
return vnt_rxtx_rts_g_head(tx_context, &head->rts_g,
byPktType, cbFrameLength,
- bNeedAck, wCurrentRate, byFBOption);
+ bNeedAck, wCurrentRate);
else
return vnt_rxtx_rts_g_fb_head(tx_context,
&head->rts_g_fb, byPktType,
- cbFrameLength, bNeedAck, wCurrentRate,
- byFBOption);
+ cbFrameLength, bNeedAck, wCurrentRate);
break;
case PK_TYPE_11A:
if (tx_context->fb_option) {
return vnt_rxtx_rts_a_fb_head(tx_context,
&head->rts_a_fb, byPktType,
- cbFrameLength, bNeedAck, wCurrentRate,
- byFBOption);
+ cbFrameLength, bNeedAck, wCurrentRate);
break;
}
case PK_TYPE_11B:
return vnt_rxtx_rts_ab_head(tx_context, &head->rts_ab,
byPktType, cbFrameLength, bNeedAck,
- wCurrentRate, byFBOption);
+ wCurrentRate);
}
return 0;
static u16 s_vFillCTSHead(struct vnt_usb_send_context *tx_context,
u8 byPktType, union vnt_tx_data_head *head, u32 cbFrameLength,
- int bNeedAck, u16 wCurrentRate, u8 byFBOption)
+ int bNeedAck, u16 wCurrentRate)
{
struct vnt_private *pDevice = tx_context->priv;
u32 uCTSFrameLen = 14;
pDevice->byTopCCKBasicRate, PK_TYPE_11B, &pBuf->b);
pBuf->duration_ba = s_uGetRTSCTSDuration(pDevice, CTSDUR_BA,
cbFrameLength, byPktType,
- wCurrentRate, bNeedAck, byFBOption);
+ wCurrentRate, bNeedAck);
/* Get CTSDuration_ba_f0 */
pBuf->cts_duration_ba_f0 = s_uGetRTSCTSDuration(pDevice,
CTSDUR_BA_F0, cbFrameLength, byPktType,
- pDevice->tx_rate_fb0, bNeedAck, byFBOption);
+ pDevice->tx_rate_fb0, bNeedAck);
/* Get CTSDuration_ba_f1 */
pBuf->cts_duration_ba_f1 = s_uGetRTSCTSDuration(pDevice,
CTSDUR_BA_F1, cbFrameLength, byPktType,
- pDevice->tx_rate_fb1, bNeedAck, byFBOption);
+ pDevice->tx_rate_fb1, bNeedAck);
/* Get CTS Frame body */
pBuf->data.duration = pBuf->duration_ba;
pBuf->data.frame_control =
/* Get CTSDuration_ba */
pBuf->duration_ba = s_uGetRTSCTSDuration(pDevice,
CTSDUR_BA, cbFrameLength, byPktType,
- wCurrentRate, bNeedAck, byFBOption);
+ wCurrentRate, bNeedAck);
/*Get CTS Frame body*/
pBuf->data.duration = pBuf->duration_ba;
pBuf->data.frame_control =
struct vnt_private *pDevice = tx_context->priv;
struct vnt_tx_fifo_head *pFifoHead = &tx_buffer->fifo_head;
union vnt_tx_data_head *head = NULL;
- u16 wFifoCtl;
- u8 byFBOption = AUTO_FB_NONE;
pFifoHead->current_rate = cpu_to_le16(wCurrentRate);
- wFifoCtl = pFifoHead->wFIFOCtl;
-
- if (wFifoCtl & FIFOCTL_AUTO_FB_0)
- byFBOption = AUTO_FB_0;
- else if (wFifoCtl & FIFOCTL_AUTO_FB_1)
- byFBOption = AUTO_FB_1;
if (byPktType == PK_TYPE_11GB || byPktType == PK_TYPE_11GA) {
if (need_rts) {
/* Fill RTS */
return s_vFillRTSHead(tx_context, byPktType, head,
cbFrameSize, bNeedACK,
- wCurrentRate, byFBOption);
+ wCurrentRate);
} else {
struct vnt_rrv_time_cts *pBuf = &tx_buffer->
/* Fill CTS */
return s_vFillCTSHead(tx_context, byPktType,
- head, cbFrameSize, bNeedACK, wCurrentRate,
- byFBOption);
+ head, cbFrameSize, bNeedACK, wCurrentRate);
}
} else if (byPktType == PK_TYPE_11A) {
if (need_mic) {
/* Fill RTS */
return s_vFillRTSHead(tx_context, byPktType, head,
cbFrameSize, bNeedACK,
- wCurrentRate, byFBOption);
+ wCurrentRate);
} else {
struct vnt_rrv_time_ab *pBuf = &tx_buffer->
tx_head.tx_ab.ab;
/* Fill RTS */
return s_vFillRTSHead(tx_context, byPktType, head,
cbFrameSize, bNeedACK,
- wCurrentRate, byFBOption);
+ wCurrentRate);
} else {
struct vnt_rrv_time_ab *pBuf = &tx_buffer->
tx_head.tx_ab.ab;