STAGING: rtl8192u/ieee80211: fix checkpatch error about pointer position in rtl819x_BAProc.c

This patch fixes the pointer position in rtl819x_BAProc.c
to meet the kernel coding style conventions.

Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Xenia Ragiadakou 2013-05-12 02:08:27 +03:00 committed by Greg Kroah-Hartman
parent 5d279df167
commit 0af6c0cb64
1 changed files with 53 additions and 53 deletions

View File

@ -13,7 +13,7 @@
* u16 Time //indicate time delay. * u16 Time //indicate time delay.
* output: none * output: none
********************************************************************************************************************/ ********************************************************************************************************************/
void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time) void ActivateBAEntry(struct ieee80211_device *ieee, PBA_RECORD pBA, u16 Time)
{ {
pBA->bValid = true; pBA->bValid = true;
if(Time != 0) if(Time != 0)
@ -25,7 +25,7 @@ void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time)
* input: PBA_RECORD pBA //BA entry to be disabled * input: PBA_RECORD pBA //BA entry to be disabled
* output: none * output: none
********************************************************************************************************************/ ********************************************************************************************************************/
void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA) void DeActivateBAEntry( struct ieee80211_device *ieee, PBA_RECORD pBA)
{ {
pBA->bValid = false; pBA->bValid = false;
del_timer_sync(&pBA->Timer); del_timer_sync(&pBA->Timer);
@ -37,7 +37,7 @@ void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA)
* output: none * output: none
* notice: As PTX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME * notice: As PTX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME
********************************************************************************************************************/ ********************************************************************************************************************/
u8 TxTsDeleteBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTxTs) u8 TxTsDeleteBA( struct ieee80211_device *ieee, PTX_TS_RECORD pTxTs)
{ {
PBA_RECORD pAdmittedBa = &pTxTs->TxAdmittedBARecord; //These two BA entries must exist in TS structure PBA_RECORD pAdmittedBa = &pTxTs->TxAdmittedBARecord; //These two BA entries must exist in TS structure
PBA_RECORD pPendingBa = &pTxTs->TxPendingBARecord; PBA_RECORD pPendingBa = &pTxTs->TxPendingBARecord;
@ -67,7 +67,7 @@ u8 TxTsDeleteBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTxTs)
* output: none * output: none
* notice: As PRX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME, same with above * notice: As PRX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME, same with above
********************************************************************************************************************/ ********************************************************************************************************************/
u8 RxTsDeleteBA( struct ieee80211_device* ieee, PRX_TS_RECORD pRxTs) u8 RxTsDeleteBA( struct ieee80211_device *ieee, PRX_TS_RECORD pRxTs)
{ {
PBA_RECORD pBa = &pRxTs->RxAdmittedBARecord; PBA_RECORD pBa = &pRxTs->RxAdmittedBARecord;
u8 bSendDELBA = false; u8 bSendDELBA = false;
@ -105,11 +105,11 @@ void ResetBaEntry( PBA_RECORD pBA)
* output: none * output: none
* return: sk_buff* skb //return constructed skb to xmit * return: sk_buff* skb //return constructed skb to xmit
*******************************************************************************************************************************/ *******************************************************************************************************************************/
static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, PBA_RECORD pBA, u16 StatusCode, u8 type) static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, PBA_RECORD pBA, u16 StatusCode, u8 type)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
struct ieee80211_hdr_3addr* BAReq = NULL; struct ieee80211_hdr_3addr *BAReq = NULL;
u8* tag = NULL; u8 *tag = NULL;
u16 tmp = 0; u16 tmp = 0;
u16 len = ieee->tx_headroom + 9; u16 len = ieee->tx_headroom + 9;
//category(1) + action field(1) + Dialog Token(1) + BA Parameter Set(2) + BA Timeout Value(2) + BA Start SeqCtrl(2)(or StatusCode(2)) //category(1) + action field(1) + Dialog Token(1) + BA Parameter Set(2) + BA Timeout Value(2) + BA Start SeqCtrl(2)(or StatusCode(2))
@ -139,7 +139,7 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P
BAReq->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame BAReq->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame
//tag += sizeof( struct ieee80211_hdr_3addr); //move to action field //tag += sizeof( struct ieee80211_hdr_3addr); //move to action field
tag = (u8*)skb_put(skb, 9); tag = (u8 *)skb_put(skb, 9);
*tag ++= ACT_CAT_BA; *tag ++= ACT_CAT_BA;
*tag ++= type; *tag ++= type;
// Dialog Token // Dialog Token
@ -150,22 +150,22 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P
// Status Code // Status Code
printk("=====>to send ADDBARSP\n"); printk("=====>to send ADDBARSP\n");
tmp = cpu_to_le16(StatusCode); tmp = cpu_to_le16(StatusCode);
memcpy(tag, (u8*)&tmp, 2); memcpy(tag, (u8 *)&tmp, 2);
tag += 2; tag += 2;
} }
// BA Parameter Set // BA Parameter Set
tmp = cpu_to_le16(pBA->BaParamSet.shortData); tmp = cpu_to_le16(pBA->BaParamSet.shortData);
memcpy(tag, (u8*)&tmp, 2); memcpy(tag, (u8 *)&tmp, 2);
tag += 2; tag += 2;
// BA Timeout Value // BA Timeout Value
tmp = cpu_to_le16(pBA->BaTimeoutValue); tmp = cpu_to_le16(pBA->BaTimeoutValue);
memcpy(tag, (u8*)&tmp, 2); memcpy(tag, (u8 *)&tmp, 2);
tag += 2; tag += 2;
if (ACT_ADDBAREQ == type) if (ACT_ADDBAREQ == type)
{ {
// BA Start SeqCtrl // BA Start SeqCtrl
memcpy(tag,(u8*)&(pBA->BaStartSeqCtrl), 2); memcpy(tag,(u8 *)&(pBA->BaStartSeqCtrl), 2);
tag += 2; tag += 2;
} }
@ -184,9 +184,9 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P
* output: none * output: none
* return: sk_buff* skb //return constructed skb to xmit * return: sk_buff* skb //return constructed skb to xmit
********************************************************************************************************************/ ********************************************************************************************************************/
static struct sk_buff* ieee80211_DELBA( static struct sk_buff *ieee80211_DELBA(
struct ieee80211_device* ieee, struct ieee80211_device *ieee,
u8* dst, u8 *dst,
PBA_RECORD pBA, PBA_RECORD pBA,
TR_SELECT TxRxSelect, TR_SELECT TxRxSelect,
u16 ReasonCode u16 ReasonCode
@ -194,8 +194,8 @@ static struct sk_buff* ieee80211_DELBA(
{ {
DELBA_PARAM_SET DelbaParamSet; DELBA_PARAM_SET DelbaParamSet;
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
struct ieee80211_hdr_3addr* Delba = NULL; struct ieee80211_hdr_3addr *Delba = NULL;
u8* tag = NULL; u8 *tag = NULL;
u16 tmp = 0; u16 tmp = 0;
//len = head len + DELBA Parameter Set(2) + Reason Code(2) //len = head len + DELBA Parameter Set(2) + Reason Code(2)
u16 len = 6 + ieee->tx_headroom; u16 len = 6 + ieee->tx_headroom;
@ -224,18 +224,18 @@ static struct sk_buff* ieee80211_DELBA(
memcpy(Delba->addr3, ieee->current_network.bssid, ETH_ALEN); memcpy(Delba->addr3, ieee->current_network.bssid, ETH_ALEN);
Delba->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame Delba->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame
tag = (u8*)skb_put(skb, 6); tag = (u8 *)skb_put(skb, 6);
*tag ++= ACT_CAT_BA; *tag ++= ACT_CAT_BA;
*tag ++= ACT_DELBA; *tag ++= ACT_DELBA;
// DELBA Parameter Set // DELBA Parameter Set
tmp = cpu_to_le16(DelbaParamSet.shortData); tmp = cpu_to_le16(DelbaParamSet.shortData);
memcpy(tag, (u8*)&tmp, 2); memcpy(tag, (u8 *)&tmp, 2);
tag += 2; tag += 2;
// Reason Code // Reason Code
tmp = cpu_to_le16(ReasonCode); tmp = cpu_to_le16(ReasonCode);
memcpy(tag, (u8*)&tmp, 2); memcpy(tag, (u8 *)&tmp, 2);
tag += 2; tag += 2;
IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
@ -251,7 +251,7 @@ static struct sk_buff* ieee80211_DELBA(
* output: none * output: none
* notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
********************************************************************************************************************/ ********************************************************************************************************************/
void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA) void ieee80211_send_ADDBAReq(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
skb = ieee80211_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); //construct ACT_ADDBAREQ frames so set statuscode zero. skb = ieee80211_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); //construct ACT_ADDBAREQ frames so set statuscode zero.
@ -278,7 +278,7 @@ void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD
* output: none * output: none
* notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
********************************************************************************************************************/ ********************************************************************************************************************/
void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, u16 StatusCode) void ieee80211_send_ADDBARsp(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA, u16 StatusCode)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
skb = ieee80211_ADDBA(ieee, dst, pBA, StatusCode, ACT_ADDBARSP); //construct ACT_ADDBARSP frames skb = ieee80211_ADDBA(ieee, dst, pBA, StatusCode, ACT_ADDBARSP); //construct ACT_ADDBARSP frames
@ -305,7 +305,7 @@ void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD
* notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does
********************************************************************************************************************/ ********************************************************************************************************************/
void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode) void ieee80211_send_DELBA(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
skb = ieee80211_DELBA(ieee, dst, pBA, TxRxSelect, ReasonCode); //construct ACT_ADDBARSP frames skb = ieee80211_DELBA(ieee, dst, pBA, TxRxSelect, ReasonCode); //construct ACT_ADDBARSP frames
@ -327,14 +327,14 @@ void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA
* return: 0(pass), other(fail) * return: 0(pass), other(fail)
* notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support.
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb) int ieee80211_rx_ADDBAReq( struct ieee80211_device *ieee, struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr* req = NULL; struct ieee80211_hdr_3addr *req = NULL;
u16 rc = 0; u16 rc = 0;
u8 * dst = NULL, *pDialogToken = NULL, *tag = NULL; u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL;
PBA_RECORD pBA = NULL; PBA_RECORD pBA = NULL;
PBA_PARAM_SET pBaParamSet = NULL; PBA_PARAM_SET pBaParamSet = NULL;
u16* pBaTimeoutVal = NULL; u16 *pBaTimeoutVal = NULL;
PSEQUENCE_CONTROL pBaStartSeqCtrl = NULL; PSEQUENCE_CONTROL pBaStartSeqCtrl = NULL;
PRX_TS_RECORD pTS = NULL; PRX_TS_RECORD pTS = NULL;
@ -346,13 +346,13 @@ int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb)
IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
req = ( struct ieee80211_hdr_3addr*) skb->data; req = ( struct ieee80211_hdr_3addr *) skb->data;
tag = (u8*)req; tag = (u8 *)req;
dst = (u8*)(&req->addr2[0]); dst = (u8 *)(&req->addr2[0]);
tag += sizeof( struct ieee80211_hdr_3addr); tag += sizeof( struct ieee80211_hdr_3addr);
pDialogToken = tag + 2; //category+action pDialogToken = tag + 2; //category+action
pBaParamSet = (PBA_PARAM_SET)(tag + 3); //+DialogToken pBaParamSet = (PBA_PARAM_SET)(tag + 3); //+DialogToken
pBaTimeoutVal = (u16*)(tag + 5); pBaTimeoutVal = (u16 *)(tag + 5);
pBaStartSeqCtrl = (PSEQUENCE_CONTROL)(req + 7); pBaStartSeqCtrl = (PSEQUENCE_CONTROL)(req + 7);
printk("====================>rx ADDBAREQ from :%pM\n", dst); printk("====================>rx ADDBAREQ from :%pM\n", dst);
@ -369,7 +369,7 @@ int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb)
// If there is no matched TS, reject the ADDBA request. // If there is no matched TS, reject the ADDBA request.
if( !GetTs( if( !GetTs(
ieee, ieee,
(PTS_COMMON_INFO*)(&pTS), (PTS_COMMON_INFO *)(&pTS),
dst, dst,
(u8)(pBaParamSet->field.TID), (u8)(pBaParamSet->field.TID),
RX_DIR, RX_DIR,
@ -427,13 +427,13 @@ OnADDBAReq_Fail:
* return: 0(pass), other(fail) * return: 0(pass), other(fail)
* notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support.
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb) int ieee80211_rx_ADDBARsp( struct ieee80211_device *ieee, struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr* rsp = NULL; struct ieee80211_hdr_3addr *rsp = NULL;
PBA_RECORD pPendingBA, pAdmittedBA; PBA_RECORD pPendingBA, pAdmittedBA;
PTX_TS_RECORD pTS = NULL; PTX_TS_RECORD pTS = NULL;
u8* dst = NULL, *pDialogToken = NULL, *tag = NULL; u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL;
u16* pStatusCode = NULL, *pBaTimeoutVal = NULL; u16 *pStatusCode = NULL, *pBaTimeoutVal = NULL;
PBA_PARAM_SET pBaParamSet = NULL; PBA_PARAM_SET pBaParamSet = NULL;
u16 ReasonCode; u16 ReasonCode;
@ -442,14 +442,14 @@ int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb)
IEEE80211_DEBUG(IEEE80211_DL_ERR, " Invalid skb len in BARSP(%d / %zu)\n", skb->len, (sizeof( struct ieee80211_hdr_3addr) + 9)); IEEE80211_DEBUG(IEEE80211_DL_ERR, " Invalid skb len in BARSP(%d / %zu)\n", skb->len, (sizeof( struct ieee80211_hdr_3addr) + 9));
return -1; return -1;
} }
rsp = ( struct ieee80211_hdr_3addr*)skb->data; rsp = ( struct ieee80211_hdr_3addr *)skb->data;
tag = (u8*)rsp; tag = (u8 *)rsp;
dst = (u8*)(&rsp->addr2[0]); dst = (u8 *)(&rsp->addr2[0]);
tag += sizeof( struct ieee80211_hdr_3addr); tag += sizeof( struct ieee80211_hdr_3addr);
pDialogToken = tag + 2; pDialogToken = tag + 2;
pStatusCode = (u16*)(tag + 3); pStatusCode = (u16 *)(tag + 3);
pBaParamSet = (PBA_PARAM_SET)(tag + 5); pBaParamSet = (PBA_PARAM_SET)(tag + 5);
pBaTimeoutVal = (u16*)(tag + 7); pBaTimeoutVal = (u16 *)(tag + 7);
// Check the capability // Check the capability
// Since we can always receive A-MPDU, we just check if it is under HT mode. // Since we can always receive A-MPDU, we just check if it is under HT mode.
@ -469,7 +469,7 @@ int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb)
// //
if (!GetTs( if (!GetTs(
ieee, ieee,
(PTS_COMMON_INFO*)(&pTS), (PTS_COMMON_INFO *)(&pTS),
dst, dst,
(u8)(pBaParamSet->field.TID), (u8)(pBaParamSet->field.TID),
TX_DIR, TX_DIR,
@ -560,12 +560,12 @@ OnADDBARsp_Reject:
* return: 0(pass), other(fail) * return: 0(pass), other(fail)
* notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support.
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) int ieee80211_rx_DELBA(struct ieee80211_device *ieee,struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr* delba = NULL; struct ieee80211_hdr_3addr *delba = NULL;
PDELBA_PARAM_SET pDelBaParamSet = NULL; PDELBA_PARAM_SET pDelBaParamSet = NULL;
u16* pReasonCode = NULL; u16 *pReasonCode = NULL;
u8* dst = NULL; u8 *dst = NULL;
if (skb->len < sizeof( struct ieee80211_hdr_3addr) + 6) if (skb->len < sizeof( struct ieee80211_hdr_3addr) + 6)
{ {
@ -581,11 +581,11 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb)
} }
IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
delba = ( struct ieee80211_hdr_3addr*)skb->data; delba = ( struct ieee80211_hdr_3addr *)skb->data;
dst = (u8*)(&delba->addr2[0]); dst = (u8 *)(&delba->addr2[0]);
delba += sizeof( struct ieee80211_hdr_3addr); delba += sizeof( struct ieee80211_hdr_3addr);
pDelBaParamSet = (PDELBA_PARAM_SET)(delba+2); pDelBaParamSet = (PDELBA_PARAM_SET)(delba+2);
pReasonCode = (u16*)(delba+4); pReasonCode = (u16 *)(delba+4);
if(pDelBaParamSet->field.Initiator == 1) if(pDelBaParamSet->field.Initiator == 1)
{ {
@ -593,7 +593,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb)
if( !GetTs( if( !GetTs(
ieee, ieee,
(PTS_COMMON_INFO*)&pRxTs, (PTS_COMMON_INFO *)&pRxTs,
dst, dst,
(u8)pDelBaParamSet->field.TID, (u8)pDelBaParamSet->field.TID,
RX_DIR, RX_DIR,
@ -611,7 +611,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb)
if(!GetTs( if(!GetTs(
ieee, ieee,
(PTS_COMMON_INFO*)&pTxTs, (PTS_COMMON_INFO *)&pTxTs,
dst, dst,
(u8)pDelBaParamSet->field.TID, (u8)pDelBaParamSet->field.TID,
TX_DIR, TX_DIR,
@ -636,7 +636,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb)
// //
void void
TsInitAddBA( TsInitAddBA(
struct ieee80211_device* ieee, struct ieee80211_device *ieee,
PTX_TS_RECORD pTS, PTX_TS_RECORD pTS,
u8 Policy, u8 Policy,
u8 bOverwritePending u8 bOverwritePending
@ -665,7 +665,7 @@ TsInitAddBA(
} }
void void
TsInitDelBA( struct ieee80211_device* ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect) TsInitDelBA( struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect)
{ {
if(TxRxSelect == TX_DIR) if(TxRxSelect == TX_DIR)