From: Peter Osterlund pkt_iosched_process_queue() failed to enable maximum read speed on the Iomega Super DVD 8x USB drive. It's better to use 0xffff to set maximum speed, because it is what the driver does at other places, and 0xffff seems to be understood by more drive models than using some other large but non-standard speed. Signed-off-by: Peter Osterlund Signed-off-by: Andrew Morton --- 25-akpm/drivers/block/pktcdvd.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff -puN drivers/block/pktcdvd.c~fix-setting-of-maximum-read-speed-in-cdrw-packet-writing drivers/block/pktcdvd.c --- 25/drivers/block/pktcdvd.c~fix-setting-of-maximum-read-speed-in-cdrw-packet-writing 2004-08-04 20:38:58.410928144 -0700 +++ 25-akpm/drivers/block/pktcdvd.c 2004-08-04 20:38:58.415927384 -0700 @@ -63,6 +63,8 @@ #define VPRINTK(fmt, args...) #endif +#define MAX_SPEED 0xffff + #define ZONE(sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) static struct pktcdvd_device *pkt_devs[MAX_WRITERS]; @@ -399,9 +401,9 @@ static int pkt_set_speed(struct pktcdvd_ int ret; write_speed = write_speed * 177; /* should be 176.4, but CD-RWs rounds down */ - write_speed = min_t(unsigned, write_speed, 0xffff); + write_speed = min_t(unsigned, write_speed, MAX_SPEED); read_speed = read_speed * 177; - read_speed = min_t(unsigned, read_speed, 0xffff); + read_speed = min_t(unsigned, read_speed, MAX_SPEED); init_cdrom_command(&cgc, NULL, 0, CGC_DATA_NONE); cgc.sense = &sense; @@ -518,7 +520,7 @@ static void pkt_iosched_process_queue(st if (pd->iosched.successive_reads >= HI_SPEED_SWITCH) { if (pd->read_speed == pd->write_speed) { pd->read_speed = 0xff; - pkt_set_speed(pd, pd->write_speed, pd->read_speed); + pkt_set_speed(pd, pd->write_speed, MAX_SPEED); } } else { if (pd->read_speed != pd->write_speed) { @@ -1918,7 +1920,7 @@ static int pkt_open_dev(struct pktcdvd_d spin_unlock_irq(q->queue_lock); set_bit(PACKET_WRITABLE, &pd->flags); } else { - pkt_set_speed(pd, 0xffff, 0xffff); + pkt_set_speed(pd, MAX_SPEED, MAX_SPEED); clear_bit(PACKET_WRITABLE, &pd->flags); } @@ -1954,7 +1956,7 @@ static void pkt_release_dev(struct pktcd pkt_lock_door(pd, 0); q = bdev_get_queue(pd->bdev); - pkt_set_speed(pd, 0xffff, 0xffff); + pkt_set_speed(pd, MAX_SPEED, MAX_SPEED); spin_lock_irq(q->queue_lock); q->elevator.elevator_completed_req_fn = pd->cdrw.elv_completed_req_fn; spin_unlock_irq(q->queue_lock); _