• Krzysztof Hałasa's avatar
    E100: fix interaction with swiotlb on X86. · 6ff9c2e7
    Krzysztof Hałasa authored
    E100 places it's RX packet descriptors inside skb->data and uses them
    with bidirectional streaming DMA mapping. Data in descriptors is
    accessed simultaneously by the chip (writing status and size when
    a packet is received) and CPU (reading to check if the packet was
    received). This isn't a valid usage of PCI DMA API, which requires use
    of the coherent (consistent) memory for such purpose. Unfortunately e100
    chips working in "simplified" RX mode have to store received data
    directly after the descriptor. Fixing the driver to conform to the API
    would require using unsupported "flexible" RX mode or receiving data
    into a coherent memory and using CPU to copy it to network buffers.
    
    This patch, while not yet making the driver conform to the PCI DMA API,
    allows it to work correctly on X86 with swiotlb (while not breaking
    other architectures).
    Signed-off-by: default avatarKrzysztof Hałasa <khc@pm.waw.pl>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6ff9c2e7
e100.c 87.5 KB