3com 3c515: make it compile on 64-bit architectures
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 Sep 2021 18:14:47 +0000 (11:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 Sep 2021 18:14:47 +0000 (11:14 -0700)
commitdb71f8fb44956714249a526647c143bac5bb96a1
tree2e05c0d5d765025889862d1f29814d138e4ed898
parent5fe983d3f1a5b103fc00a24f9e0408302e60c39c
3com 3c515: make it compile on 64-bit architectures

This driver isn't enabled most places because of the ISA config
dependency, but alpha still has it.  And I think the 'Jensen' actually
did have an ISA slot.

However, it doesn't build cleanly, because the "Vortex bus master" code
just casts the skb->data pointer to 'int':

        outl((int) (skb->data), ioaddr + Wn7_MasterAddr);

which is all kinds of broken.  Even on a good old traditional PC/AT it
would be broken because the high bits will be random kernel address
bits, but presumably the hardware ignores those bits.  I mean, it's ISA.
We're talking 16MB dma limits. The "good old days".

Make the build happy with this kind of craziness by using the proper
isa_virt_to_bus() handling that the full bus master code uses anyway
(the Vortex bus mastering is a limited special case).

Who knows, this might even work.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/net/ethernet/3com/3c515.c