projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] missing license for libphy.ko
[powerpc.git]
/
drivers
/
net
/
loopback.c
diff --git
a/drivers/net/loopback.c
b/drivers/net/loopback.c
index
1f61f0c
..
690a1aa
100644
(file)
--- a/
drivers/net/loopback.c
+++ b/
drivers/net/loopback.c
@@
-68,6
+68,7
@@
static DEFINE_PER_CPU(struct net_device_stats, loopback_stats);
* of largesending device modulo TCP checksum, which is ignored for loopback.
*/
* of largesending device modulo TCP checksum, which is ignored for loopback.
*/
+#ifdef LOOPBACK_TSO
static void emulate_large_send_offload(struct sk_buff *skb)
{
struct iphdr *iph = skb->nh.iph;
static void emulate_large_send_offload(struct sk_buff *skb)
{
struct iphdr *iph = skb->nh.iph;
@@
-119,6
+120,7
@@
static void emulate_large_send_offload(struct sk_buff *skb)
dev_kfree_skb(skb);
}
dev_kfree_skb(skb);
}
+#endif /* LOOPBACK_TSO */
/*
* The higher levels take care of making this non-reentrant (it's
/*
* The higher levels take care of making this non-reentrant (it's
@@
-130,12
+132,13
@@
static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
skb_orphan(skb);
skb_orphan(skb);
- skb->protocol
=
eth_type_trans(skb,dev);
- skb->dev
=
dev;
+ skb->protocol
=
eth_type_trans(skb,dev);
+ skb->dev
=
dev;
#ifndef LOOPBACK_MUST_CHECKSUM
skb->ip_summed = CHECKSUM_UNNECESSARY;
#endif
#ifndef LOOPBACK_MUST_CHECKSUM
skb->ip_summed = CHECKSUM_UNNECESSARY;
#endif
+#ifdef LOOPBACK_TSO
if (skb_shinfo(skb)->tso_size) {
BUG_ON(skb->protocol != htons(ETH_P_IP));
BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP);
if (skb_shinfo(skb)->tso_size) {
BUG_ON(skb->protocol != htons(ETH_P_IP));
BUG_ON(skb->nh.iph->protocol != IPPROTO_TCP);
@@
-143,14
+146,14
@@
static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
emulate_large_send_offload(skb);
return 0;
}
emulate_large_send_offload(skb);
return 0;
}
-
+#endif
dev->last_rx = jiffies;
lb_stats = &per_cpu(loopback_stats, get_cpu());
lb_stats->rx_bytes += skb->len;
dev->last_rx = jiffies;
lb_stats = &per_cpu(loopback_stats, get_cpu());
lb_stats->rx_bytes += skb->len;
- lb_stats->tx_bytes
+= skb->len
;
+ lb_stats->tx_bytes
= lb_stats->rx_bytes
;
lb_stats->rx_packets++;
lb_stats->rx_packets++;
- lb_stats->tx_packets
++
;
+ lb_stats->tx_packets
= lb_stats->rx_packets
;
put_cpu();
netif_rx(skb);
put_cpu();
netif_rx(skb);
@@
-208,9
+211,12
@@
struct net_device loopback_dev = {
.type = ARPHRD_LOOPBACK, /* 0x0001*/
.rebuild_header = eth_rebuild_header,
.flags = IFF_LOOPBACK,
.type = ARPHRD_LOOPBACK, /* 0x0001*/
.rebuild_header = eth_rebuild_header,
.flags = IFF_LOOPBACK,
- .features = NETIF_F_SG|NETIF_F_FRAGLIST
- |NETIF_F_NO_CSUM|NETIF_F_HIGHDMA
- |NETIF_F_LLTX,
+ .features = NETIF_F_SG | NETIF_F_FRAGLIST
+#ifdef LOOPBACK_TSO
+ | NETIF_F_TSO
+#endif
+ | NETIF_F_NO_CSUM | NETIF_F_HIGHDMA
+ | NETIF_F_LLTX,
.ethtool_ops = &loopback_ethtool_ops,
};
.ethtool_ops = &loopback_ethtool_ops,
};