b43: N-PHY: turn radio on/off (rfkill)
[safe/jmp/linux-2.6] / drivers / net / cxgb3 / t3_hw.c
index e78d341..3ab9f51 100644 (file)
@@ -1262,7 +1262,8 @@ void t3_link_changed(struct adapter *adapter, int port_id)
                lc->fc = fc;
        }
 
-       t3_os_link_changed(adapter, port_id, link_ok, speed, duplex, fc);
+       t3_os_link_changed(adapter, port_id, link_ok && !pi->link_fault,
+                          speed, duplex, fc);
 }
 
 void t3_link_fault(struct adapter *adapter, int port_id)
@@ -3465,7 +3466,7 @@ static void config_pcie(struct adapter *adap)
                {201, 321, 258, 450, 834, 1602}
        };
 
-       u16 val;
+       u16 val, devid;
        unsigned int log2_width, pldsize;
        unsigned int fst_trn_rx, fst_trn_tx, acklat, rpllmt;
 
@@ -3473,6 +3474,17 @@ static void config_pcie(struct adapter *adap)
                             adap->params.pci.pcie_cap_addr + PCI_EXP_DEVCTL,
                             &val);
        pldsize = (val & PCI_EXP_DEVCTL_PAYLOAD) >> 5;
+
+       pci_read_config_word(adap->pdev, 0x2, &devid);
+       if (devid == 0x37) {
+               pci_write_config_word(adap->pdev,
+                                     adap->params.pci.pcie_cap_addr +
+                                     PCI_EXP_DEVCTL,
+                                     val & ~PCI_EXP_DEVCTL_READRQ &
+                                     ~PCI_EXP_DEVCTL_PAYLOAD);
+               pldsize = 0;
+       }
+
        pci_read_config_word(adap->pdev,
                             adap->params.pci.pcie_cap_addr + PCI_EXP_LNKCTL,
                             &val);
@@ -3681,8 +3693,12 @@ static void mc7_prep(struct adapter *adapter, struct mc7 *mc7,
 
 void mac_prep(struct cmac *mac, struct adapter *adapter, int index)
 {
+       u16 devid;
+
        mac->adapter = adapter;
-       if (!adapter->params.vpd.xauicfg[1])
+       pci_read_config_word(adapter->pdev, 0x2, &devid);
+
+       if (devid == 0x37 && !adapter->params.vpd.xauicfg[1])
                index = 0;
        mac->offset = (XGMAC0_1_BASE_ADDR - XGMAC0_0_BASE_ADDR) * index;
        mac->nucast = 1;