On Fri, Dec 02, 2016 at 07:16:09PM -0600, Daniil Egranov wrote:
Corrected the code for dual MAC controllers. The YUKON_DRIVER driver's structure includes a controller port number. The SNP interface functions passing a msk_if_softc object (corresponding to the controller interface) to the if_msk interface functions. Multi-controller and multi-MAC support: use a linked list to store the association between EFI controller handle and the interface data structure.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Daniil Egranov daniil.egranov@arm.com
Drivers/Net/MarvellYukonDxe/DriverBinding.c | 451 +++++++++++++++++++--------- Drivers/Net/MarvellYukonDxe/MarvellYukon.h | 71 +++++ Drivers/Net/MarvellYukonDxe/Snp.c | 64 +++- 3 files changed, 437 insertions(+), 149 deletions(-)
diff --git a/Drivers/Net/MarvellYukonDxe/DriverBinding.c b/Drivers/Net/MarvellYukonDxe/DriverBinding.c index 95068fa..5269e7a 100644 --- a/Drivers/Net/MarvellYukonDxe/DriverBinding.c +++ b/Drivers/Net/MarvellYukonDxe/DriverBinding.c @@ -19,6 +19,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "MarvellYukon.h" #include "if_msk.h" +STATIC LIST_ENTRY MarvellYukonDrvDataHead;
/** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -110,27 +112,14 @@ MarvellYukonDriverStart ( MAC_ADDR_DEVICE_PATH MacDeviceNode; VOID *ChildPciIo; YUKON_DRIVER *YukonDriver;
- Status = gBS->AllocatePool (EfiBootServicesData,
sizeof (YUKON_DRIVER),
(VOID**) &YukonDriver);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "Marvell Yukon: AllocatePool() failed with Status = %r\n", EFI_OUT_OF_RESOURCES));
- return Status;
- }
- gBS->SetMem (YukonDriver, sizeof (YUKON_DRIVER), 0);
- EfiInitializeLock (&YukonDriver->Lock, TPL_NOTIFY);
- //
- // Set the structure signature
- //
- YukonDriver->Signature = YUKON_DRIVER_SIGNATURE;
- struct msk_softc *ScData;
- EFI_PCI_IO_PROTOCOL *PciIo;
- UINTN Port;
Status = gBS->OpenProtocol ( Controller, &gEfiPciIoProtocolGuid,
(VOID **) &YukonDriver->PciIo,
(VOID **) &PciIo, pThis->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER
@@ -143,131 +132,133 @@ MarvellYukonDriverStart ( } //
- // Initialize the simple network protocol
- // Initialize Marvell Yukon controller
- // Get number of ports and MAC address for each port //
- Status = InitializeSNPProtocol (YukonDriver);
- if (EFI_ERROR(Status)){
- DEBUG ((EFI_D_ERROR, "Marvell Yukon: InitializeSNPProtocol: ERROR Status = %r\n", Status));
- gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- Status = mskc_attach (PciIo, &ScData);
- if (EFI_ERROR (Status)) {
- return Status; }
- //
- // Set Device Path
- //
- Status = gBS->OpenProtocol (
Controller,
&gEfiDevicePathProtocolGuid,
(VOID **) &ParentDevicePath,
pThis->DriverBindingHandle,
Controller,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
);
- Status = MarvellYukonAddControllerData (Controller, ScData);
- if (EFI_ERROR (Status)) {
- return Status;
- }
- if (EFI_ERROR(Status)) {
- DEBUG ((EFI_D_ERROR, "Marvell Yukon: OpenProtocol:EFI_DEVICE_PATH_PROTOCOL error. Status = %r\n", Status));
- for (Port = 0; Port < ScData->msk_num_port; Port++) {
- gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- Status = gBS->AllocatePool (EfiBootServicesData,
sizeof (YUKON_DRIVER),
(VOID**) &YukonDriver);
- if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "Marvell Yukon: AllocatePool() failed with Status = %r\n", Status));
return Status;
- }
- gBS->FreePool (YukonDriver);
- return Status;
- }
- if(ScData->msk_if[Port] == NULL) {
DEBUG ((DEBUG_ERROR, "Marvell Yukon: AllocatePool() failed with Status = %r\n", EFI_BAD_BUFFER_SIZE));
return EFI_BAD_BUFFER_SIZE;
- }
- gBS->SetMem (&MacDeviceNode, sizeof (MAC_ADDR_DEVICE_PATH), 0);
- MacDeviceNode.Header.Type = MESSAGING_DEVICE_PATH;
- MacDeviceNode.Header.SubType = MSG_MAC_ADDR_DP;
- gBS->SetMem (YukonDriver, sizeof (YUKON_DRIVER), 0);
- EfiInitializeLock (&YukonDriver->Lock, TPL_NOTIFY);
- SetDevicePathNodeLength (&MacDeviceNode, sizeof (MacDeviceNode));
- //
- // Set the structure signature
- //
- YukonDriver->Signature = YUKON_DRIVER_SIGNATURE;
- //
- // Initialize Yukon card so we can get the MAC address
- //
- Status = mskc_attach (YukonDriver->PciIo, &YukonDriver->SnpMode.PermanentAddress);
- //
- // Set MAC address
- //
- gBS->CopyMem (&YukonDriver->SnpMode.PermanentAddress, &(ScData->msk_if[Port])->MacAddress, sizeof (EFI_MAC_ADDRESS));
- if (EFI_ERROR (Status)) {
- gBS->FreePool (YukonDriver);
- return Status;
- }
- //
- // Set Port number
- //
- YukonDriver->Port = Port;
- mskc_detach();
- //
- // Initialize the simple network protocol
- //
- Status = InitializeSNPProtocol (YukonDriver);
- //
- // Assign fields for device path
- //
- gBS->CopyMem (&YukonDriver->SnpMode.CurrentAddress, &YukonDriver->SnpMode.PermanentAddress, sizeof (EFI_MAC_ADDRESS));
- gBS->CopyMem (&MacDeviceNode.MacAddress, &YukonDriver->SnpMode.CurrentAddress, sizeof (EFI_MAC_ADDRESS));
- if (EFI_ERROR(Status)){
DEBUG ((DEBUG_ERROR, "Marvell Yukon: InitializeSNPProtocol: ERROR Status = %r\n", Status));
gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- }
- MacDeviceNode.IfType = YukonDriver->SnpMode.IfType;
- YukonDriver->DevicePath = AppendDevicePathNode (ParentDevicePath, &MacDeviceNode.Header);
- if (YukonDriver->DevicePath == NULL) {
- DEBUG ((EFI_D_ERROR, "Marvell Yukon: AppendDevicePathNode: ERROR Status = %r\n", EFI_OUT_OF_RESOURCES));
- gBS->CloseProtocol (
- //
- // Set Device Path
- //
- Status = gBS->OpenProtocol ( Controller,
&gEfiPciIoProtocolGuid,
&gEfiDevicePathProtocolGuid,
(VOID **) &ParentDevicePath, pThis->DriverBindingHandle,
Controller
Controller,
EFI_OPEN_PROTOCOL_GET_PROTOCOL );
- gBS->FreePool (YukonDriver);
- return EFI_OUT_OF_RESOURCES;
- }
- //
- // Install both the simple network and device path protocols.
- //
- Status = gBS->InstallMultipleProtocolInterfaces (
&YukonDriver->Controller,
&gEfiSimpleNetworkProtocolGuid,
&YukonDriver->Snp,
&gEfiDevicePathProtocolGuid,
YukonDriver->DevicePath,
NULL
);
- if (EFI_ERROR(Status)) {
DEBUG ((DEBUG_ERROR, "Marvell Yukon: OpenProtocol:EFI_DEVICE_PATH_PROTOCOL error. Status = %r\n", Status));
- if (EFI_ERROR(Status)){
- DEBUG ((EFI_D_ERROR, "Marvell Yukon: InstallMultipleProtocolInterfaces error. Status = %r\n", Status));
gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
gBS->FreePool (YukonDriver);
return Status;
- }
- gBS->FreePool (YukonDriver->DevicePath);
- gBS->FreePool (YukonDriver);
- return Status;
- } else {
- gBS->SetMem (&MacDeviceNode, sizeof (MAC_ADDR_DEVICE_PATH), 0);
- MacDeviceNode.Header.Type = MESSAGING_DEVICE_PATH;
- MacDeviceNode.Header.SubType = MSG_MAC_ADDR_DP;
- SetDevicePathNodeLength (&MacDeviceNode, sizeof (MacDeviceNode));
//
- // Hook as a child device
- // Assign fields for device path //
- Status = gBS->OpenProtocol (Controller,
&gEfiPciIoProtocolGuid,
&ChildPciIo,
pThis->DriverBindingHandle,
YukonDriver->Controller,
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER);
- if (EFI_ERROR(Status)){
DEBUG ((EFI_D_ERROR, "Marvell Yukon: OpenProtocol: child controller error. Status = %r\n", Status));
- gBS->CopyMem (&YukonDriver->SnpMode.CurrentAddress, &YukonDriver->SnpMode.PermanentAddress, sizeof (EFI_MAC_ADDRESS));
- gBS->CopyMem (&MacDeviceNode.MacAddress, &YukonDriver->SnpMode.CurrentAddress, sizeof (EFI_MAC_ADDRESS));
gBS->UninstallMultipleProtocolInterfaces (
- MacDeviceNode.IfType = YukonDriver->SnpMode.IfType;
- YukonDriver->DevicePath = AppendDevicePathNode (ParentDevicePath, &MacDeviceNode.Header);
- if (YukonDriver->DevicePath == NULL) {
DEBUG ((DEBUG_ERROR, "Marvell Yukon: AppendDevicePathNode: ERROR Status = %r\n", EFI_OUT_OF_RESOURCES));
gBS->CloseProtocol ( Controller,
&gEfiSimpleNetworkProtocolGuid,
&YukonDriver->Snp,
&gEfiDevicePathProtocolGuid,
YukonDriver->DevicePath,
NULL
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller );
gBS->FreePool (YukonDriver);
return EFI_OUT_OF_RESOURCES;
- }
- //
- // Install both the simple network and device path protocols.
- //
- Status = gBS->InstallMultipleProtocolInterfaces (
&YukonDriver->Controller,
&gEfiSimpleNetworkProtocolGuid,
&YukonDriver->Snp,
&gEfiDevicePathProtocolGuid,
YukonDriver->DevicePath,
NULL
);
- if (EFI_ERROR(Status)){
DEBUG ((DEBUG_ERROR, "Marvell Yukon: InstallMultipleProtocolInterfaces error. Status = %r\n", Status));
gBS->CloseProtocol ( Controller, @@ -280,13 +271,53 @@ MarvellYukonDriverStart ( gBS->FreePool (YukonDriver); return Status; } else {
DEBUG ((EFI_D_NET, "Marvell Yukon: MarvellYukonDriverSupported: New Controller Handle = %p\n", YukonDriver->Controller));
//
// Hook as a child device
//
Status = gBS->OpenProtocol (Controller,
&gEfiPciIoProtocolGuid,
&ChildPciIo,
pThis->DriverBindingHandle,
YukonDriver->Controller,
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER);
if (EFI_ERROR(Status)){
DEBUG ((DEBUG_ERROR, "Marvell Yukon: OpenProtocol: child controller error. Status = %r\n", Status));
gBS->UninstallMultipleProtocolInterfaces (
Controller,
&gEfiSimpleNetworkProtocolGuid,
&YukonDriver->Snp,
&gEfiDevicePathProtocolGuid,
YukonDriver->DevicePath,
NULL
);
gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
gBS->FreePool (YukonDriver->DevicePath);
gBS->FreePool (YukonDriver);
return Status;
} else {
DEBUG ((DEBUG_NET, "Marvell Yukon: MarvellYukonDriverSupported: New Controller Handle = %p\n", YukonDriver->Controller));
}
Status = MarvellYukonAddControllerData (YukonDriver->Controller, ScData);
if (EFI_ERROR(Status)){
DEBUG ((DEBUG_ERROR, "Marvell Yukon: Failed to register port %d with controller handle %p\n", Port, YukonDriver->Controller));
}
- }
- }
- if (!EFI_ERROR(Status)) {
- Status = gBS->CreateEvent (EVT_SIGNAL_EXIT_BOOT_SERVICES, TPL_CALLBACK,
&MarvellYukonNotifyExitBoot, YukonDriver, &YukonDriver->ExitBootEvent);
- if (!EFI_ERROR(Status)) {
Status = gBS->CreateEvent (EVT_SIGNAL_EXIT_BOOT_SERVICES, TPL_CALLBACK,
&MarvellYukonNotifyExitBoot, YukonDriver, &YukonDriver->ExitBootEvent);
- } }
return Status; @@ -319,6 +350,8 @@ MarvellYukonDriverStop ( EFI_STATUS Status; YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl;
- UINTN ChildController;
- struct msk_softc *ScData;
if (pThis == NULL) { DEBUG ((EFI_D_ERROR, "Marvell Yukon: MarvellYukonDriverStop() failed with Status = %r\n", EFI_INVALID_PARAMETER)); @@ -330,15 +363,10 @@ MarvellYukonDriverStop ( return EFI_INVALID_PARAMETER; }
- if (NumberOfChildren > 0) {
- //
- // Currently support only one network port
- //
- ASSERT (NumberOfChildren == 1);
- for (ChildController = 0; ChildController < NumberOfChildren; ChildController ++) {
Status = gBS->OpenProtocol (
ChildHandleBuffer[0],
ChildHandleBuffer[ChildController], &gEfiSimpleNetworkProtocolGuid, (VOID **) &SimpleNetwork, pThis->DriverBindingHandle,
@@ -349,10 +377,16 @@ MarvellYukonDriverStop ( if (!EFI_ERROR(Status)) { YukonDriver = YUKON_DEV_FROM_THIS_SNP (SimpleNetwork);
Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
if (EFI_ERROR(Status)) {
continue;
}
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
ASSERT (YukonDriver->Controller == ChildHandleBuffer[0]);
if (YukonDriver->SnpMode.State != EfiSimpleNetworkStopped) {
ASSERT (YukonDriver->Controller == ChildHandleBuffer[ChildController]);
if (YukonDriver->SnpMode.State != EfiSimpleNetworkStopped) {
// // Device in use, cannot stop driver instance @@ -364,11 +398,15 @@ MarvellYukonDriverStop ( // // Unhook the child controller //
gBS->CloseProtocol (Controller,
Status = gBS->CloseProtocol (Controller, &gEfiPciIoProtocolGuid, pThis->DriverBindingHandle, YukonDriver->Controller);
if (EFI_ERROR(Status)){
DEBUG ((DEBUG_ERROR, "Marvell Yukon: MarvellYukonDriverStop:Close Child EfiPciIoProtocol error. Status %r\n", Status));
}
Status = gBS->UninstallMultipleProtocolInterfaces ( YukonDriver->Controller, &gEfiSimpleNetworkProtocolGuid,
@@ -382,25 +420,36 @@ MarvellYukonDriverStop ( DEBUG ((EFI_D_ERROR, "Marvell Yukon: MarvellYukonDriverStop:UninstallMultipleProtocolInterfaces error. Status %r\n", Status)); }
MarvellYukonDelControllerData(YukonDriver->Controller);
}gBS->CloseEvent (YukonDriver->ExitBootEvent); gBS->FreePool (YukonDriver->DevicePath); gBS->FreePool (YukonDriver); } gBS->RestoreTPL (OldTpl);
- } else {
- Status = gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- }
- if (EFI_ERROR(Status)){
DEBUG ((EFI_D_ERROR, "Marvell Yukon: MarvellYukonDriverStop:Close EfiPciIoProtocol error. Status %r\n", Status));
- }
- Status = gBS->CloseProtocol (
Controller,
&gEfiPciIoProtocolGuid,
pThis->DriverBindingHandle,
Controller
);
- if (EFI_ERROR(Status)){
- DEBUG ((DEBUG_ERROR, "Marvell Yukon: MarvellYukonDriverStop:Close EfiPciIoProtocol error. Status %r\n", Status));
- }
- Status = MarvellYukonGetControllerData(Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status; }
- mskc_detach (ScData);
- gBS->FreePool(ScData);
Space before (.
- Status = MarvellYukonDelControllerData(Controller);
- return Status;
} @@ -436,6 +485,123 @@ MarvellYukonNotifyExitBoot ( } } +/**
- Get driver's data structure associated with controller
- @param [in] Controller Controller Id.
- @param [out] Data Driver's data.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonGetControllerData(
- IN EFI_HANDLE Controller,
- OUT struct msk_softc **Data
- )
+{
- MSK_LINKED_DRV_BUF *DrvNode;
- EFI_STATUS Status;
- Status = MarvellYukonFindControllerNode (Controller, &DrvNode);
- if (!EFI_ERROR(Status)) {
- *Data = DrvNode->Data;
- }
- return Status;
+}
+/**
- Add driver's data structure associated with controller
- @param [in] Controller Controller Id.
- @param [in] Data Driver's data.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonAddControllerData (
- IN EFI_HANDLE Controller,
- IN struct msk_softc *Data
- )
+{
- MSK_LINKED_DRV_BUF *DrvNode;
- EFI_STATUS Status;
- Status = MarvellYukonFindControllerNode (Controller, &DrvNode);
- if (EFI_ERROR(Status)) {
- Status = gBS->AllocatePool (EfiBootServicesData,
sizeof (MSK_LINKED_DRV_BUF),
(VOID**) &DrvNode);
- if (!EFI_ERROR (Status)) {
DrvNode->Signature = MSK_DRV_SIGNATURE;
DrvNode->Controller = Controller;
DrvNode->Data = Data;
InsertTailList (&MarvellYukonDrvDataHead, &DrvNode->Link);
- }
- } else {
- Status = EFI_ALREADY_STARTED;
- }
- return Status;
+}
+/**
- Delete driver's data structure associated with controller
- @param [in] Controller Controller Id.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonDelControllerData (
- IN EFI_HANDLE Controller
- )
+{
- MSK_LINKED_DRV_BUF *DrvNode;
- EFI_STATUS Status;
- Status = MarvellYukonFindControllerNode (Controller, &DrvNode);
- if (!EFI_ERROR(Status)) {
Indentation.
- RemoveEntryList (&DrvNode->Link);
- gBS->FreePool (DrvNode);
- }
- return Status;
+}
+/**
- Find node associated with controller
- @param [in] Controller Controller Id.
- @param [out] DrvLinkedBuff Controller's node.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonFindControllerNode (
- IN EFI_HANDLE Controller,
- OUT MSK_LINKED_DRV_BUF **DrvLinkedBuff
- )
+{
- MSK_LINKED_DRV_BUF *DrvBuffNode;
- EFI_STATUS Status;
- LIST_ENTRY *Node;
- Status = EFI_NOT_FOUND;
- Node = GetFirstNode (&MarvellYukonDrvDataHead);
- while (!IsNull (&MarvellYukonDrvDataHead, Node)) {
- DrvBuffNode = MSK_DRV_INFO_FROM_THIS (Node);
- if (DrvBuffNode->Controller == Controller) {
*DrvLinkedBuff = DrvBuffNode;
Status = EFI_SUCCESS;
break;
- }
- Node = GetNextNode (&MarvellYukonDrvDataHead, Node);
- }
- return Status;
+}
// // Simple Network Protocol Driver Global Variables // @@ -487,7 +653,10 @@ InitializeMarvellYukonDriver ( if (EFI_ERROR (Status)) { DEBUG ((EFI_D_ERROR, "Marvell Yukon: InitializeMarvellYukonDriver(): Driver binding failed\n"));
- return Status; }
- InitializeListHead (&MarvellYukonDrvDataHead);
- return Status;
} diff --git a/Drivers/Net/MarvellYukonDxe/MarvellYukon.h b/Drivers/Net/MarvellYukonDxe/MarvellYukon.h index e6110cb..07f5389 100644 --- a/Drivers/Net/MarvellYukonDxe/MarvellYukon.h +++ b/Drivers/Net/MarvellYukonDxe/MarvellYukon.h @@ -43,6 +43,7 @@ typedef struct { EFI_LOCK Lock; EFI_HANDLE Controller;
- UINTN Port; EFI_EVENT ExitBootEvent;
EFI_SIMPLE_NETWORK_PROTOCOL Snp; @@ -58,6 +59,22 @@ typedef struct { #define SNP_MEM_PAGES(x) (((x) - 1) / 4096 + 1) +typedef struct {
- UINT32 Signature;
- LIST_ENTRY Link;
- EFI_HANDLE Controller;
- struct msk_softc *Data;
+} MSK_LINKED_DRV_BUF;
+#define MSK_DRV_SIGNATURE SIGNATURE_32 ('m', 's', 'k', 'c')
+#define MSK_DRV_INFO_FROM_THIS(a) \
- CR (a, \
MSK_LINKED_DRV_BUF, \
Link, \
MSK_DRV_SIGNATURE \
);
// // Global Variables // @@ -708,4 +725,58 @@ MarvellYukonNotifyExitBoot ( IN VOID *Context ); +/**
- Get driver's data structure associated with controller
- @param [in] Controller Controller Id.
- @param [out] Data Driver's data.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonGetControllerData(
- IN EFI_HANDLE Controller,
- OUT struct msk_softc **Data
- );
+/**
- Add driver's data structure associated with controller
- @param [in] Controller Controller Id.
- @param [in] Data Driver's data.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonAddControllerData (
- IN EFI_HANDLE Controller,
- IN struct msk_softc *
- );
+/**
- Delete driver's data structure associated with controller
- @param [in] Controller Controller Id.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonDelControllerData (
- IN EFI_HANDLE Controller
- );
+/**
- Find node associated with controller
- @param [in] Controller Controller Id.
- @param [out] DrvLinkedBuff Controller's node.
+**/ +EFI_STATUS +EFIAPI +MarvellYukonFindControllerNode (
- IN EFI_HANDLE Controller,
- OUT MSK_LINKED_DRV_BUF **DrvLinkedBuff
- );
/* _SNP_H_ */ diff --git a/Drivers/Net/MarvellYukonDxe/Snp.c b/Drivers/Net/MarvellYukonDxe/Snp.c index 3d84f84..9662322 100644 --- a/Drivers/Net/MarvellYukonDxe/Snp.c +++ b/Drivers/Net/MarvellYukonDxe/Snp.c @@ -123,6 +123,7 @@ SnpGetStatus ( EFI_STATUS Status; YUKON_DRIVER *Snp; EFI_TPL OldTpl;
- struct msk_softc *ScData;
if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -133,6 +134,11 @@ SnpGetStatus ( return EFI_INVALID_PARAMETER; }
- Status = MarvellYukonGetControllerData(Snp->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (Snp->SnpMode.State) { @@ -148,7 +154,7 @@ SnpGetStatus ( goto ON_EXIT; }
- mskc_getstatus (InterruptStatus, TxBuf);
- mskc_getstatus (ScData->msk_if[Snp->Port], InterruptStatus, TxBuf); Status = EFI_SUCCESS;
ON_EXIT: @@ -201,6 +207,7 @@ SnpInitialize ( EFI_STATUS Status; YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpInitialize()\n")); if (This == NULL) { @@ -210,6 +217,11 @@ SnpInitialize ( YukonDriver = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (YukonDriver->SnpMode.State) { @@ -230,7 +242,7 @@ SnpInitialize ( gBS->SetMem (YukonDriver->SnpMode.MCastFilter, sizeof YukonDriver->SnpMode.MCastFilter, 0); gBS->CopyMem (&YukonDriver->SnpMode.CurrentAddress, &YukonDriver->SnpMode.PermanentAddress, sizeof (EFI_MAC_ADDRESS));
- Status = mskc_init ();
- Status = mskc_init (ScData->msk_if[YukonDriver->Port]);
if (EFI_ERROR (Status)) { goto ON_ERROR_RESTORE_TPL; @@ -511,6 +523,7 @@ SnpReceive ( EFI_STATUS Status; YUKON_DRIVER *Snp; EFI_TPL OldTpl;
- struct msk_softc *ScData;
if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -518,6 +531,11 @@ SnpReceive ( Snp = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(Snp->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (Snp->SnpMode.State) { @@ -538,7 +556,7 @@ SnpReceive ( goto ON_EXIT; }
- Status = mskc_receive (BufferSize, Buffer);
- Status = mskc_receive (ScData->msk_if[Snp->Port], BufferSize, Buffer); if (EFI_ERROR (Status)) { if (Status == EFI_NOT_READY) { goto ON_EXIT_NO_DEBUG;
@@ -681,6 +699,7 @@ SnpReceiveFilters ( YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl; UINT32 newReceiveFilter;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpReceiveFilters()\n")); if (This == NULL) { @@ -690,6 +709,11 @@ SnpReceiveFilters ( YukonDriver = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (YukonDriver->SnpMode.State) { @@ -743,7 +767,7 @@ SnpReceiveFilters ( } YukonDriver->SnpMode.ReceiveFilterSetting = newReceiveFilter;
- mskc_rxfilter (YukonDriver->SnpMode.ReceiveFilterSetting, MCastFilterCnt, MCastFilter);
- mskc_rxfilter (ScData->msk_if[YukonDriver->Port], YukonDriver->SnpMode.ReceiveFilterSetting, MCastFilterCnt, MCastFilter);
Status = EFI_SUCCESS; goto ON_EXIT; @@ -860,6 +884,7 @@ SnpShutdown ( EFI_STATUS Status; YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpShutdown()\n")); // @@ -872,6 +897,11 @@ SnpShutdown ( YukonDriver = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
Space before (.
- if (EFI_ERROR(Status)) {
Space before (Status).
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
// @@ -890,7 +920,7 @@ SnpShutdown ( goto ON_ERROR_RESTORE_TPL; }
- mskc_shutdown ();
- mskc_stop_if (ScData->msk_if[YukonDriver->Port]); YukonDriver->SnpMode.State = EfiSimpleNetworkStarted; Status = EFI_SUCCESS;
@@ -941,6 +971,7 @@ SnpStart ( YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl; EFI_STATUS Status;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpStart()\n")); if (This == NULL) { @@ -950,6 +981,11 @@ SnpStart ( YukonDriver = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
- if (EFI_ERROR(Status)) {
Spaces before (. Actually, I'm spotting quite a few of these - can you go through and fix up?
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (YukonDriver->SnpMode.State) { @@ -966,7 +1002,7 @@ SnpStart ( goto ON_ERROR_RESTORE_TPL; }
- Status = mskc_attach (YukonDriver->PciIo, &YukonDriver->SnpMode.PermanentAddress);
- Status = mskc_attach_if (ScData->msk_if[YukonDriver->Port], YukonDriver->Port);
if (EFI_ERROR (Status)) { goto ON_ERROR_RESTORE_TPL; @@ -1244,6 +1280,7 @@ SnpStop ( EFI_STATUS Status; YUKON_DRIVER *YukonDriver; EFI_TPL OldTpl;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpStop()\n")); if (This == NULL) { @@ -1253,6 +1290,11 @@ SnpStop ( YukonDriver = YUKON_DEV_FROM_THIS_SNP (This);
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (YukonDriver->SnpMode.State) { @@ -1269,7 +1311,7 @@ SnpStop ( goto ON_ERROR_RESTORE_TPL; }
- mskc_detach ();
- mskc_detach_if (ScData->msk_if[YukonDriver->Port]); YukonDriver->SnpMode.State = EfiSimpleNetworkStopped; gBS->SetMem (&YukonDriver->SnpMode.CurrentAddress, sizeof (EFI_MAC_ADDRESS), 0); Status = EFI_SUCCESS;
@@ -1354,6 +1396,7 @@ SnpTransmit ( EFI_TPL OldTpl; ETHER_HEAD *Frame; UINT16 ProtocolNet;
- struct msk_softc *ScData;
DEBUG ((EFI_D_NET, "Marvell Yukon: SnpTransmit()\n")); if (This == NULL) { @@ -1366,6 +1409,11 @@ SnpTransmit ( return EFI_DEVICE_ERROR; }
- Status = MarvellYukonGetControllerData(YukonDriver->Controller, &ScData);
- if (EFI_ERROR(Status)) {
- return Status;
- }
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (YukonDriver->SnpMode.State) { @@ -1407,7 +1455,7 @@ SnpTransmit ( gBS->CopyMem (&Frame->EtherType, &ProtocolNet, sizeof (UINT16)); }
- Status = mskc_transmit (BufferSize, Buffer);
- Status = mskc_transmit (ScData->msk_if[YukonDriver->Port], BufferSize, Buffer);
ON_EXIT: gBS->RestoreTPL (OldTpl); -- 2.7.4