diff options
author | Fu Siyuan <siyuan.fu@intel.com> | 2014-10-31 00:38:39 +0000 |
---|---|---|
committer | sfu5 <sfu5@Edk2> | 2014-10-31 00:38:39 +0000 |
commit | 3f103c08bac599bd68d28fb5dde982049469b983 (patch) | |
tree | 9146d2ced89df7b1953b248b336ae38511c71a3a | |
parent | b176333801d0f4e7593579ec3d86163224ed6ed8 (diff) | |
download | edk2-platforms-3f103c08bac599bd68d28fb5dde982049469b983.tar.xz |
Fix a bug introuduced by r16104, not all NIC device implement both memory and IO bar.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-By: Ye, Ting (ting.ye@intel.com)
Reviewed-By: Wu, Jiaxin <jiaxin.wu@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16278 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | MdeModulePkg/Universal/Network/SnpDxe/Snp.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/MdeModulePkg/Universal/Network/SnpDxe/Snp.c b/MdeModulePkg/Universal/Network/SnpDxe/Snp.c index aa5926a6a5..a63dd10b29 100644 --- a/MdeModulePkg/Universal/Network/SnpDxe/Snp.c +++ b/MdeModulePkg/Universal/Network/SnpDxe/Snp.c @@ -455,10 +455,14 @@ SimpleNetworkDriverStart ( Snp->Db = (VOID *) ((UINTN) Address + 2048);
//
- // Find the correct memory and io bar.
+ // Find the correct BAR to do IO.
//
- Snp->MemoryBarIndex = PCI_MAX_BAR;
- Snp->IoBarIndex = PCI_MAX_BAR;
+ // Enumerate through the PCI BARs for the device to determine which one is
+ // the IO BAR. Save the index of the BAR into the adapter info structure.
+ // for regular 32bit BARs, 0 is memory mapped, 1 is io mapped
+ //
+ Snp->MemoryBarIndex = 0;
+ Snp->IoBarIndex = 1;
for (BarIndex = 0; BarIndex < PCI_MAX_BAR; BarIndex++) {
Status = PciIo->GetBarAttributes (
PciIo,
@@ -480,9 +484,6 @@ SimpleNetworkDriverStart ( FreePool (BarDesc);
}
- if ((Snp->MemoryBarIndex == PCI_MAX_BAR) || (Snp->IoBarIndex == PCI_MAX_BAR)) {
- goto Error_DeleteSNP;
- }
Status = PxeStart (Snp);
|