Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
libata-sff: remove harmful BUG_ON from ata_bmdma_qc_issue
sata_mv: fix broken DSM/TRIM support (v2)
libata: be less of a drama queen on empty data commands
[libata] sata_dwc_460ex: signdness bug
ahci: add HFLAG_YES_FBS and apply it to 88SE9128
libata: remove no longer needed pata_winbond driver
pata_cmd64x: revert commit d62f5576

+85 -309
+1
drivers/ata/Kconfig
··· 828 828 config PATA_WINBOND_VLB 829 829 tristate "Winbond W83759A VLB PATA support (Experimental)" 830 830 depends on ISA && EXPERIMENTAL 831 + select PATA_LEGACY 831 832 help 832 833 Support for the Winbond W83759A controller on Vesa Local Bus 833 834 systems.
-1
drivers/ata/Makefile
··· 89 89 obj-$(CONFIG_PATA_RB532) += pata_rb532_cf.o 90 90 obj-$(CONFIG_PATA_RZ1000) += pata_rz1000.o 91 91 obj-$(CONFIG_PATA_SAMSUNG_CF) += pata_samsung_cf.o 92 - obj-$(CONFIG_PATA_WINBOND_VLB) += pata_winbond.o 93 92 94 93 obj-$(CONFIG_PATA_PXA) += pata_pxa.o 95 94
+11
drivers/ata/ahci.c
··· 60 60 board_ahci, 61 61 board_ahci_ign_iferr, 62 62 board_ahci_nosntf, 63 + board_ahci_yes_fbs, 63 64 64 65 /* board IDs for specific chipsets in alphabetical order */ 65 66 board_ahci_mcp65, ··· 128 127 [board_ahci_nosntf] = 129 128 { 130 129 AHCI_HFLAGS (AHCI_HFLAG_NO_SNTF), 130 + .flags = AHCI_FLAG_COMMON, 131 + .pio_mask = ATA_PIO4, 132 + .udma_mask = ATA_UDMA6, 133 + .port_ops = &ahci_ops, 134 + }, 135 + [board_ahci_yes_fbs] = 136 + { 137 + AHCI_HFLAGS (AHCI_HFLAG_YES_FBS), 131 138 .flags = AHCI_FLAG_COMMON, 132 139 .pio_mask = ATA_PIO4, 133 140 .udma_mask = ATA_UDMA6, ··· 371 362 /* Marvell */ 372 363 { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ 373 364 { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ 365 + { PCI_DEVICE(0x1b4b, 0x9123), 366 + .driver_data = board_ahci_yes_fbs }, /* 88se9128 */ 374 367 375 368 /* Promise */ 376 369 { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
+1
drivers/ata/ahci.h
··· 209 209 link offline */ 210 210 AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */ 211 211 AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */ 212 + AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */ 212 213 213 214 /* ap->flags bits */ 214 215
+14 -2
drivers/ata/libahci.c
··· 430 430 cap &= ~HOST_CAP_SNTF; 431 431 } 432 432 433 + if (!(cap & HOST_CAP_FBS) && (hpriv->flags & AHCI_HFLAG_YES_FBS)) { 434 + dev_printk(KERN_INFO, dev, 435 + "controller can do FBS, turning on CAP_FBS\n"); 436 + cap |= HOST_CAP_FBS; 437 + } 438 + 433 439 if (force_port_map && port_map != force_port_map) { 434 440 dev_printk(KERN_INFO, dev, "forcing port_map 0x%x -> 0x%x\n", 435 441 port_map, force_port_map); ··· 2042 2036 u32 cmd = readl(port_mmio + PORT_CMD); 2043 2037 if (cmd & PORT_CMD_FBSCP) 2044 2038 pp->fbs_supported = true; 2045 - else 2039 + else if (hpriv->flags & AHCI_HFLAG_YES_FBS) { 2040 + dev_printk(KERN_INFO, dev, 2041 + "port %d can do FBS, forcing FBSCP\n", 2042 + ap->port_no); 2043 + pp->fbs_supported = true; 2044 + } else 2046 2045 dev_printk(KERN_WARNING, dev, 2047 - "The port is not capable of FBS\n"); 2046 + "port %d is not capable of FBS\n", 2047 + ap->port_no); 2048 2048 } 2049 2049 2050 2050 if (pp->fbs_supported) {
+7 -4
drivers/ata/libata-core.c
··· 5111 5111 qc->flags |= ATA_QCFLAG_ACTIVE; 5112 5112 ap->qc_active |= 1 << qc->tag; 5113 5113 5114 - /* We guarantee to LLDs that they will have at least one 5114 + /* 5115 + * We guarantee to LLDs that they will have at least one 5115 5116 * non-zero sg if the command is a data command. 5116 5117 */ 5117 - BUG_ON(ata_is_data(prot) && (!qc->sg || !qc->n_elem || !qc->nbytes)); 5118 + if (WARN_ON_ONCE(ata_is_data(prot) && 5119 + (!qc->sg || !qc->n_elem || !qc->nbytes))) 5120 + goto sys_err; 5118 5121 5119 5122 if (ata_is_dma(prot) || (ata_is_pio(prot) && 5120 5123 (ap->flags & ATA_FLAG_PIO_DMA))) 5121 5124 if (ata_sg_setup(qc)) 5122 - goto sg_err; 5125 + goto sys_err; 5123 5126 5124 5127 /* if device is sleeping, schedule reset and abort the link */ 5125 5128 if (unlikely(qc->dev->flags & ATA_DFLAG_SLEEPING)) { ··· 5139 5136 goto err; 5140 5137 return; 5141 5138 5142 - sg_err: 5139 + sys_err: 5143 5140 qc->err_mask |= AC_ERR_SYSTEM; 5144 5141 err: 5145 5142 ata_qc_complete(qc);
-4
drivers/ata/libata-sff.c
··· 2735 2735 { 2736 2736 struct ata_port *ap = qc->ap; 2737 2737 2738 - /* see ata_dma_blacklisted() */ 2739 - BUG_ON((ap->flags & ATA_FLAG_PIO_POLLING) && 2740 - qc->tf.protocol == ATAPI_PROT_DMA); 2741 - 2742 2738 /* defer PIO handling to sff_qc_issue */ 2743 2739 if (!ata_is_dma(qc->tf.protocol)) 2744 2740 return ata_sff_qc_issue(qc);
-6
drivers/ata/pata_cmd64x.c
··· 121 121 122 122 if (pair) { 123 123 struct ata_timing tp; 124 - 125 124 ata_timing_compute(pair, pair->pio_mode, &tp, T, 0); 126 125 ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP); 127 - if (pair->dma_mode) { 128 - ata_timing_compute(pair, pair->dma_mode, 129 - &tp, T, 0); 130 - ata_timing_merge(&tp, &t, &t, ATA_TIMING_SETUP); 131 - } 132 126 } 133 127 } 134 128
+13 -2
drivers/ata/pata_legacy.c
··· 44 44 * Specific support is included for the ht6560a/ht6560b/opti82c611a/ 45 45 * opti82c465mv/promise 20230c/20630/qdi65x0/winbond83759A 46 46 * 47 + * Support for the Winbond 83759A when operating in advanced mode. 48 + * Multichip mode is not currently supported. 49 + * 47 50 * Use the autospeed and pio_mask options with: 48 51 * Appian ADI/2 aka CLPD7220 or AIC25VL01. 49 52 * Use the jumpers, autospeed and set pio_mask to the mode on the jumpers with ··· 138 135 static int opti82c611a; /* Opti82c611A on primary 1, sec 2, both 3 */ 139 136 static int opti82c46x; /* Opti 82c465MV present(pri/sec autodetect) */ 140 137 static int qdi; /* Set to probe QDI controllers */ 141 - static int winbond; /* Set to probe Winbond controllers, 142 - give I/O port if non standard */ 143 138 static int autospeed; /* Chip present which snoops speed changes */ 144 139 static int pio_mask = ATA_PIO4; /* PIO range for autospeed devices */ 145 140 static int iordy_mask = 0xFFFFFFFF; /* Use iordy if available */ 141 + 142 + #ifdef PATA_WINBOND_VLB_MODULE 143 + static int winbond = 1; /* Set to probe Winbond controllers, 144 + give I/O port if non standard */ 145 + #else 146 + static int winbond; /* Set to probe Winbond controllers, 147 + give I/O port if non standard */ 148 + #endif 146 149 147 150 /** 148 151 * legacy_probe_add - Add interface to probe list ··· 1306 1297 MODULE_DESCRIPTION("low-level driver for legacy ATA"); 1307 1298 MODULE_LICENSE("GPL"); 1308 1299 MODULE_VERSION(DRV_VERSION); 1300 + MODULE_ALIAS("pata_winbond"); 1309 1301 1310 1302 module_param(probe_all, int, 0); 1311 1303 module_param(autospeed, int, 0); ··· 1315 1305 module_param(opti82c611a, int, 0); 1316 1306 module_param(opti82c46x, int, 0); 1317 1307 module_param(qdi, int, 0); 1308 + module_param(winbond, int, 0); 1318 1309 module_param(pio_mask, int, 0); 1319 1310 module_param(iordy_mask, int, 0); 1320 1311
-282
drivers/ata/pata_winbond.c
··· 1 - /* 2 - * pata_winbond.c - Winbond VLB ATA controllers 3 - * (C) 2006 Red Hat 4 - * 5 - * Support for the Winbond 83759A when operating in advanced mode. 6 - * Multichip mode is not currently supported. 7 - */ 8 - 9 - #include <linux/kernel.h> 10 - #include <linux/module.h> 11 - #include <linux/init.h> 12 - #include <linux/blkdev.h> 13 - #include <linux/delay.h> 14 - #include <scsi/scsi_host.h> 15 - #include <linux/libata.h> 16 - #include <linux/platform_device.h> 17 - 18 - #define DRV_NAME "pata_winbond" 19 - #define DRV_VERSION "0.0.3" 20 - 21 - #define NR_HOST 4 /* Two winbond controllers, two channels each */ 22 - 23 - struct winbond_data { 24 - unsigned long config; 25 - struct platform_device *platform_dev; 26 - }; 27 - 28 - static struct ata_host *winbond_host[NR_HOST]; 29 - static struct winbond_data winbond_data[NR_HOST]; 30 - static int nr_winbond_host; 31 - 32 - #ifdef MODULE 33 - static int probe_winbond = 1; 34 - #else 35 - static int probe_winbond; 36 - #endif 37 - 38 - static DEFINE_SPINLOCK(winbond_lock); 39 - 40 - static void winbond_writecfg(unsigned long port, u8 reg, u8 val) 41 - { 42 - unsigned long flags; 43 - spin_lock_irqsave(&winbond_lock, flags); 44 - outb(reg, port + 0x01); 45 - outb(val, port + 0x02); 46 - spin_unlock_irqrestore(&winbond_lock, flags); 47 - } 48 - 49 - static u8 winbond_readcfg(unsigned long port, u8 reg) 50 - { 51 - u8 val; 52 - 53 - unsigned long flags; 54 - spin_lock_irqsave(&winbond_lock, flags); 55 - outb(reg, port + 0x01); 56 - val = inb(port + 0x02); 57 - spin_unlock_irqrestore(&winbond_lock, flags); 58 - 59 - return val; 60 - } 61 - 62 - static void winbond_set_piomode(struct ata_port *ap, struct ata_device *adev) 63 - { 64 - struct ata_timing t; 65 - struct winbond_data *winbond = ap->host->private_data; 66 - int active, recovery; 67 - u8 reg; 68 - int timing = 0x88 + (ap->port_no * 4) + (adev->devno * 2); 69 - 70 - reg = winbond_readcfg(winbond->config, 0x81); 71 - 72 - /* Get the timing data in cycles */ 73 - if (reg & 0x40) /* Fast VLB bus, assume 50MHz */ 74 - ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000); 75 - else 76 - ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); 77 - 78 - active = (clamp_val(t.active, 3, 17) - 1) & 0x0F; 79 - recovery = (clamp_val(t.recover, 1, 15) + 1) & 0x0F; 80 - timing = (active << 4) | recovery; 81 - winbond_writecfg(winbond->config, timing, reg); 82 - 83 - /* Load the setup timing */ 84 - 85 - reg = 0x35; 86 - if (adev->class != ATA_DEV_ATA) 87 - reg |= 0x08; /* FIFO off */ 88 - if (!ata_pio_need_iordy(adev)) 89 - reg |= 0x02; /* IORDY off */ 90 - reg |= (clamp_val(t.setup, 0, 3) << 6); 91 - winbond_writecfg(winbond->config, timing + 1, reg); 92 - } 93 - 94 - 95 - static unsigned int winbond_data_xfer(struct ata_device *dev, 96 - unsigned char *buf, unsigned int buflen, int rw) 97 - { 98 - struct ata_port *ap = dev->link->ap; 99 - int slop = buflen & 3; 100 - 101 - if (ata_id_has_dword_io(dev->id)) { 102 - if (rw == READ) 103 - ioread32_rep(ap->ioaddr.data_addr, buf, buflen >> 2); 104 - else 105 - iowrite32_rep(ap->ioaddr.data_addr, buf, buflen >> 2); 106 - 107 - if (unlikely(slop)) { 108 - __le32 pad; 109 - if (rw == READ) { 110 - pad = cpu_to_le32(ioread32(ap->ioaddr.data_addr)); 111 - memcpy(buf + buflen - slop, &pad, slop); 112 - } else { 113 - memcpy(&pad, buf + buflen - slop, slop); 114 - iowrite32(le32_to_cpu(pad), ap->ioaddr.data_addr); 115 - } 116 - buflen += 4 - slop; 117 - } 118 - } else 119 - buflen = ata_sff_data_xfer(dev, buf, buflen, rw); 120 - 121 - return buflen; 122 - } 123 - 124 - static struct scsi_host_template winbond_sht = { 125 - ATA_PIO_SHT(DRV_NAME), 126 - }; 127 - 128 - static struct ata_port_operations winbond_port_ops = { 129 - .inherits = &ata_sff_port_ops, 130 - .sff_data_xfer = winbond_data_xfer, 131 - .cable_detect = ata_cable_40wire, 132 - .set_piomode = winbond_set_piomode, 133 - }; 134 - 135 - /** 136 - * winbond_init_one - attach a winbond interface 137 - * @type: Type to display 138 - * @io: I/O port start 139 - * @irq: interrupt line 140 - * @fast: True if on a > 33Mhz VLB 141 - * 142 - * Register a VLB bus IDE interface. Such interfaces are PIO and we 143 - * assume do not support IRQ sharing. 144 - */ 145 - 146 - static __init int winbond_init_one(unsigned long port) 147 - { 148 - struct platform_device *pdev; 149 - u8 reg; 150 - int i, rc; 151 - 152 - reg = winbond_readcfg(port, 0x81); 153 - reg |= 0x80; /* jumpered mode off */ 154 - winbond_writecfg(port, 0x81, reg); 155 - reg = winbond_readcfg(port, 0x83); 156 - reg |= 0xF0; /* local control */ 157 - winbond_writecfg(port, 0x83, reg); 158 - reg = winbond_readcfg(port, 0x85); 159 - reg |= 0xF0; /* programmable timing */ 160 - winbond_writecfg(port, 0x85, reg); 161 - 162 - reg = winbond_readcfg(port, 0x81); 163 - 164 - if (!(reg & 0x03)) /* Disabled */ 165 - return -ENODEV; 166 - 167 - for (i = 0; i < 2 ; i ++) { 168 - unsigned long cmd_port = 0x1F0 - (0x80 * i); 169 - unsigned long ctl_port = cmd_port + 0x206; 170 - struct ata_host *host; 171 - struct ata_port *ap; 172 - void __iomem *cmd_addr, *ctl_addr; 173 - 174 - if (!(reg & (1 << i))) 175 - continue; 176 - 177 - pdev = platform_device_register_simple(DRV_NAME, nr_winbond_host, NULL, 0); 178 - if (IS_ERR(pdev)) 179 - return PTR_ERR(pdev); 180 - 181 - rc = -ENOMEM; 182 - host = ata_host_alloc(&pdev->dev, 1); 183 - if (!host) 184 - goto err_unregister; 185 - ap = host->ports[0]; 186 - 187 - rc = -ENOMEM; 188 - cmd_addr = devm_ioport_map(&pdev->dev, cmd_port, 8); 189 - ctl_addr = devm_ioport_map(&pdev->dev, ctl_port, 1); 190 - if (!cmd_addr || !ctl_addr) 191 - goto err_unregister; 192 - 193 - ata_port_desc(ap, "cmd 0x%lx ctl 0x%lx", cmd_port, ctl_port); 194 - 195 - ap->ops = &winbond_port_ops; 196 - ap->pio_mask = ATA_PIO4; 197 - ap->flags |= ATA_FLAG_SLAVE_POSS; 198 - ap->ioaddr.cmd_addr = cmd_addr; 199 - ap->ioaddr.altstatus_addr = ctl_addr; 200 - ap->ioaddr.ctl_addr = ctl_addr; 201 - ata_sff_std_ports(&ap->ioaddr); 202 - 203 - /* hook in a private data structure per channel */ 204 - host->private_data = &winbond_data[nr_winbond_host]; 205 - winbond_data[nr_winbond_host].config = port; 206 - winbond_data[nr_winbond_host].platform_dev = pdev; 207 - 208 - /* activate */ 209 - rc = ata_host_activate(host, 14 + i, ata_sff_interrupt, 0, 210 - &winbond_sht); 211 - if (rc) 212 - goto err_unregister; 213 - 214 - winbond_host[nr_winbond_host++] = dev_get_drvdata(&pdev->dev); 215 - } 216 - 217 - return 0; 218 - 219 - err_unregister: 220 - platform_device_unregister(pdev); 221 - return rc; 222 - } 223 - 224 - /** 225 - * winbond_init - attach winbond interfaces 226 - * 227 - * Attach winbond IDE interfaces by scanning the ports it may occupy. 228 - */ 229 - 230 - static __init int winbond_init(void) 231 - { 232 - static const unsigned long config[2] = { 0x130, 0x1B0 }; 233 - 234 - int ct = 0; 235 - int i; 236 - 237 - if (probe_winbond == 0) 238 - return -ENODEV; 239 - 240 - /* 241 - * Check both base addresses 242 - */ 243 - 244 - for (i = 0; i < 2; i++) { 245 - if (probe_winbond & (1<<i)) { 246 - int ret = 0; 247 - unsigned long port = config[i]; 248 - 249 - if (request_region(port, 2, "pata_winbond")) { 250 - ret = winbond_init_one(port); 251 - if (ret <= 0) 252 - release_region(port, 2); 253 - else ct+= ret; 254 - } 255 - } 256 - } 257 - if (ct != 0) 258 - return 0; 259 - return -ENODEV; 260 - } 261 - 262 - static __exit void winbond_exit(void) 263 - { 264 - int i; 265 - 266 - for (i = 0; i < nr_winbond_host; i++) { 267 - ata_host_detach(winbond_host[i]); 268 - release_region(winbond_data[i].config, 2); 269 - platform_device_unregister(winbond_data[i].platform_dev); 270 - } 271 - } 272 - 273 - MODULE_AUTHOR("Alan Cox"); 274 - MODULE_DESCRIPTION("low-level driver for Winbond VL ATA"); 275 - MODULE_LICENSE("GPL"); 276 - MODULE_VERSION(DRV_VERSION); 277 - 278 - module_init(winbond_init); 279 - module_exit(winbond_exit); 280 - 281 - module_param(probe_winbond, int, 0); 282 -
+1 -1
drivers/ata/sata_dwc_460ex.c
··· 1459 1459 { 1460 1460 struct scatterlist *sg = qc->sg; 1461 1461 struct ata_port *ap = qc->ap; 1462 - u32 dma_chan; 1462 + int dma_chan; 1463 1463 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); 1464 1464 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); 1465 1465 int err;
+37 -7
drivers/ata/sata_mv.c
··· 1898 1898 * LOCKING: 1899 1899 * Inherited from caller. 1900 1900 */ 1901 - static void mv_bmdma_stop(struct ata_queued_cmd *qc) 1901 + static void mv_bmdma_stop_ap(struct ata_port *ap) 1902 1902 { 1903 - struct ata_port *ap = qc->ap; 1904 1903 void __iomem *port_mmio = mv_ap_base(ap); 1905 1904 u32 cmd; 1906 1905 1907 1906 /* clear start/stop bit */ 1908 1907 cmd = readl(port_mmio + BMDMA_CMD); 1909 - cmd &= ~ATA_DMA_START; 1910 - writelfl(cmd, port_mmio + BMDMA_CMD); 1908 + if (cmd & ATA_DMA_START) { 1909 + cmd &= ~ATA_DMA_START; 1910 + writelfl(cmd, port_mmio + BMDMA_CMD); 1911 1911 1912 - /* one-PIO-cycle guaranteed wait, per spec, for HDMA1:0 transition */ 1913 - ata_sff_dma_pause(ap); 1912 + /* one-PIO-cycle guaranteed wait, per spec, for HDMA1:0 transition */ 1913 + ata_sff_dma_pause(ap); 1914 + } 1915 + } 1916 + 1917 + static void mv_bmdma_stop(struct ata_queued_cmd *qc) 1918 + { 1919 + mv_bmdma_stop_ap(qc->ap); 1914 1920 } 1915 1921 1916 1922 /** ··· 1940 1934 reg = readl(port_mmio + BMDMA_STATUS); 1941 1935 if (reg & ATA_DMA_ACTIVE) 1942 1936 status = ATA_DMA_ACTIVE; 1943 - else 1937 + else if (reg & ATA_DMA_ERR) 1944 1938 status = (reg & ATA_DMA_ERR) | ATA_DMA_INTR; 1939 + else { 1940 + /* 1941 + * Just because DMA_ACTIVE is 0 (DMA completed), 1942 + * this does _not_ mean the device is "done". 1943 + * So we should not yet be signalling ATA_DMA_INTR 1944 + * in some cases. Eg. DSM/TRIM, and perhaps others. 1945 + */ 1946 + mv_bmdma_stop_ap(ap); 1947 + if (ioread8(ap->ioaddr.altstatus_addr) & ATA_BUSY) 1948 + status = 0; 1949 + else 1950 + status = ATA_DMA_INTR; 1951 + } 1945 1952 return status; 1946 1953 } 1947 1954 ··· 2014 1995 2015 1996 switch (tf->protocol) { 2016 1997 case ATA_PROT_DMA: 1998 + if (tf->command == ATA_CMD_DSM) 1999 + return; 2000 + /* fall-thru */ 2017 2001 case ATA_PROT_NCQ: 2018 2002 break; /* continue below */ 2019 2003 case ATA_PROT_PIO: ··· 2116 2094 if ((tf->protocol != ATA_PROT_DMA) && 2117 2095 (tf->protocol != ATA_PROT_NCQ)) 2118 2096 return; 2097 + if (tf->command == ATA_CMD_DSM) 2098 + return; /* use bmdma for this */ 2119 2099 2120 2100 /* Fill in Gen IIE command request block */ 2121 2101 if (!(tf->flags & ATA_TFLAG_WRITE)) ··· 2313 2289 2314 2290 switch (qc->tf.protocol) { 2315 2291 case ATA_PROT_DMA: 2292 + if (qc->tf.command == ATA_CMD_DSM) { 2293 + if (!ap->ops->bmdma_setup) /* no bmdma on GEN_I */ 2294 + return AC_ERR_OTHER; 2295 + break; /* use bmdma for this */ 2296 + } 2297 + /* fall thru */ 2316 2298 case ATA_PROT_NCQ: 2317 2299 mv_start_edma(ap, port_mmio, pp, qc->tf.protocol); 2318 2300 pp->req_idx = (pp->req_idx + 1) & MV_MAX_Q_DEPTH_MASK;