• Malcolm Priestley's avatar
    staging: vt6655: vnt_tx_packet Fix corrupted tx packets. · b5745290
    Malcolm Priestley authored
    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: default avatarMalcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b5745290
device_main.c 50.8 KB