From owner-freebsd-net Wed May 9 20:38:51 2001 Delivered-To: freebsd-net@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 618) id AB8EF37B423; Wed, 9 May 2001 20:38:49 -0700 (PDT) Subject: Re: On the workings of the xl dirver In-Reply-To: <3AF950A1.2D4A13F2@ac.upc.es> from Oscar-Ivan Lepe-Aldama at "May 9, 2001 04:13:53 pm" To: oscar@ac.upc.es (Oscar-Ivan Lepe-Aldama) Date: Wed, 9 May 2001 20:38:49 -0700 (PDT) Cc: freebsd-net@FreeBSD.ORG X-Mailer: ELM [version 2.4ME+ PL54 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-Id: <20010510033849.AB8EF37B423@hub.freebsd.org> From: wpaul@FreeBSD.ORG (Bill Paul) Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org > Hi, > I would like to have information regarding the implementation of the > xl_start_90xB function in the xl driver. After reading the code and the > technical reference from 3com I still cannot understand how the driver > signals the NIC for packet downloading. It doesn't. Instead, the xl_init() routine sets up the card to perform TX descriptor polling: if (sc->xl_type == XL_TYPE_905B) { /* Set polling interval */ CSR_WRITE_1(sc, XL_DOWN_POLL, 64); /* Load the address of the TX list */ CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_DOWN_STALL); xl_wait(sc); CSR_WRITE_4(sc, XL_DOWNLIST_PTR, vtophys(&sc->xl_ldata->xl_tx_list[0])); CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_DOWN_UNSTALL); xl_wait(sc); } The NIC itself checks to see when new descriptors are added to the download list. This saves the driver from having to issue the command to the NIC in the start routine. The polling feature was not available in the boomerang series chips, only in the cyclone series and later (hurricane, tornado), hence for the older NICs we have to use the non-polling transmit mechanism. -Bill To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message