#include <ethernet.h>
#include "pdo.h"
+#include "registry.h"
#include "frontend.h"
#include "mac.h"
#include "thread.h"
EX_SPIN_LOCK Lock;
BOOLEAN Connected;
BOOLEAN Enabled;
+ ULONG Speed;
ULONG MaximumFrameSize;
ETHERNET_ADDRESS PermanentAddress;
ETHERNET_ADDRESS CurrentAddress;
OUT PXENVIF_MAC *Mac
)
{
+ HANDLE ParametersKey;
+ ULONG MacSpeed;
NTSTATUS status;
*Mac = __MacAllocate(sizeof (XENVIF_MAC));
if (*Mac == NULL)
goto fail1;
+ ParametersKey = DriverGetParametersKey();
+
+ (*Mac)->Speed = 100;
+
+ if (ParametersKey != NULL) {
+ status = RegistryQueryDwordValue(ParametersKey,
+ "MacSpeed",
+ &MacSpeed);
+ if (NT_SUCCESS(status))
+ (*Mac)->Speed = MacSpeed;
+ }
+
InitializeListHead(&(*Mac)->MulticastList);
FdoGetDebugInterface(PdoGetFdo(FrontendGetPdo(Frontend)),
Mac->Lock = 0;
+ Mac->Speed = 0;
+
ASSERT(IsZeroMemory(Mac, sizeof (XENVIF_MAC)));
__MacFree(Mac);
}
"speed",
&Buffer);
if (!NT_SUCCESS(status)) {
- Speed = 1;
+ Speed = Mac->Speed;
Unit = "G";
} else {
Speed = _strtoui64(Buffer, &Unit, 10);