Page MenuHomeFreeBSD

D20642.diff
No OneTemporary

D20642.diff

Index: head/stand/efi/libefi/efinet.c
===================================================================
--- head/stand/efi/libefi/efinet.c
+++ head/stand/efi/libefi/efinet.c
@@ -108,7 +108,25 @@
static int
efinet_probe(struct netif *nif, void *machdep_hint)
{
+ EFI_SIMPLE_NETWORK *net;
+ EFI_HANDLE h;
+ EFI_STATUS status;
+ h = nif->nif_driver->netif_ifs[nif->nif_unit].dif_private;
+ /*
+ * Open the network device in exclusive mode. Without this
+ * we will be racing with the UEFI network stack. It will
+ * pull packets off the network leading to lost packets.
+ */
+ status = BS->OpenProtocol(h, &sn_guid, (void **)&net,
+ IH, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE);
+ if (status != EFI_SUCCESS) {
+ printf("Unable to open network interface %d for "
+ "exclusive access: %lu\n", nif->nif_unit,
+ EFI_ERROR_CODE(status));
+ return (efi_status_to_errno(status));
+ }
+
return (0);
}
@@ -269,7 +287,6 @@
struct netif_dif *dif;
struct netif_stats *stats;
EFI_DEVICE_PATH *devpath, *node;
- EFI_SIMPLE_NETWORK *net;
EFI_HANDLE *handles, *handles2;
EFI_STATUS status;
UINTN sz;
@@ -304,19 +321,6 @@
if (DevicePathType(node) != MESSAGING_DEVICE_PATH ||
DevicePathSubType(node) != MSG_MAC_ADDR_DP)
continue;
-
- /*
- * Open the network device in exclusive mode. Without this
- * we will be racing with the UEFI network stack. It will
- * pull packets off the network leading to lost packets.
- */
- status = BS->OpenProtocol(handles[i], &sn_guid, (void **)&net,
- IH, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE);
- if (status != EFI_SUCCESS) {
- printf("Unable to open network interface %d for "
- "exclusive access: %lu\n", i,
- EFI_ERROR_CODE(status));
- }
handles2[nifs] = handles[i];
nifs++;

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 15, 10:05 AM (16 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29702888
Default Alt Text
D20642.diff (1 KB)

Event Timeline