From 7d827cb8646364a12a951f4555f027be0033b86d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 18 Oct 2013 17:47:36 +0200 Subject: [PATCH] FreeBSD compat layer: try 10BaseT if setting autoselect failed. * This fixes PCnet Fast III on VirtualBox with pcn driver (#10088). --- src/libs/compat/freebsd_network/device.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libs/compat/freebsd_network/device.c b/src/libs/compat/freebsd_network/device.c index 2b840cc92c..da9964752f 100644 --- a/src/libs/compat/freebsd_network/device.c +++ b/src/libs/compat/freebsd_network/device.c @@ -28,6 +28,7 @@ compat_open(const char *name, uint32 flags, void **cookie) struct ifnet *ifp; struct ifreq ifr; int i; + status_t status; for (i = 0; i < MAX_DEVICES; i++) { if (gDevices[i] != NULL && !strcmp(gDevices[i]->device_name, name)) @@ -56,7 +57,11 @@ compat_open(const char *name, uint32 flags, void **cookie) memset(&ifr, 0, sizeof(ifr)); ifr.ifr_media = IFM_MAKEWORD(IFM_ETHER, IFM_AUTO, 0, 0); - ifp->if_ioctl(ifp, SIOCSIFMEDIA, (caddr_t)&ifr); + status = ifp->if_ioctl(ifp, SIOCSIFMEDIA, (caddr_t)&ifr); + if (status != B_OK) { + ifr.ifr_media = IFM_MAKEWORD(IFM_ETHER, IFM_10_T, 0, 0); + status = ifp->if_ioctl(ifp, SIOCSIFMEDIA, (caddr_t)&ifr); + } } ifp->if_flags |= IFF_UP;