|
|
1.1 ! root 1: /* ethwrite.c - ethwrite */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <proc.h> ! 6: #include <network.h> ! 7: ! 8: /*------------------------------------------------------------------------ ! 9: * ethwrite - write a single packet to the ethernet ! 10: *------------------------------------------------------------------------ ! 11: */ ! 12: ! 13: ethwrite(devptr, buff, len) ! 14: struct devsw *devptr; ! 15: struct epacket *buff; ! 16: int len; ! 17: { ! 18: struct etblk *etptr; ! 19: PStype ps; ! 20: ! 21: if (len > EMAXPAK) ! 22: return(SYSERR); ! 23: if (len < EMINPAK) ! 24: len = EMINPAK; ! 25: etptr = (struct etblk *) devptr->dvioblk; ! 26: blkcopy(buff->ep_hdr.e_src, etptr->etpaddr, EPADLEN); ! 27: disable(ps); ! 28: wait(etptr->etwsem); ! 29: ethwstrt(etptr, buff, etptr->etlen = len, DC_NORM); ! 30: restore(ps); ! 31: return(OK); ! 32: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.