]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/loopback.c
IB/ehca: Support more than 4k QPs for userspace and kernelspace
[linux-2.6-omap-h63xx.git] / drivers / net / loopback.c
index 20b5cb1013681dcfccd863a9bf9eaac5f4668c4f..5106c2328d12cb7a52f7f3fec847ea844e87d306 100644 (file)
@@ -94,7 +94,8 @@ static void emulate_large_send_offload(struct sk_buff *skb)
                skb_set_mac_header(nskb, -ETH_HLEN);
                skb_reset_network_header(nskb);
                iph = ip_hdr(nskb);
-               memcpy(nskb->data, skb_network_header(skb), doffset);
+               skb_copy_to_linear_data(nskb, skb_network_header(skb),
+                                       doffset);
                if (skb_copy_bits(skb,
                                  doffset + offset,
                                  nskb->data + doffset,
@@ -163,11 +164,9 @@ static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
        return 0;
 }
 
-static struct net_device_stats loopback_stats;
-
 static struct net_device_stats *get_stats(struct net_device *dev)
 {
-       struct net_device_stats *stats = &loopback_stats;
+       struct net_device_stats *stats = &dev->stats;
        unsigned long bytes = 0;
        unsigned long packets = 0;
        int i;
@@ -207,7 +206,6 @@ static const struct ethtool_ops loopback_ethtool_ops = {
 struct net_device loopback_dev = {
        .name                   = "lo",
        .get_stats              = &get_stats,
-       .priv                   = &loopback_stats,
        .mtu                    = (16 * 1024) + 20 + 20 + 12,
        .hard_start_xmit        = loopback_xmit,
        .hard_header            = eth_header,
@@ -231,7 +229,12 @@ struct net_device loopback_dev = {
 /* Setup and register the loopback device. */
 static int __init loopback_init(void)
 {
-       return register_netdev(&loopback_dev);
+       int err = register_netdev(&loopback_dev);
+
+       if (err)
+               panic("loopback: Failed to register netdevice: %d\n", err);
+
+       return err;
 };
 
 module_init(loopback_init);