Skip to content

Commit

Permalink
typhoon: fix incorrect use of smp_wmb()
Browse files Browse the repository at this point in the history
The typhoon driver was incorrectly using smp_wmb() to order memory
accesses against IO to the NIC in a few instances. Use wmb() instead,
which is required to actually order between memory types.

Signed-off-by: David Dillow <dave@thedillows.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David Dillow authored and David S. Miller committed Mar 5, 2010
1 parent d17792e commit 5fe88ea
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/net/typhoon.c
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ typhoon_hello(struct typhoon *tp)
typhoon_inc_cmd_index(&ring->lastWrite, 1);

INIT_COMMAND_NO_RESPONSE(cmd, TYPHOON_CMD_HELLO_RESP);
smp_wmb();
wmb();
iowrite32(ring->lastWrite, tp->ioaddr + TYPHOON_REG_CMD_READY);
spin_unlock(&tp->command_lock);
}
Expand Down Expand Up @@ -1311,13 +1311,15 @@ typhoon_init_interface(struct typhoon *tp)

tp->txlo_dma_addr = le32_to_cpu(iface->txLoAddr);
tp->card_state = Sleeping;
smp_wmb();

tp->offload = TYPHOON_OFFLOAD_IP_CHKSUM | TYPHOON_OFFLOAD_TCP_CHKSUM;
tp->offload |= TYPHOON_OFFLOAD_UDP_CHKSUM | TSO_OFFLOAD_ON;

spin_lock_init(&tp->command_lock);
spin_lock_init(&tp->state_lock);

/* Force the writes to the shared memory area out before continuing. */
wmb();
}

static void
Expand Down

0 comments on commit 5fe88ea

Please sign in to comment.