|
@@ -187,7 +187,7 @@ static DEFINE_PCI_DEVICE_TABLE(rtl8169_pci_tbl) = {
|
|
|
MODULE_DEVICE_TABLE(pci, rtl8169_pci_tbl);
|
|
|
|
|
|
static int rx_copybreak = 200;
|
|
|
-static int use_dac;
|
|
|
+static int use_dac = -1;
|
|
|
static struct {
|
|
|
u32 msg_enable;
|
|
|
} debug = { -1 };
|
|
@@ -511,7 +511,8 @@ MODULE_DESCRIPTION("RealTek RTL-8169 Gigabit Ethernet driver");
|
|
|
module_param(rx_copybreak, int, 0);
|
|
|
MODULE_PARM_DESC(rx_copybreak, "Copy breakpoint for copy-only-tiny-frames");
|
|
|
module_param(use_dac, int, 0);
|
|
|
-MODULE_PARM_DESC(use_dac, "Enable PCI DAC. Unsafe on 32 bit PCI slot.");
|
|
|
+MODULE_PARM_DESC(use_dac, "Enable PCI DAC. -1 defaults on for PCI Express only."
|
|
|
+" Unsafe on 32 bit PCI slot.");
|
|
|
module_param_named(debug, debug.msg_enable, int, 0);
|
|
|
MODULE_PARM_DESC(debug, "Debug verbosity level (0=none, ..., 16=all)");
|
|
|
MODULE_LICENSE("GPL");
|
|
@@ -2973,6 +2974,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
void __iomem *ioaddr;
|
|
|
unsigned int i;
|
|
|
int rc;
|
|
|
+ int this_use_dac = use_dac;
|
|
|
|
|
|
if (netif_msg_drv(&debug)) {
|
|
|
printk(KERN_INFO "%s Gigabit Ethernet driver %s loaded\n",
|
|
@@ -3038,8 +3040,17 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
|
|
|
tp->cp_cmd = PCIMulRW | RxChkSum;
|
|
|
|
|
|
+ tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
|
|
|
+ if (!tp->pcie_cap)
|
|
|
+ netif_info(tp, probe, dev, "no PCI Express capability\n");
|
|
|
+
|
|
|
+ if (this_use_dac < 0)
|
|
|
+ this_use_dac = tp->pcie_cap != 0;
|
|
|
+
|
|
|
if ((sizeof(dma_addr_t) > 4) &&
|
|
|
- !pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) && use_dac) {
|
|
|
+ this_use_dac &&
|
|
|
+ !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
|
|
|
+ netif_info(tp, probe, dev, "using 64-bit DMA\n");
|
|
|
tp->cp_cmd |= PCIDAC;
|
|
|
dev->features |= NETIF_F_HIGHDMA;
|
|
|
} else {
|
|
@@ -3058,10 +3069,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
goto err_out_free_res_4;
|
|
|
}
|
|
|
|
|
|
- tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
|
|
|
- if (!tp->pcie_cap)
|
|
|
- netif_info(tp, probe, dev, "no PCI Express capability\n");
|
|
|
-
|
|
|
RTL_W16(IntrMask, 0x0000);
|
|
|
|
|
|
/* Soft reset the chip. */
|