@@ -44,7 +44,7 @@ void VirtioNet::get_config() {
4444VirtioNet::VirtioNet (hw::PCI_Device& d)
4545 : Virtio(d),
4646 Link(Link_protocol{{this , &VirtioNet::transmit}, mac ()},
47- std::max ( 256u , queue_size( 0 ) * 2), 2048 /* half-page buffers */ ),
47+ 256u , 2048 /* 256x half-page buffers */ ),
4848 packets_rx_{Statman::get ().create (Stat::UINT64, device_name () + " .packets_rx" ).get_uint64 ()},
4949 packets_tx_{Statman::get ().create (Stat::UINT64, device_name () + " .packets_tx" ).get_uint64 ()}
5050{
@@ -119,7 +119,7 @@ VirtioNet::VirtioNet(hw::PCI_Device& d)
119119 rx_q.size () / 2 , bufstore ().bufsize ());
120120
121121 for (int i = 0 ; i < rx_q.size () / 2 ; i++)
122- add_receive_buffer (bufstore ().get_buffer ());
122+ add_receive_buffer (bufstore ().get_buffer (). addr );
123123
124124 // Step 4 - If there are many queues, we should negotiate the number.
125125 // Set config length, based on whether there are multiple queues
@@ -196,7 +196,7 @@ void VirtioNet::msix_recv_handler()
196196
197197 dequeued_rx++;
198198 // Requeue a new buffer
199- add_receive_buffer (bufstore ().get_buffer ());
199+ add_receive_buffer (bufstore ().get_buffer (). addr );
200200
201201 // Stat increase packets received
202202 packets_rx_++;
@@ -270,13 +270,14 @@ VirtioNet::recv_packet(uint8_t* data, uint16_t size)
270270net::Packet_ptr
271271VirtioNet::create_packet (int link_offset)
272272{
273- auto * ptr = (net::Packet*) bufstore ().get_buffer ();
273+ auto buffer = bufstore ().get_buffer ();
274+ auto * ptr = (net::Packet*) buffer.addr ;
274275
275276 new (ptr) net::Packet (
276277 sizeof (virtio_net_hdr) + link_offset,
277278 0 ,
278279 sizeof (virtio_net_hdr) + packet_len (),
279- & bufstore () );
280+ buffer. bufstore );
280281
281282 return net::Packet_ptr (ptr);
282283}
0 commit comments