• Dean Jenkins's avatar
    asix: Continue processing URB if no RX netdev buffer · 6a570814
    Dean Jenkins authored
    Avoid a loss of synchronisation of the Ethernet Data header 32-bit
    word due to a failure to get a netdev socket buffer.
    
    The ASIX RX handling algorithm returned 0 upon a failure to get
    an allocation of a netdev socket buffer. This causes the URB
    processing to stop which potentially causes a loss of synchronisation
    with the Ethernet Data header 32-bit word. Therefore, subsequent
    processing of URBs may be rejected due to a loss of synchronisation.
    This may cause additional good Ethernet frames to be discarded
    along with outputting of synchronisation error messages.
    
    Implement a solution which checks whether a netdev socket buffer
    has been allocated before trying to copy the Ethernet frame into
    the netdev socket buffer. But continue to process the URB so that
    synchronisation is maintained. Therefore, only a single Ethernet
    frame is discarded when no netdev socket buffer is available.
    Signed-off-by: default avatarDean Jenkins <Dean_Jenkins@mentor.com>
    Signed-off-by: default avatarMark Craske <Mark_Craske@mentor.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6a570814
asix_common.c 16 KB