]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Network/Snp32_64/Dxe/receive_filters.c
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Universal / Network / Snp32_64 / Dxe / receive_filters.c
diff --git a/EdkModulePkg/Universal/Network/Snp32_64/Dxe/receive_filters.c b/EdkModulePkg/Universal/Network/Snp32_64/Dxe/receive_filters.c
deleted file mode 100644 (file)
index 258c4a9..0000000
+++ /dev/null
@@ -1,414 +0,0 @@
-/*++\r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-Module name:\r
-  receive_filters.c\r
-\r
-Abstract:\r
-\r
-Revision history:\r
-  2000-Feb-17 M(f)J   Genesis.\r
---*/\r
-\r
-\r
-#include "Snp.h"\r
-\r
-STATIC\r
-EFI_STATUS\r
-pxe_rcvfilter_enable (\r
-  SNP_DRIVER      *snp,\r
-  UINT32          EnableFlags,\r
-  UINTN           MCastAddressCount,\r
-  EFI_MAC_ADDRESS *MCastAddressList\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
- this routine calls undi to enable the receive filters.\r
-\r
-Arguments:\r
-  snp  - pointer to snp driver structure\r
-  EnableFlags - bit mask for enabling the receive filters\r
-  MCastAddressCount - multicast address count for a new multicast address list\r
-  MCastAddressList  - list of new multicast addresses\r
-\r
-Returns:\r
-\r
---*/\r
-{\r
-  snp->cdb.OpCode     = PXE_OPCODE_RECEIVE_FILTERS;\r
-  snp->cdb.OpFlags    = PXE_OPFLAGS_RECEIVE_FILTER_ENABLE;\r
-  snp->cdb.CPBsize    = PXE_CPBSIZE_NOT_USED;\r
-  snp->cdb.DBsize     = PXE_DBSIZE_NOT_USED;\r
-  snp->cdb.CPBaddr    = PXE_CPBADDR_NOT_USED;\r
-  snp->cdb.DBaddr     = PXE_DBADDR_NOT_USED;\r
-  snp->cdb.StatCode   = PXE_STATCODE_INITIALIZE;\r
-  snp->cdb.StatFlags  = PXE_STATFLAGS_INITIALIZE;\r
-  snp->cdb.IFnum      = snp->if_num;\r
-  snp->cdb.Control    = PXE_CONTROL_LAST_CDB_IN_LIST;\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_UNICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_UNICAST;\r
-  }\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST;\r
-  }\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS;\r
-  }\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST;\r
-  }\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST;\r
-  }\r
-\r
-  if (MCastAddressCount != 0) {\r
-    snp->cdb.CPBsize  = (UINT16) (MCastAddressCount * sizeof (EFI_MAC_ADDRESS));\r
-    snp->cdb.CPBaddr  = (UINT64) (UINTN) snp->cpb;\r
-    CopyMem (snp->cpb, MCastAddressList, snp->cdb.CPBsize);\r
-  }\r
-  //\r
-  // Issue UNDI command and check result.\r
-  //\r
-  DEBUG ((EFI_D_NET, "\nsnp->undi.receive_filters()  "));\r
-\r
-  (*snp->issue_undi32_command) ((UINT64) (UINTN) &snp->cdb);\r
-\r
-  if (snp->cdb.StatCode != EFI_SUCCESS) {\r
-    //\r
-    // UNDI command failed.  Return UNDI status to caller.\r
-    //\r
-    DEBUG (\r
-      (EFI_D_ERROR,\r
-      "\nsnp->undi.receive_filters()  %xh:%xh\n",\r
-      snp->cdb.StatFlags,\r
-      snp->cdb.StatCode)\r
-      );\r
-\r
-    switch (snp->cdb.StatCode) {\r
-    case PXE_STATCODE_INVALID_CDB:\r
-    case PXE_STATCODE_INVALID_CPB:\r
-    case PXE_STATCODE_INVALID_PARAMETER:\r
-      return EFI_INVALID_PARAMETER;\r
-\r
-    case PXE_STATCODE_UNSUPPORTED:\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-pxe_rcvfilter_disable (\r
-  SNP_DRIVER *snp,\r
-  UINT32     DisableFlags,\r
-  BOOLEAN    ResetMCastList\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
- this routine calls undi to disable the receive filters.\r
-\r
-Arguments:\r
-  snp  - pointer to snp driver structure\r
-  DisableFlags - bit mask for disabling the receive filters\r
-  ResetMCastList - boolean flag to reset/delete the multicast filter list\r
-\r
-Returns:\r
-\r
---*/\r
-{\r
-  snp->cdb.OpCode     = PXE_OPCODE_RECEIVE_FILTERS;\r
-  snp->cdb.CPBsize    = PXE_CPBSIZE_NOT_USED;\r
-  snp->cdb.DBsize     = PXE_DBSIZE_NOT_USED;\r
-  snp->cdb.CPBaddr    = PXE_CPBADDR_NOT_USED;\r
-  snp->cdb.DBaddr     = PXE_DBADDR_NOT_USED;\r
-  snp->cdb.StatCode   = PXE_STATCODE_INITIALIZE;\r
-  snp->cdb.StatFlags  = PXE_STATFLAGS_INITIALIZE;\r
-  snp->cdb.IFnum      = snp->if_num;\r
-  snp->cdb.Control    = PXE_CONTROL_LAST_CDB_IN_LIST;\r
-\r
-  snp->cdb.OpFlags    = (UINT16) (DisableFlags ? PXE_OPFLAGS_RECEIVE_FILTER_DISABLE : PXE_OPFLAGS_NOT_USED);\r
-\r
-  if (ResetMCastList) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST;\r
-  }\r
-\r
-  if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_UNICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_UNICAST;\r
-  }\r
-\r
-  if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST;\r
-  }\r
-\r
-  if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS;\r
-  }\r
-\r
-  if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST;\r
-  }\r
-\r
-  if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0) {\r
-    snp->cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST;\r
-  }\r
-  //\r
-  // Issue UNDI command and check result.\r
-  //\r
-  DEBUG ((EFI_D_NET, "\nsnp->undi.receive_filters()  "));\r
-\r
-  (*snp->issue_undi32_command) ((UINT64) (UINTN) &snp->cdb);\r
-\r
-  if (snp->cdb.StatCode != EFI_SUCCESS) {\r
-    //\r
-    // UNDI command failed.  Return UNDI status to caller.\r
-    //\r
-    DEBUG (\r
-      (EFI_D_ERROR,\r
-      "\nsnp->undi.receive_filters()  %xh:%xh\n",\r
-      snp->cdb.StatFlags,\r
-      snp->cdb.StatCode)\r
-      );\r
-\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-pxe_rcvfilter_read (\r
-  SNP_DRIVER *snp\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
- this routine calls undi to read the receive filters.\r
-\r
-Arguments:\r
-  snp  - pointer to snp driver structure\r
-\r
-Returns:\r
-\r
---*/\r
-{\r
-  snp->cdb.OpCode   = PXE_OPCODE_RECEIVE_FILTERS;\r
-  snp->cdb.OpFlags  = PXE_OPFLAGS_RECEIVE_FILTER_READ;\r
-  snp->cdb.CPBsize  = PXE_CPBSIZE_NOT_USED;\r
-  snp->cdb.DBsize   = (UINT16) (snp->mode.MaxMCastFilterCount * sizeof (EFI_MAC_ADDRESS));\r
-  snp->cdb.CPBaddr  = PXE_CPBADDR_NOT_USED;\r
-  if (snp->cdb.DBsize == 0) {\r
-    snp->cdb.DBaddr = (UINT64) NULL;\r
-  } else {\r
-    snp->cdb.DBaddr = (UINT64) (UINTN) snp->db;\r
-    ZeroMem (snp->db, snp->cdb.DBsize);\r
-  }\r
-\r
-  snp->cdb.StatCode   = PXE_STATCODE_INITIALIZE;\r
-  snp->cdb.StatFlags  = PXE_STATFLAGS_INITIALIZE;\r
-  snp->cdb.IFnum      = snp->if_num;\r
-  snp->cdb.Control    = PXE_CONTROL_LAST_CDB_IN_LIST;\r
-\r
-  DEBUG ((EFI_D_NET, "\nsnp->undi.receive_filters()  "));\r
-\r
-  (*snp->issue_undi32_command) ((UINT64) (UINTN) &snp->cdb);\r
-\r
-  if (snp->cdb.StatCode != EFI_SUCCESS) {\r
-    //\r
-    // UNDI command failed.  Return UNDI status to caller.\r
-    //\r
-    DEBUG (\r
-      (EFI_D_ERROR,\r
-      "\nsnp->undi.receive_filters()  %xh:%xh\n",\r
-      snp->cdb.StatFlags,\r
-      snp->cdb.StatCode)\r
-      );\r
-\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-  //\r
-  // Convert UNDI32 StatFlags to EFI SNP filter flags.\r
-  //\r
-  snp->mode.ReceiveFilterSetting = 0;\r
-\r
-  if ((snp->cdb.StatFlags & PXE_STATFLAGS_RECEIVE_FILTER_UNICAST) != 0) {\r
-    snp->mode.ReceiveFilterSetting |= EFI_SIMPLE_NETWORK_RECEIVE_UNICAST;\r
-  }\r
-\r
-  if ((snp->cdb.StatFlags & PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST) != 0) {\r
-    snp->mode.ReceiveFilterSetting |= EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST;\r
-  }\r
-\r
-  if ((snp->cdb.StatFlags & PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS) != 0) {\r
-    snp->mode.ReceiveFilterSetting |= EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS;\r
-  }\r
-\r
-  if ((snp->cdb.StatFlags & PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST) != 0) {\r
-    snp->mode.ReceiveFilterSetting |= EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST;\r
-  }\r
-\r
-  if ((snp->cdb.StatFlags & PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST) != 0) {\r
-    snp->mode.ReceiveFilterSetting |= EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST;\r
-  }\r
-\r
-  CopyMem (snp->mode.MCastFilter, snp->db, snp->cdb.DBsize);\r
-\r
-  //\r
-  // Count number of active entries in multicast filter list.\r
-  //\r
-  {\r
-    EFI_MAC_ADDRESS ZeroMacAddr;\r
-\r
-    SetMem (&ZeroMacAddr, sizeof ZeroMacAddr, 0);\r
-\r
-    for (snp->mode.MCastFilterCount = 0;\r
-         snp->mode.MCastFilterCount < snp->mode.MaxMCastFilterCount;\r
-         snp->mode.MCastFilterCount++\r
-        ) {\r
-      if (CompareMem (\r
-            &snp->mode.MCastFilter[snp->mode.MCastFilterCount],\r
-            &ZeroMacAddr,\r
-            sizeof ZeroMacAddr\r
-            ) == 0) {\r
-        break;\r
-      }\r
-    }\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-snp_undi32_receive_filters (\r
-  IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
-  IN UINT32                      EnableFlags,\r
-  IN UINT32                      DisableFlags,\r
-  IN BOOLEAN                     ResetMCastList,\r
-  IN UINTN                       MCastAddressCount OPTIONAL,\r
-  IN EFI_MAC_ADDRESS             * MCastAddressList OPTIONAL\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
- This is the SNP interface routine for reading/enabling/disabling the\r
- receive filters.\r
- This routine basically retrieves snp structure, checks the SNP state and\r
- checks the parameter validity, calls one of the above routines to actually\r
- do the work\r
-\r
-Arguments:\r
-  this  - context pointer\r
-  EnableFlags - bit mask for enabling the receive filters\r
-  DisableFlags - bit mask for disabling the receive filters\r
-  ResetMCastList - boolean flag to reset/delete the multicast filter list\r
-  MCastAddressCount - multicast address count for a new multicast address list\r
-  MCastAddressList  - list of new multicast addresses\r
-\r
-Returns:\r
-\r
---*/\r
-{\r
-  SNP_DRIVER  *snp;\r
-  EFI_STATUS  Status;\r
-\r
-  if (this == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  snp = EFI_SIMPLE_NETWORK_DEV_FROM_THIS (this);\r
-\r
-  if (snp == NULL) {\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  switch (snp->mode.State) {\r
-  case EfiSimpleNetworkInitialized:\r
-    break;\r
-\r
-  case EfiSimpleNetworkStopped:\r
-    return EFI_NOT_STARTED;\r
-\r
-  case EfiSimpleNetworkStarted:\r
-    return EFI_DEVICE_ERROR;\r
-\r
-  default:\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-  //\r
-  // check if we are asked to enable or disable something that the UNDI\r
-  // does not even support!\r
-  //\r
-  if ((EnableFlags &~snp->mode.ReceiveFilterMask) != 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if ((DisableFlags &~snp->mode.ReceiveFilterMask) != 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (ResetMCastList) {\r
-    DisableFlags |= EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST & snp->mode.ReceiveFilterMask;\r
-    MCastAddressCount = 0;\r
-    MCastAddressList  = NULL;\r
-  } else {\r
-    if (MCastAddressCount != 0) {\r
-      if (MCastAddressCount > snp->mode.MaxMCastFilterCount) {\r
-        return EFI_INVALID_PARAMETER;\r
-      }\r
-\r
-      if (MCastAddressList == NULL) {\r
-        return EFI_INVALID_PARAMETER;\r
-      }\r
-    }\r
-  }\r
-\r
-  if (EnableFlags == 0 && DisableFlags == 0 && !ResetMCastList && MCastAddressCount == 0) {\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0 && MCastAddressCount == 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if ((EnableFlags != 0) || (MCastAddressCount != 0)) {\r
-    Status = pxe_rcvfilter_enable (\r
-              snp,\r
-              EnableFlags,\r
-              MCastAddressCount,\r
-              MCastAddressList\r
-              );\r
-\r
-    if (Status != EFI_SUCCESS) {\r
-      return Status;\r
-    }\r
-  }\r
-\r
-  if ((DisableFlags != 0) || ResetMCastList) {\r
-    Status = pxe_rcvfilter_disable (snp, DisableFlags, ResetMCastList);\r
-\r
-    if (Status != EFI_SUCCESS) {\r
-      return Status;\r
-    }\r
-  }\r
-\r
-  return pxe_rcvfilter_read (snp);\r
-}\r