Protect against probing AR2425 if HAL doesn't support it

AR2424 and AR2425 share the same PCI ID.  Probing AR2425 with HAL that
doesn't support it is problematic.  It causes an unhandled NMI and puts
the device to a non-functional state.  After that, even HAL that
supports AR2425 won't be able to use the device until the system is
rebooted.

Reject AR2425 devices if HAL doesn't positively indicate support for
them.


git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3825 0192ed92-7a03-0410-a25b-9323aeb14dbd
This commit is contained in:
proski 2008-07-30 21:33:40 +00:00
parent 8d74405839
commit 569637796f
1 changed files with 19 additions and 0 deletions

View File

@ -190,6 +190,25 @@ ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto bad1;
}
/*
* Reject new MAC revisions if HAL doesn't support AR2425. Ideally, it could
* be done in the PCI ID table, but AR2424 and AR2425 share the same vendor ID
* 168c:001c.
*/
#ifndef AH_SUPPORT_2425
#define AR5K_SREV 0x4020 /* MAC revision */
#define AR5K_SREV_CUTOFF 0xE0 /* Cutoff revision */
{
u_int32_t mac_rev = readl(mem + AR5K_SREV);
if (mac_rev > AR5K_SREV_CUTOFF)
{
printk(KERN_ERR "%s: HAL doesn't support MAC revision "
"0x%02x\n", dev_info, mac_rev);
goto bad2;
}
}
#endif
dev = alloc_netdev(sizeof(struct ath_pci_softc), "wifi%d", ether_setup);
if (dev == NULL) {
printk(KERN_ERR "%s: no memory for device state\n", dev_info);