GSOC 2015 - NE2000 emulation in bhyve Status

Alex Teaca ionutalex.teaca at
Sat Jul 11 09:27:55 UTC 2015


I've implemented the reception protocol of the NE2000 nic card. In order to
test it, I send in both directions (from guest to host and from host to
guest) big files (about 350M)
and it works without any problems.

At the moment, I want to implement a mechanism to lock the access on the
shared resources between the tx and rx flows.


On Sun, Jun 28, 2015 at 7:16 PM, Alex Teaca <ionutalex.teaca at>

> Hi,
> From the last status report:
> implement 2 commits:
> - parse the input string parameter and get the tap name and mac address
> from it
> - implement some logging and asserts related with the receive buffer ring
> Also, I start to think about the receive protocol which is the next step
> of the implementation by reading the specification from the datasheet
> and understanding the implementation of the ED driver regarding the way it
> receives packets from the NE2000 memory. It is pretty clear
> what we need to implement and after a short design I will be able to
> implement.
> Thanks,
> Alex
> On Sun, Jun 14, 2015 at 11:37 PM, Alex Teaca <ionutalex.teaca at>
> wrote:
>> Hi,
>> At the moment I am able to configure an IP address on the network
>> interface corresponding to the NE2000 NIC. When I ping
>> to the host IP, the tcpdump catches both ARP Request (sent by the guest
>> using the NE2000 card) and an ARP Reply
>> sent by the host OS. So, there is implemented the transmission protocol.
>> For reception, the packets are only read
>> from the tap device when it is notified by the mevent mechanism.
>> For mode details, see the commits.
>> Thanks,
>> Alex
>> On Tue, Jun 2, 2015 at 7:45 PM, Alex Teaca <ionutalex.teaca at>
>> wrote:
>>> Hi,
>>> I've started the implementation of the NE2000 module. At the moment the
>>> ED driver is able to probe the emulated device (RealTek 8029) and add it as
>>> a network interface.
>>> Some of the features which are implemented:
>>> - implement some logging support
>>> - clone the /usr/src/sys/dev/ed/if_edreg.h register interface from the
>>> ed driver into the bhyve tree sources
>>> - implement the NE2000 registers support and an API to access the NIC
>>> registers (get and set by offset)
>>> - design and implement the Remote DMA protocol so the ED driver can
>>> store and load from the NIC's RAM memory
>>> Thanks,
>>> Alex

More information about the soc-status mailing list