staging: vt6655: vnt_tx_packet Fix corrupted tx packets.
authorMalcolm Priestley <tvboxspy@gmail.com>
Sun, 21 Dec 2014 12:56:34 +0000 (12:56 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 13 Jan 2015 03:49:47 +0000 (19:49 -0800)
commitb5745290af06a621aaddfd636bab4f08432d0492
treecc99212cedea7b790504c2d9c9605082d5265fdf
parent84c00afef41a2172b7290f3d75e082e6dd609a58
staging: vt6655: vnt_tx_packet Fix corrupted tx packets.

Move PSTxDesc->m_td1TD1 to inside spin locks.

if m_td1TD1.byTCR has TCR_EDP and TCR_STP are set, the interrupt handler will
try and complete the buffer before it is completed. Usually on the tail
of a burst of tx packets.

This results in a partially completed packet being transmitted or worse
sitll dead lock when skb is freed by the interrupt handler.

Set head_td->m_td1TD1.byTCR to 0 in first lock of vnt_tx_packet to stop
interrupt handler completing the buffer. Move Set TSR1 & ReqCount in
s_cbFillTxBufHead to the second lock.

cbReqCount is carried to the second lock in pTDInfo->dwReqCount without
the padding removed.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vt6655/device_main.c
drivers/staging/vt6655/rxtx.c