]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/SnpDxe/snp.c
Remove gEfiNetworkInterfaceIdentifierProtocolGuid reference from code base. Only...
[mirror_edk2.git] / MdeModulePkg / Universal / Network / SnpDxe / snp.c
index 2f88c71ae8dd781d929e805e90872ac65e997b22..31b5022bd08f9f5d2c15f116262891447de7e67d 100644 (file)
@@ -329,9 +329,7 @@ SimpleNetworkDriverSupported (
   EFI_STATUS                                Status;\r
   EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *NiiProtocol;\r
   PXE_UNDI                                  *pxe;\r
-  BOOLEAN                                   IsUndi31;\r
 \r
-  IsUndi31 = FALSE;\r
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiDevicePathProtocolGuid,\r
@@ -352,34 +350,16 @@ SimpleNetworkDriverSupported (
                   Controller,\r
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
-  if (Status == EFI_ALREADY_STARTED)\r
-  {\r
-    DEBUG ((EFI_D_INFO, "Support(): Already Started. on handle %x\n", Controller));\r
-    return EFI_ALREADY_STARTED;\r
-  }\r
 \r
-  if (!EFI_ERROR (Status))\r
-  {\r
-    DEBUG ((EFI_D_INFO, "Support(): UNDI3.1 found on handle %x\n", Controller));\r
-    IsUndi31 = TRUE;\r
-  } else {\r
-    //\r
-    // try the older 3.0 driver\r
-    //\r
-    Status = gBS->OpenProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-                    (VOID **) &NiiProtocol,\r
-                    This->DriverBindingHandle,\r
-                    Controller,\r
-                    EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                    );\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
+  if (EFI_ERROR (Status)) {\r
+    if (Status == EFI_ALREADY_STARTED) {\r
+      DEBUG ((EFI_D_INFO, "Support(): Already Started. on handle %x\n", Controller));\r
     }\r
-\r
-    DEBUG ((EFI_D_INFO, "Support(): UNDI3.0 found on handle %x\n", Controller));\r
+    return Status;\r
   }\r
+\r
+  DEBUG ((EFI_D_INFO, "Support(): UNDI3.1 found on handle %x\n", Controller));\r
+\r
   //\r
   // check the version, we don't want to connect to the undi16\r
   //\r
@@ -445,22 +425,12 @@ SimpleNetworkDriverSupported (
   DEBUG ((EFI_D_INFO, "Support(): supported on %x\n", Controller));\r
 \r
 Done:\r
-  if (IsUndi31) {\r
-    gBS->CloseProtocol (\r
-          Controller,\r
-          &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
-          This->DriverBindingHandle,\r
-          Controller\r
-          );\r
-\r
-  } else {\r
-    gBS->CloseProtocol (\r
-          Controller,\r
-          &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-          This->DriverBindingHandle,\r
-          Controller\r
-          );\r
-  }\r
+  gBS->CloseProtocol (\r
+        Controller,\r
+        &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
+        This->DriverBindingHandle,\r
+        Controller\r
+        );\r
 \r
   return Status;\r
 }\r
@@ -491,11 +461,7 @@ SimpleNetworkDriverStart (
   PXE_UNDI                                  *pxe;\r
   SNP_DRIVER                                *snp;\r
   VOID                                      *addr;\r
-  VOID                                      *addrUnmap;\r
-  EFI_PHYSICAL_ADDRESS                      paddr;\r
   EFI_HANDLE                                Handle;\r
-  UINTN                                     Size;\r
-  BOOLEAN                                   UndiNew;\r
   PXE_PCI_CONFIG_INFO                       ConfigInfo;\r
   PCI_TYPE00                                *ConfigHeader;\r
   UINT32                                    *TempBar;\r
@@ -539,8 +505,7 @@ SimpleNetworkDriverStart (
     return Status;\r
   }\r
   //\r
-  // Get the NII interface. look for 3.1 undi first, if it is not there\r
-  // then look for 3.0, validate the interface.\r
+  // Get the NII interface.\r
   //\r
   Status = gBS->OpenProtocol (\r
                   Controller,\r
@@ -550,7 +515,7 @@ SimpleNetworkDriverStart (
                   Controller,\r
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
-  if (Status == EFI_ALREADY_STARTED) {\r
+  if (EFI_ERROR (Status)) {\r
     gBS->CloseProtocol (\r
           Controller,\r
           &gEfiDevicePathProtocolGuid,\r
@@ -560,36 +525,7 @@ SimpleNetworkDriverStart (
     return Status;\r
   }\r
 \r
-  if (!EFI_ERROR (Status)) {\r
-    //\r
-    // probably not a 3.1 UNDI\r
-    //\r
-    UndiNew = TRUE;\r
-    DEBUG ((EFI_D_INFO, "Start(): UNDI3.1 found\n"));\r
-\r
-  } else {\r
-    UndiNew = FALSE;\r
-    Status = gBS->OpenProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-                    (VOID **) &Nii,\r
-                    This->DriverBindingHandle,\r
-                    Controller,\r
-                    EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                    );\r
-    if (EFI_ERROR (Status)) {\r
-      gBS->CloseProtocol (\r
-            Controller,\r
-            &gEfiDevicePathProtocolGuid,\r
-            This->DriverBindingHandle,\r
-            Controller\r
-            );\r
-\r
-      return Status;\r
-    }\r
-\r
-    DEBUG ((EFI_D_INFO, "Start(): UNDI3.0 found\n"));\r
-  }\r
+  DEBUG ((EFI_D_INFO, "Start(): UNDI3.1 found\n"));\r
 \r
   pxe = (PXE_UNDI *) (UINTN) (Nii->ID);\r
 \r
@@ -632,30 +568,9 @@ SimpleNetworkDriverStart (
 \r
   snp = (SNP_DRIVER *) (UINTN) addr;\r
 \r
-  if (!UndiNew) {\r
-    Size = SNP_MEM_PAGES (sizeof (SNP_DRIVER));\r
-\r
-    Status = mPciIoFncs->Map (\r
-                          mPciIoFncs,\r
-                          EfiPciIoOperationBusMasterCommonBuffer,\r
-                          addr,\r
-                          &Size,\r
-                          &paddr,\r
-                          &addrUnmap\r
-                          );\r
-\r
-    ASSERT (paddr);\r
-\r
-    DEBUG ((EFI_D_NET, "\nSNP_DRIVER @ %Xh, sizeof(SNP_DRIVER) == %d", addr, sizeof (SNP_DRIVER)));\r
-    snp                 = (SNP_DRIVER *) (UINTN) paddr;\r
-    snp->SnpDriverUnmap = addrUnmap;\r
-  }\r
-\r
   ZeroMem (snp, sizeof (SNP_DRIVER));\r
 \r
   snp->IoFncs     = mPciIoFncs;\r
-  snp->IsOldUndi  = (BOOLEAN) (!UndiNew);\r
-\r
   snp->Signature  = SNP_DRIVER_SIGNATURE;\r
 \r
   EfiInitializeLock (&snp->lock, TPL_NOTIFY);\r
@@ -725,26 +640,9 @@ SimpleNetworkDriverStart (
     goto Error_DeleteSNP;\r
   }\r
 \r
-  if (snp->IsOldUndi) {\r
-    Size = SNP_MEM_PAGES (4096);\r
-\r
-    Status = mPciIoFncs->Map (\r
-                          mPciIoFncs,\r
-                          EfiPciIoOperationBusMasterCommonBuffer,\r
-                          addr,\r
-                          &Size,\r
-                          &paddr,\r
-                          &snp->CpbUnmap\r
-                          );\r
+  snp->cpb  = (VOID *) (UINTN) addr;\r
+  snp->db   = (VOID *) ((UINTN) addr + 2048);\r
 \r
-    ASSERT (paddr);\r
-\r
-    snp->cpb  = (VOID *) (UINTN) paddr;\r
-    snp->db   = (VOID *) ((UINTN) paddr + 2048);\r
-  } else {\r
-    snp->cpb  = (VOID *) (UINTN) addr;\r
-    snp->db   = (VOID *) ((UINTN) addr + 2048);\r
-  }\r
   //\r
   // pxe_start call is going to give the callback functions to UNDI, these callback\r
   // functions use the BarIndex values from the snp structure, so these must be initialized\r
@@ -762,7 +660,7 @@ SimpleNetworkDriverStart (
   Status = pxe_start (snp);\r
 \r
   if (Status != EFI_SUCCESS) {\r
-    goto Error_DeleteCPBDB;\r
+    goto Error_DeleteSNP;\r
   }\r
 \r
   snp->cdb.OpCode     = PXE_OPCODE_GET_INIT_INFO;\r
@@ -792,7 +690,7 @@ SimpleNetworkDriverStart (
   if (snp->cdb.StatCode != PXE_STATCODE_SUCCESS) {\r
     DEBUG ((EFI_D_NET, "\nsnp->undi.init_info()  %xh:%xh\n", snp->cdb.StatFlags, snp->cdb.StatCode));\r
     pxe_stop (snp);\r
-    goto Error_DeleteCPBDB;\r
+    goto Error_DeleteSNP;\r
   }\r
 \r
   snp->cdb.OpCode     = PXE_OPCODE_GET_CONFIG_INFO;\r
@@ -817,7 +715,7 @@ SimpleNetworkDriverStart (
   if (snp->cdb.StatCode != PXE_STATCODE_SUCCESS) {\r
     DEBUG ((EFI_D_NET, "\nsnp->undi.config_info()  %xh:%xh\n", snp->cdb.StatFlags, snp->cdb.StatCode));\r
     pxe_stop (snp);\r
-    goto Error_DeleteCPBDB;\r
+    goto Error_DeleteSNP;\r
   }\r
   //\r
   // Find the correct BAR to do IO.\r
@@ -846,79 +744,6 @@ SimpleNetworkDriverStart (
     TempBar++;\r
   }\r
 \r
-  //\r
-  // We allocate 2 more global buffers for undi 3.0 interface. We use these\r
-  // buffers to pass to undi when the user buffers are beyond 4GB.\r
-  // UNDI 3.0 wants all the addresses passed to it to be\r
-  // within 2GB limit, create them here and map them so that when undi calls\r
-  // v2p callback to check if the physical address is < 2gb, we will pass.\r
-  //\r
-  // For 3.1 and later UNDIs, we do not do this because undi is\r
-  // going to call the map() callback if and only if it wants to use the\r
-  // device address for any address it receives.\r
-  //\r
-  if (snp->IsOldUndi) {\r
-    //\r
-    // buffer for receive\r
-    //\r
-    Size = SNP_MEM_PAGES (snp->init_info.MediaHeaderLen + snp->init_info.FrameDataLen);\r
-    Status = mPciIoFncs->AllocateBuffer (\r
-                          mPciIoFncs,\r
-                          AllocateAnyPages,\r
-                          EfiBootServicesData,\r
-                          Size,\r
-                          &addr,\r
-                          0\r
-                          );\r
-\r
-    if (Status != EFI_SUCCESS) {\r
-      DEBUG ((EFI_D_ERROR, "\nCould not allocate receive buffer.\n"));\r
-      goto Error_DeleteCPBDB;\r
-    }\r
-\r
-    Status = mPciIoFncs->Map (\r
-                          mPciIoFncs,\r
-                          EfiPciIoOperationBusMasterCommonBuffer,\r
-                          addr,\r
-                          &Size,\r
-                          &paddr,\r
-                          &snp->ReceiveBufUnmap\r
-                          );\r
-\r
-    ASSERT (paddr);\r
-\r
-    snp->receive_buf = (UINT8 *) (UINTN) paddr;\r
-\r
-    //\r
-    // buffer for fill_header\r
-    //\r
-    Size = SNP_MEM_PAGES (snp->init_info.MediaHeaderLen);\r
-    Status = mPciIoFncs->AllocateBuffer (\r
-                          mPciIoFncs,\r
-                          AllocateAnyPages,\r
-                          EfiBootServicesData,\r
-                          Size,\r
-                          &addr,\r
-                          0\r
-                          );\r
-\r
-    if (Status != EFI_SUCCESS) {\r
-      DEBUG ((EFI_D_ERROR, "\nCould not allocate fill_header buffer.\n"));\r
-      goto Error_DeleteRCVBuf;\r
-    }\r
-\r
-    Status = mPciIoFncs->Map (\r
-                          mPciIoFncs,\r
-                          EfiPciIoOperationBusMasterCommonBuffer,\r
-                          addr,\r
-                          &Size,\r
-                          &paddr,\r
-                          &snp->FillHdrBufUnmap\r
-                          );\r
-\r
-    ASSERT (paddr);\r
-    snp->fill_hdr_buf = (UINT8 *) (UINTN) paddr;\r
-  }\r
   //\r
   //  Initialize simple network protocol mode structure\r
   //\r
@@ -992,7 +817,7 @@ SimpleNetworkDriverStart (
 \r
   if (Status) {\r
     pxe_stop (snp);\r
-    goto Error_DeleteHdrBuf;\r
+    goto Error_DeleteSNP;\r
   }\r
 \r
   Status = pxe_get_stn_addr (snp);\r
@@ -1001,7 +826,7 @@ SimpleNetworkDriverStart (
     DEBUG ((EFI_D_ERROR, "\nsnp->undi.get_station_addr()  failed.\n"));\r
     pxe_shutdown (snp);\r
     pxe_stop (snp);\r
-    goto Error_DeleteHdrBuf;\r
+    goto Error_DeleteSNP;\r
   }\r
 \r
   snp->mode.MediaPresent = FALSE;\r
@@ -1033,43 +858,6 @@ SimpleNetworkDriverStart (
     return Status;\r
   }\r
 \r
-Error_DeleteHdrBuf:\r
-  if (snp->IsOldUndi) {\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          snp->FillHdrBufUnmap\r
-                          );\r
-    Size = SNP_MEM_PAGES (snp->init_info.MediaHeaderLen);\r
-    mPciIoFncs->FreeBuffer (\r
-                  mPciIoFncs,\r
-                  Size,\r
-                  snp->fill_hdr_buf\r
-                  );\r
-  }\r
-\r
-Error_DeleteRCVBuf:\r
-  if (snp->IsOldUndi) {\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          snp->ReceiveBufUnmap\r
-                          );\r
-    Size = SNP_MEM_PAGES (snp->init_info.MediaHeaderLen + snp->init_info.FrameDataLen);\r
-    mPciIoFncs->FreeBuffer (\r
-                  mPciIoFncs,\r
-                  Size,\r
-                  snp->receive_buf\r
-                  );\r
-\r
-  }\r
-\r
-Error_DeleteCPBDB:\r
-  if (snp->IsOldUndi) {\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          snp->CpbUnmap\r
-                          );\r
-  }\r
-\r
   Status = mPciIoFncs->FreeBuffer (\r
                         mPciIoFncs,\r
                         SNP_MEM_PAGES (4096),\r
@@ -1077,12 +865,6 @@ Error_DeleteCPBDB:
                         );\r
 \r
 Error_DeleteSNP:\r
-  if (snp->IsOldUndi) {\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          snp->SnpDriverUnmap\r
-                          );\r
-  }\r
 \r
   mPciIoFncs->FreeBuffer (\r
                 mPciIoFncs,\r
@@ -1090,21 +872,12 @@ Error_DeleteSNP:
                 snp\r
                 );\r
 NiiError:\r
-  if (!UndiNew) {\r
-    gBS->CloseProtocol (\r
-          Controller,\r
-          &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-          This->DriverBindingHandle,\r
-          Controller\r
-          );\r
-  } else {\r
-    gBS->CloseProtocol (\r
-          Controller,\r
-          &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
-          This->DriverBindingHandle,\r
-          Controller\r
-          );\r
-  }\r
+  gBS->CloseProtocol (\r
+        Controller,\r
+        &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
+        This->DriverBindingHandle,\r
+        Controller\r
+        );\r
 \r
   gBS->CloseProtocol (\r
         Controller,\r
@@ -1163,21 +936,12 @@ SimpleNetworkDriverStop (
     return Status;\r
   }\r
 \r
-  if (!Snp->IsOldUndi) {\r
-    Status = gBS->CloseProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
-                    This->DriverBindingHandle,\r
-                    Controller\r
-                    );\r
-  } else {\r
-    Status = gBS->CloseProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-                    This->DriverBindingHandle,\r
-                    Controller\r
-                    );\r
-  }\r
+  Status = gBS->CloseProtocol (\r
+                  Controller,\r
+                  &gEfiNetworkInterfaceIdentifierProtocolGuid_31,\r
+                  This->DriverBindingHandle,\r
+                  Controller\r
+                  );\r
 \r
   Status = gBS->CloseProtocol (\r
                   Controller,\r
@@ -1189,38 +953,6 @@ SimpleNetworkDriverStop (
   pxe_shutdown (Snp);\r
   pxe_stop (Snp);\r
 \r
-  if (Snp->IsOldUndi) {\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          Snp->FillHdrBufUnmap\r
-                          );\r
-\r
-    mPciIoFncs->FreeBuffer (\r
-                  mPciIoFncs,\r
-                  SNP_MEM_PAGES (Snp->init_info.MediaHeaderLen),\r
-                  Snp->fill_hdr_buf\r
-                  );\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          Snp->ReceiveBufUnmap\r
-                          );\r
-\r
-    mPciIoFncs->FreeBuffer (\r
-                  mPciIoFncs,\r
-                  SNP_MEM_PAGES (Snp->init_info.MediaHeaderLen + Snp->init_info.FrameDataLen),\r
-                  Snp->receive_buf\r
-                  );\r
-\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          Snp->CpbUnmap\r
-                          );\r
-    Status = mPciIoFncs->Unmap (\r
-                          mPciIoFncs,\r
-                          Snp->SnpDriverUnmap\r
-                          );\r
-  }\r
-\r
   mPciIoFncs->FreeBuffer (\r
                 mPciIoFncs,\r
                 SNP_MEM_PAGES (4096),\r