From 7a480637d8cb6cf7b9a8c08a07059b8cdbefee28 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Sun, 6 Feb 2005 21:18:51 +0000 Subject: [PATCH] Added net_server compatibility to the Broadcom drivers (i.e. fixed non-blocking mode to actually work) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11279 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/network/bcm440x/b44um.c | 8 +++++--- src/add-ons/kernel/drivers/network/bcm570x/b57um.c | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/drivers/network/bcm440x/b44um.c b/src/add-ons/kernel/drivers/network/bcm440x/b44um.c index 7828842035..5056945f59 100644 --- a/src/add-ons/kernel/drivers/network/bcm440x/b44um.c +++ b/src/add-ons/kernel/drivers/network/bcm440x/b44um.c @@ -97,7 +97,7 @@ void uninit_driver(void) { delete_area(pUmDevice->mem_base); - free(dev_list[j]); + free((void *)dev_list[j]); } mempool_exit(); @@ -174,7 +174,7 @@ status_t b44_ioctl(void *cookie,uint32 op,void *data,size_t len) { memcpy(data,pUmDevice->lm_dev.NodeAddress,6); return B_OK; case ETHER_NONBLOCK: - pUmDevice->block = *((uint8 *)(data)); + pUmDevice->block = !*((uint8 *)(data)); return B_OK; case ETHER_ADDMULTI: return (b44_LM_MulticastAdd(&pUmDevice->lm_dev,(PLM_UINT8)(data)) == LM_STATUS_SUCCESS) ? B_OK : B_ERROR; @@ -238,8 +238,10 @@ status_t b44_read(void *cookie,off_t pos,void *data,size_t *numBytes) { release_spinlock(&pUmDevice->lock); restore_interrupts(cpu); - if (pPacket == 0) + if (pPacket == 0) { + *numBytes = -1; return B_ERROR; + } pUmPacket = (struct B_UM_PACKET *) pPacket; if ((pPacket->PacketStatus != LM_STATUS_SUCCESS) || diff --git a/src/add-ons/kernel/drivers/network/bcm570x/b57um.c b/src/add-ons/kernel/drivers/network/bcm570x/b57um.c index 1f6376cd73..3f898676fe 100644 --- a/src/add-ons/kernel/drivers/network/bcm570x/b57um.c +++ b/src/add-ons/kernel/drivers/network/bcm570x/b57um.c @@ -424,7 +424,7 @@ status_t b57_ioctl(void *cookie,uint32 op,void *data,size_t len) { memcpy(data,pUmDevice->lm_dev.NodeAddress,6); return B_OK; case ETHER_NONBLOCK: - pUmDevice->block = *((uint8 *)(data)); + pUmDevice->block = !*((uint8 *)(data)); return B_OK; case ETHER_ADDMULTI: return (LM_MulticastAdd(&pUmDevice->lm_dev,(PLM_UINT8)(data)) == LM_STATUS_SUCCESS) ? B_OK : B_ERROR; @@ -541,8 +541,10 @@ status_t b57_read(void *cookie,off_t pos,void *data,size_t *numBytes) { release_spinlock(&pUmDevice->lock); enable_interrupts(cpu); - if (pPacket == 0) + if (pPacket == 0) { + *numBytes = -1; return B_ERROR; + } pUmPacket = (struct B_UM_PACKET *) pPacket; if ((pPacket->PacketStatus != LM_STATUS_SUCCESS) ||