staging: vt6656: free skbuff and relocate on bReAllocSkb == FALSE.
bReAllocSkb == FALSE is when data is not fed to user land. Free and relocate skbuff. Where data is not sent return = FALSE from RXbBulkInProcessData. This appears to reduce false errors when a reused skbuff has old data. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
87c629853e
commit
28044e0193
@ -617,7 +617,7 @@ RXbBulkInProcessData (
|
|||||||
//Discard beacon packet which channel is 0
|
//Discard beacon packet which channel is 0
|
||||||
if ( (WLAN_GET_FC_FSTYPE((pRxPacket->p80211Header->sA3.wFrameCtl)) == WLAN_FSTYPE_BEACON) ||
|
if ( (WLAN_GET_FC_FSTYPE((pRxPacket->p80211Header->sA3.wFrameCtl)) == WLAN_FSTYPE_BEACON) ||
|
||||||
(WLAN_GET_FC_FSTYPE((pRxPacket->p80211Header->sA3.wFrameCtl)) == WLAN_FSTYPE_PROBERESP) ) {
|
(WLAN_GET_FC_FSTYPE((pRxPacket->p80211Header->sA3.wFrameCtl)) == WLAN_FSTYPE_PROBERESP) ) {
|
||||||
return TRUE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pRxPacket->byRxChannel = (*pbyRxSts) >> 2;
|
pRxPacket->byRxChannel = (*pbyRxSts) >> 2;
|
||||||
@ -912,7 +912,7 @@ RXbBulkInProcessData (
|
|||||||
pDevice->skb->protocol = htons(ETH_P_802_2);
|
pDevice->skb->protocol = htons(ETH_P_802_2);
|
||||||
memset(pDevice->skb->cb, 0, sizeof(pDevice->skb->cb));
|
memset(pDevice->skb->cb, 0, sizeof(pDevice->skb->cb));
|
||||||
netif_rx(pDevice->skb);
|
netif_rx(pDevice->skb);
|
||||||
pDevice->skb = dev_alloc_skb((int)pDevice->rx_buf_sz);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1534,6 +1534,11 @@ RXvFreeRCB(
|
|||||||
ASSERT(!pRCB->Ref); // should be 0
|
ASSERT(!pRCB->Ref); // should be 0
|
||||||
ASSERT(pRCB->pDevice); // shouldn't be NULL
|
ASSERT(pRCB->pDevice); // shouldn't be NULL
|
||||||
|
|
||||||
|
if (bReAllocSkb == FALSE) {
|
||||||
|
kfree_skb(pRCB->skb);
|
||||||
|
bReAllocSkb = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (bReAllocSkb == TRUE) {
|
if (bReAllocSkb == TRUE) {
|
||||||
pRCB->skb = dev_alloc_skb((int)pDevice->rx_buf_sz);
|
pRCB->skb = dev_alloc_skb((int)pDevice->rx_buf_sz);
|
||||||
// todo error handling
|
// todo error handling
|
||||||
|
Loading…
Reference in New Issue
Block a user