Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy...
[pandora-kernel.git] / drivers / s390 / net / netiucv.c
index 3d28e1a..d6e93f1 100644 (file)
@@ -639,14 +639,14 @@ static void netiucv_unpack_skb(struct iucv_connection *conn,
                skb->dev = pskb->dev;
                skb->protocol = pskb->protocol;
                pskb->ip_summed = CHECKSUM_UNNECESSARY;
+               privptr->stats.rx_packets++;
+               privptr->stats.rx_bytes += skb->len;
                /*
                 * Since receiving is always initiated from a tasklet (in iucv.c),
                 * we must use netif_rx_ni() instead of netif_rx()
                 */
                netif_rx_ni(skb);
                dev->last_rx = jiffies;
-               privptr->stats.rx_packets++;
-               privptr->stats.rx_bytes += skb->len;
                skb_pull(pskb, header->next);
                skb_put(pskb, NETIUCV_HDRLEN);
        }
@@ -753,7 +753,7 @@ static void conn_action_txdone(fsm_instance *fi, int event, void *arg)
 
        header.next = 0;
        memcpy(skb_put(conn->tx_buff, NETIUCV_HDRLEN), &header, NETIUCV_HDRLEN);
-       conn->prof.send_stamp = xtime;
+       conn->prof.send_stamp = current_kernel_time();
        txmsg.class = 0;
        txmsg.tag = 0;
        rc = iucv_message_send(conn->path, &txmsg, 0, 0,
@@ -1185,7 +1185,7 @@ static int netiucv_transmit_skb(struct iucv_connection *conn,
                memcpy(skb_put(nskb, NETIUCV_HDRLEN), &header,  NETIUCV_HDRLEN);
 
                fsm_newstate(conn->fsm, CONN_STATE_TX);
-               conn->prof.send_stamp = xtime;
+               conn->prof.send_stamp = current_kernel_time();
 
                msg.tag = 1;
                msg.class = 0;
@@ -1904,7 +1904,6 @@ static void netiucv_setup_netdevice(struct net_device *dev)
        dev->type                = ARPHRD_SLIP;
        dev->tx_queue_len        = NETIUCV_QUEUELEN_DEFAULT;
        dev->flags               = IFF_POINTOPOINT | IFF_NOARP;
-       SET_MODULE_OWNER(dev);
 }
 
 /**
@@ -2090,6 +2089,11 @@ static struct attribute_group netiucv_drv_attr_group = {
        .attrs = netiucv_drv_attrs,
 };
 
+static struct attribute_group *netiucv_drv_attr_groups[] = {
+       &netiucv_drv_attr_group,
+       NULL,
+};
+
 static void netiucv_banner(void)
 {
        PRINT_INFO("NETIUCV driver initialized\n");
@@ -2114,7 +2118,6 @@ static void __exit netiucv_exit(void)
                netiucv_unregister_device(dev);
        }
 
-       sysfs_remove_group(&netiucv_driver.kobj, &netiucv_drv_attr_group);
        driver_unregister(&netiucv_driver);
        iucv_unregister(&netiucv_handler, 1);
        iucv_unregister_dbf_views();
@@ -2134,6 +2137,7 @@ static int __init netiucv_init(void)
        if (rc)
                goto out_dbf;
        IUCV_DBF_TEXT(trace, 3, __FUNCTION__);
+       netiucv_driver.groups = netiucv_drv_attr_groups;
        rc = driver_register(&netiucv_driver);
        if (rc) {
                PRINT_ERR("NETIUCV: failed to register driver.\n");
@@ -2141,18 +2145,9 @@ static int __init netiucv_init(void)
                goto out_iucv;
        }
 
-       rc = sysfs_create_group(&netiucv_driver.kobj, &netiucv_drv_attr_group);
-       if (rc) {
-               PRINT_ERR("NETIUCV: failed to add driver attributes.\n");
-               IUCV_DBF_TEXT_(setup, 2,
-                              "ret %d - netiucv_drv_attr_group\n", rc);
-               goto out_driver;
-       }
        netiucv_banner();
        return rc;
 
-out_driver:
-       driver_unregister(&netiucv_driver);
 out_iucv:
        iucv_unregister(&netiucv_handler, 1);
 out_dbf: