linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] marvell sky2 driver: fix so it works without unaligned accesses
@ 2012-04-03 15:13 Chris Metcalf
  2012-04-03 16:17 ` Stephen Hemminger
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Chris Metcalf @ 2012-04-03 15:13 UTC (permalink / raw)
  To: Stephen Hemminger, netdev, linux-kernel

The driver uses a receive_new() routine that ends up requiring unaligned
accesses in IP header processing.  If the architecture doesn't support
efficient unaligned accesses, just copy all ingress packets to the bounce
buffers instead.

This allows the driver to be used on the Tilera TILEmpower-Gx, since
the tile architecture doesn't currently handle kernel unaligned accesses,
just userspace.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
---
 drivers/net/ethernet/marvell/sky2.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 879b0a4..7a15482 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -2490,6 +2490,7 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
 	return skb;
 }
 
+#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
 /* Adjust length of skb with fragments to match received data */
 static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,
 			  unsigned int length)
@@ -2555,6 +2556,7 @@ nomap:
 nobuf:
 	return NULL;
 }
+#endif /* CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS */
 
 /*
  * Receive one packet.
@@ -2598,10 +2600,12 @@ static struct sk_buff *sky2_receive(struct net_device *dev,
 		goto error;
 
 okay:
-	if (length < copybreak)
-		skb = receive_copy(sky2, re, length);
-	else
+#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
+	if (length >= copybreak)
 		skb = receive_new(sky2, re, length);
+	else
+#endif
+		skb = receive_copy(sky2, re, length);
 
 	dev->stats.rx_dropped += (skb == NULL);
 
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-04-04 22:14 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-03 15:13 [PATCH] marvell sky2 driver: fix so it works without unaligned accesses Chris Metcalf
2012-04-03 16:17 ` Stephen Hemminger
2012-04-03 16:18 ` Eric Dumazet
2012-04-03 21:46 ` David Miller
2012-04-04 14:13 ` [PATCH v2] " Chris Metcalf
2012-04-04 16:04   ` Stephen Hemminger
2012-04-04 18:42   ` Stephen Hemminger
2012-04-04 21:52     ` Chris Metcalf
2012-04-04 22:10       ` [PATCH v3] sky2: copy received packets on inefficient unaligned architecture Stephen Hemminger
2012-04-04 22:14         ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).