]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/net/qeth_core_main.c
Merge branch 'master' of git://git.infradead.org/users/pcmoore/lblnet-2.6
[linux-2.6-omap-h63xx.git] / drivers / s390 / net / qeth_core_main.c
index 141b2bb7b3cf44513f6674e9f9d72ec9e9a1b14c..52d26592c72c1a03ee640710d148d3aa44a1b781 100644 (file)
@@ -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");
@@ -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;
        }
 
@@ -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);