A broadcast address is also a multicast address so simplify test cases where possible. As suggested by Joe Perches. Signed-off-by: Charles Clément <caratorn@xxxxxxxxx> --- V3, I had inverted all the tests, confusing || with &&. Thanks Joe for your patience and reviews, I hope this one is finally OK! drivers/staging/vt6655/dpc.c | 2 +- drivers/staging/vt6655/rxtx.c | 26 ++++++++------------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/drivers/staging/vt6655/dpc.c b/drivers/staging/vt6655/dpc.c index 882c2f6..c7ffdea 100644 --- a/drivers/staging/vt6655/dpc.c +++ b/drivers/staging/vt6655/dpc.c @@ -443,7 +443,7 @@ device_receive_frame ( return FALSE; } - if (!is_multicast_ether_addr(pbyFrame) && !is_broadcast_ether_addr(pbyFrame)) { + if (!is_multicast_ether_addr(pbyFrame)) { if (WCTLbIsDuplicate(&(pDevice->sDupRxCache), (PS802_11Header) (skb->data + 4))) { pDevice->s802_11Counter.FrameDuplicateCount++; return FALSE; diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c index 8703635..802de27 100644 --- a/drivers/staging/vt6655/rxtx.c +++ b/drivers/staging/vt6655/rxtx.c @@ -1372,13 +1372,10 @@ s_cbFillTxBufHead(PSDevice pDevice, unsigned char byPktType, unsigned char *pbyT if ((pDevice->eOPMode == OP_MODE_ADHOC) || (pDevice->eOPMode == OP_MODE_AP)) { - if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0])) || - is_broadcast_ether_addr(&(psEthHeader->abyDstAddr[0]))) { - bNeedACK = FALSE; - } - else { + if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0]))) + bNeedACK = FALSE; + else bNeedACK = TRUE; - } bIsAdhoc = TRUE; } else { @@ -2091,8 +2088,7 @@ vGenerateFIFOHeader(PSDevice pDevice, unsigned char byPktType, unsigned char *pb if ((pDevice->eOPMode == OP_MODE_ADHOC) || (pDevice->eOPMode == OP_MODE_AP)) { - if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0])) || - is_broadcast_ether_addr(&(psEthHeader->abyDstAddr[0]))) { + if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0]))) { bNeedACK = FALSE; pTxBufHead->wFIFOCtl = pTxBufHead->wFIFOCtl & (~FIFOCTL_NEEDACK); } @@ -2392,10 +2388,8 @@ CMD_STATUS csMgmt_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket) { pTxBufHead->wTimeStamp = cpu_to_le16(DEFAULT_MGN_LIFETIME_RES_64us); - if (is_multicast_ether_addr(&(pPacket->p80211Header->sA3.abyAddr1[0])) || - is_broadcast_ether_addr(&(pPacket->p80211Header->sA3.abyAddr1[0]))) { + if (is_multicast_ether_addr(&(pPacket->p80211Header->sA3.abyAddr1[0]))) bNeedACK = FALSE; - } else { bNeedACK = TRUE; pTxBufHead->wFIFOCtl |= FIFOCTL_NEEDACK; @@ -2728,13 +2722,10 @@ cbGetFragCount ( if ((pDevice->eOPMode == OP_MODE_ADHOC) || (pDevice->eOPMode == OP_MODE_AP)) { - if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0])) || - is_broadcast_ether_addr(&(psEthHeader->abyDstAddr[0]))) { + if (is_multicast_ether_addr(&(psEthHeader->abyDstAddr[0]))) bNeedACK = FALSE; - } - else { + else bNeedACK = TRUE; - } } else { // MSDUs in Infra mode always need ACK @@ -2906,8 +2897,7 @@ vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb, unsigned char *pbMPDU, un pTxBufHead->wTimeStamp = cpu_to_le16(DEFAULT_MGN_LIFETIME_RES_64us); - if (is_multicast_ether_addr(&(p80211Header->sA3.abyAddr1[0])) || - is_broadcast_ether_addr(&(p80211Header->sA3.abyAddr1[0]))) { + if (is_multicast_ether_addr(&(p80211Header->sA3.abyAddr1[0]))) { bNeedACK = FALSE; if (pDevice->bEnableHostWEP) { uNodeIndex = 0; -- 1.7.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel