|
@@ -540,20 +540,12 @@ static void eeprom_readword(struct ql3_adapter *qdev,
|
|
|
fm93c56a_deselect(qdev);
|
|
|
}
|
|
|
|
|
|
-static void ql_swap_mac_addr(u8 * macAddress)
|
|
|
-{
|
|
|
-#ifdef __BIG_ENDIAN
|
|
|
- u8 temp;
|
|
|
- temp = macAddress[0];
|
|
|
- macAddress[0] = macAddress[1];
|
|
|
- macAddress[1] = temp;
|
|
|
- temp = macAddress[2];
|
|
|
- macAddress[2] = macAddress[3];
|
|
|
- macAddress[3] = temp;
|
|
|
- temp = macAddress[4];
|
|
|
- macAddress[4] = macAddress[5];
|
|
|
- macAddress[5] = temp;
|
|
|
-#endif
|
|
|
+static void ql_set_mac_addr(struct net_device *ndev, u16 *addr)
|
|
|
+{
|
|
|
+ __le16 *p = (__le16 *)ndev->dev_addr;
|
|
|
+ p[0] = cpu_to_le16(addr[0]);
|
|
|
+ p[1] = cpu_to_le16(addr[1]);
|
|
|
+ p[2] = cpu_to_le16(addr[2]);
|
|
|
}
|
|
|
|
|
|
static int ql_get_nvram_params(struct ql3_adapter *qdev)
|
|
@@ -590,18 +582,6 @@ static int ql_get_nvram_params(struct ql3_adapter *qdev)
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * We have a problem with endianness for the MAC addresses
|
|
|
- * and the two 8-bit values version, and numPorts. We
|
|
|
- * have to swap them on big endian systems.
|
|
|
- */
|
|
|
- ql_swap_mac_addr(qdev->nvram_data.funcCfg_fn0.macAddress);
|
|
|
- ql_swap_mac_addr(qdev->nvram_data.funcCfg_fn1.macAddress);
|
|
|
- ql_swap_mac_addr(qdev->nvram_data.funcCfg_fn2.macAddress);
|
|
|
- ql_swap_mac_addr(qdev->nvram_data.funcCfg_fn3.macAddress);
|
|
|
- pEEPROMData = (u16 *) & qdev->nvram_data.version;
|
|
|
- *pEEPROMData = le16_to_cpu(*pEEPROMData);
|
|
|
-
|
|
|
spin_unlock_irqrestore(&qdev->hw_lock, hw_flags);
|
|
|
return checksum;
|
|
|
}
|
|
@@ -3035,7 +3015,7 @@ static int ql_alloc_mem_resources(struct ql3_adapter *qdev)
|
|
|
LS_64BITS(qdev->shadow_reg_phy_addr);
|
|
|
|
|
|
qdev->prsp_producer_index =
|
|
|
- (u32 *) (((u8 *) qdev->preq_consumer_index) + 8);
|
|
|
+ (__le32 *) (((u8 *) qdev->preq_consumer_index) + 8);
|
|
|
qdev->rsp_producer_index_phy_addr_high =
|
|
|
qdev->req_consumer_index_phy_addr_high;
|
|
|
qdev->rsp_producer_index_phy_addr_low =
|
|
@@ -3215,7 +3195,7 @@ static int ql_adapter_initialize(struct ql3_adapter *qdev)
|
|
|
ql_write_page1_reg(qdev, &hmem_regs->reqLength, NUM_REQ_Q_ENTRIES);
|
|
|
|
|
|
/* Response Queue Registers */
|
|
|
- *((u16 *) (qdev->prsp_producer_index)) = 0;
|
|
|
+ *((__le16 *) (qdev->prsp_producer_index)) = 0;
|
|
|
qdev->rsp_consumer_index = 0;
|
|
|
qdev->rsp_current = qdev->rsp_q_virt_addr;
|
|
|
|
|
@@ -3548,7 +3528,7 @@ static void ql_set_mac_info(struct ql3_adapter *qdev)
|
|
|
qdev->ndev->name,value);
|
|
|
break;
|
|
|
}
|
|
|
- qdev->numPorts = qdev->nvram_data.numPorts;
|
|
|
+ qdev->numPorts = qdev->nvram_data.version_and_numPorts >> 8;
|
|
|
}
|
|
|
|
|
|
static void ql_display_dev_info(struct net_device *ndev)
|
|
@@ -4051,12 +4031,10 @@ static int __devinit ql3xxx_probe(struct pci_dev *pdev,
|
|
|
/* Validate and set parameters */
|
|
|
if (qdev->mac_index) {
|
|
|
ndev->mtu = qdev->nvram_data.macCfg_port1.etherMtu_mac ;
|
|
|
- memcpy(ndev->dev_addr, &qdev->nvram_data.funcCfg_fn2.macAddress,
|
|
|
- ETH_ALEN);
|
|
|
+ ql_set_mac_addr(ndev, qdev->nvram_data.funcCfg_fn2.macAddress);
|
|
|
} else {
|
|
|
ndev->mtu = qdev->nvram_data.macCfg_port0.etherMtu_mac ;
|
|
|
- memcpy(ndev->dev_addr, &qdev->nvram_data.funcCfg_fn0.macAddress,
|
|
|
- ETH_ALEN);
|
|
|
+ ql_set_mac_addr(ndev, qdev->nvram_data.funcCfg_fn0.macAddress);
|
|
|
}
|
|
|
memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
|
|
|
|