]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/net/qeth_core_main.c
Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux
[linux-2.6-omap-h63xx.git] / drivers / s390 / net / qeth_core_main.c
index c7ab1b864516694e97eb3438a70b26f7a20fb952..52d26592c72c1a03ee640710d148d3aa44a1b781 100644 (file)
@@ -745,7 +745,7 @@ static int qeth_get_problem(struct ccw_device *cdev, struct irb *irb)
                     SCHN_STAT_PROT_CHECK | SCHN_STAT_PROG_CHECK)) {
                QETH_DBF_TEXT(TRACE, 2, "CGENCHK");
                PRINT_WARN("check on device %s, dstat=x%x, cstat=x%x ",
-                          cdev->dev.bus_id, dstat, cstat);
+                          dev_name(&cdev->dev), dstat, cstat);
                print_hex_dump(KERN_WARNING, "qeth: irb ", DUMP_PREFIX_OFFSET,
                                16, 1, irb, 64, 1);
                return 1;
@@ -760,7 +760,7 @@ static int qeth_get_problem(struct ccw_device *cdev, struct irb *irb)
                if (sense[SENSE_COMMAND_REJECT_BYTE] &
                    SENSE_COMMAND_REJECT_FLAG) {
                        QETH_DBF_TEXT(TRACE, 2, "CMDREJi");
-                       return 0;
+                       return 1;
                }
                if ((sense[2] == 0xaf) && (sense[3] == 0xfe)) {
                        QETH_DBF_TEXT(TRACE, 2, "AFFE");
@@ -784,12 +784,12 @@ static long __qeth_check_irb_error(struct ccw_device *cdev,
 
        switch (PTR_ERR(irb)) {
        case -EIO:
-               PRINT_WARN("i/o-error on device %s\n", cdev->dev.bus_id);
+               PRINT_WARN("i/o-error on device %s\n", dev_name(&cdev->dev));
                QETH_DBF_TEXT(TRACE, 2, "ckirberr");
                QETH_DBF_TEXT_(TRACE, 2, "  rc%d", -EIO);
                break;
        case -ETIMEDOUT:
-               PRINT_WARN("timeout on device %s\n", cdev->dev.bus_id);
+               PRINT_WARN("timeout on device %s\n", dev_name(&cdev->dev));
                QETH_DBF_TEXT(TRACE, 2, "ckirberr");
                QETH_DBF_TEXT_(TRACE, 2, "  rc%d", -ETIMEDOUT);
                if (intparm == QETH_RCD_PARM) {
@@ -803,7 +803,7 @@ static long __qeth_check_irb_error(struct ccw_device *cdev,
                break;
        default:
                PRINT_WARN("unknown error %ld on device %s\n", PTR_ERR(irb),
-                          cdev->dev.bus_id);
+                          dev_name(&cdev->dev));
                QETH_DBF_TEXT(TRACE, 2, "ckirberr");
                QETH_DBF_TEXT(TRACE, 2, "  rc???");
        }
@@ -884,6 +884,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
                }
                rc = qeth_get_problem(cdev, irb);
                if (rc) {
+                       qeth_clear_ipacmd_list(card);
                        qeth_schedule_recovery(card);
                        goto out;
                }
@@ -3024,7 +3025,7 @@ static inline void __qeth_fill_buffer(struct sk_buff *skb,
        struct qdio_buffer *buffer, int is_tso, int *next_element_to_fill,
        int offset)
 {
-       int length = skb->len - offset;
+       int length = skb->len;
        int length_here;
        int element;
        char *data;
@@ -3036,6 +3037,7 @@ static inline void __qeth_fill_buffer(struct sk_buff *skb,
 
        if (offset >= 0) {
                data = skb->data + offset;
+               length -= offset;
                first_lap = 0;
        }
 
@@ -4081,7 +4083,7 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev)
        if (!get_device(dev))
                return -ENODEV;
 
-       QETH_DBF_TEXT_(SETUP, 2, "%s", gdev->dev.bus_id);
+       QETH_DBF_TEXT_(SETUP, 2, "%s", dev_name(&gdev->dev));
 
        card = qeth_alloc_card();
        if (!card) {
@@ -4147,6 +4149,7 @@ static void qeth_core_remove_device(struct ccwgroup_device *gdev)
        unsigned long flags;
        struct qeth_card *card = dev_get_drvdata(&gdev->dev);
 
+       QETH_DBF_TEXT(SETUP, 2, "removedv");
        if (card->discipline.ccwgdriver) {
                card->discipline.ccwgdriver->remove(gdev);
                qeth_core_free_discipline(card);