/* Perform start function. */
                sch->lpm = 0xff;
                memset(&cdev->private->irb, 0, sizeof(struct irb));
-               rc = cio_start(sch, cp, req->mask);
+               rc = cio_start(sch, cp, (u8) req->mask);
                if (rc == 0) {
                        /* I/O started successfully. */
                        ccw_device_set_timeout(cdev, req->timeout);
 {
        struct ccw_request *req = &cdev->private->req;
 
-       req->mask       = 0x80;
+       /* Try all paths twice to counter link flapping. */
+       req->mask       = 0x8080;
        req->retries    = req->maxretries;
        req->mask       = lpm_adjust(req->mask, req->lpm);
        req->drc        = 0;
        }  __attribute__ ((packed)) data;
        data.dev_id     = cdev->private->dev_id;
        data.retries    = req->retries;
-       data.lpm        = req->mask;
+       data.lpm        = (u8) req->mask;
        data.status     = (u8) status;
        CIO_TRACE_EVENT(2, "reqstat");
        CIO_HEX_EVENT(2, &data, sizeof(data));
 
 #include "device.h"
 #include "io_sch.h"
 
-#define SENSE_ID_RETRIES       5
+#define SENSE_ID_RETRIES       256
 #define SENSE_ID_TIMEOUT       (10 * HZ)
 #define SENSE_ID_MIN_LEN       4
 #define SENSE_ID_BASIC_LEN     7