diff -Naurp -X /home/jbarnes/dontdiff 230-tlb-global-flush-fix.patch/arch/ia64/configs/sn2_defconfig 300-tg3-unaligned.patch/arch/ia64/configs/sn2_defconfig
--- 230-tlb-global-flush-fix.patch/arch/ia64/configs/sn2_defconfig	Sun Jan 25 18:29:51 2004
+++ 300-tg3-unaligned.patch/arch/ia64/configs/sn2_defconfig	Mon Jan 26 16:44:41 2004
@@ -360,6 +360,7 @@ CONFIG_NETDEVICES=y
 # CONFIG_SIS190 is not set
 # CONFIG_SK98LIN is not set
 CONFIG_TIGON3=y
+CONFIG_UNALIGNED_EXPENSIVE=y
 
 #
 # Ethernet (10000 Mbit)
diff -Naurp -X /home/jbarnes/dontdiff 230-tlb-global-flush-fix.patch/drivers/net/Kconfig 300-tg3-unaligned.patch/drivers/net/Kconfig
--- 230-tlb-global-flush-fix.patch/drivers/net/Kconfig	Sun Jan 25 18:31:16 2004
+++ 300-tg3-unaligned.patch/drivers/net/Kconfig	Mon Jan 26 16:44:41 2004
@@ -2034,6 +2034,12 @@ config TIGON3
 	  To compile this driver as a module, choose M here: the module
 	  will be called tg3.  This is recommended.
 
+
+config UNALIGNED_EXPENSIVE
+	bool
+	depends on TIGON3 && IA64
+	default y
+
 endmenu
 
 #
diff -Naurp -X /home/jbarnes/dontdiff 230-tlb-global-flush-fix.patch/drivers/net/tg3.c 300-tg3-unaligned.patch/drivers/net/tg3.c
--- 230-tlb-global-flush-fix.patch/drivers/net/tg3.c	Mon Jan 26 16:44:29 2004
+++ 300-tg3-unaligned.patch/drivers/net/tg3.c	Mon Jan 26 16:44:41 2004
@@ -2261,7 +2261,11 @@ static int tg3_rx(struct tg3 *tp, int bu
 
 		len = ((desc->idx_len & RXD_LEN_MASK) >> RXD_LEN_SHIFT) - 4; /* omit crc */
 
-		if (len > RX_COPY_THRESHOLD) {
+		if (len > RX_COPY_THRESHOLD
+#if defined(CONFIG_UNALIGNED_EXPENSIVE)
+		&& tp->rx_offset == 2
+#endif
+		) {
 			int skb_size;
 
 			skb_size = tg3_alloc_rx_skb(tp, opaque_key,
