/* Once a protocol type and station address have been assigned to this ARP instance, all the following ARP functions will use this information. Attempting to change the protocol type or station address to a configured ARP instance will result in errors. */
EFI_STATUS EFIAPI ArpConfigure(IN EFI_ARP_PROTOCOL *This, IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL)
/* Once a protocol type and station address have been assigned to this ARP instance, all the following ARP functions will use this information. Attempting to change the protocol type or station address to a configured ARP instance will result in errors. */
EFI_STATUS EFIAPI ArpConfigure(IN EFI_ARP_PROTOCOL *This, IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL)
{
  EFI_STATUS         Status;
  ARP_INSTANCE_DATA  *Instance;
  EFI_TPL            OldTpl;
  if (This == NULL) {
    return EFI_INVALID_PARAMETER;
  }
  if ((ConfigData != NULL) &&
      ((ConfigData->SwAddressLength == 0) ||
       (ConfigData->StationAddress == NULL) ||
       (ConfigData->SwAddressType <= 1500)))
  {
    return EFI_INVALID_PARAMETER;
  }
  Instance = ARP_INSTANCE_DATA_FROM_THIS (This);
  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
  Status = ArpConfigureInstance (Instance, ConfigData);
  gBS->RestoreTPL (OldTpl);
  return Status;
}