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 Tue Feb 17 19:57:12 2004 +++ 300-tg3-unaligned.patch/arch/ia64/configs/sn2_defconfig Wed Feb 18 10:16:26 2004 @@ -359,6 +359,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 Tue Feb 17 19:59:18 2004 +++ 300-tg3-unaligned.patch/drivers/net/Kconfig Wed Feb 18 10:16:26 2004 @@ -2052,6 +2052,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 Wed Feb 18 10:13:21 2004 +++ 300-tg3-unaligned.patch/drivers/net/tg3.c Wed Feb 18 10:16:26 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,