printk(KERN_ERR PFX "%s: PCI error (cmd = 0x%04x, status = 0x%04x).\n", dev->name, pci_cmd, pci_status); 
if (netif_msg_intr(tp)) { printk(KERN_ERR "%s: PCI error (cmd = 0x%04x, status = 0x%04x).\n", dev->name, pci_cmd, pci_status); } 
static void rtl8169_pcierr_interrupt(struct net_device *dev){	struct rtl8169_private *tp = netdev_priv(dev);	struct pci_dev *pdev = tp->pci_dev;	void __iomem *ioaddr = tp->mmio_addr;	u16 pci_status, pci_cmd;	pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);	pci_read_config_word(pdev, PCI_STATUS, &pci_status);	printk(KERN_ERR PFX "%s: PCI error (cmd = 0x%04x, status = 0x%04x).\n",	       dev->name, pci_cmd, pci_status);	/*	 * The recovery sequence below admits a very elaborated explanation:	 * - it seems to work;	 * - I did not see what else could be done.	 *	 * Feel free to adjust to your needs.	 */	pci_write_config_word(pdev, PCI_COMMAND,			      pci_cmd | PCI_COMMAND_SERR | PCI_COMMAND_PARITY);	pci_write_config_word(pdev, PCI_STATUS,		pci_status & (PCI_STATUS_DETECTED_PARITY |		PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_REC_MASTER_ABORT |		PCI_STATUS_REC_TARGET_ABORT | PCI_STATUS_SIG_TARGET_ABORT));	/* The infamous DAC f*ckup only happens at boot time */	if ((tp->cp_cmd & PCIDAC) && !tp->dirty_rx && !tp->cur_rx) {		printk(KERN_INFO PFX "%s: disabling PCI DAC.\n", dev->name);		tp->cp_cmd &= ~PCIDAC;		RTL_W16(CPlusCmd, tp->cp_cmd);		dev->features &= ~NETIF_F_HIGHDMA;		rtl8169_schedule_work(dev, rtl8169_reinit_task);	}	rtl8169_hw_reset(ioaddr);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b57b7e5a11c4e45565cf34d786d74ad35483fe83/r8169.c/clean/drivers/net/r8169.c