Unify buffer sizes of RX and TX in nic_session
In fact, the sizes were the same the whole time, but by using the same enum in both cases to instantiate the Packet_stream_tx and Packet_stream_rx members of the e.g. RPC object, it allows for more flexible generalization between e.g. source or, sink objects, when programming event-driven, and implementing generic handlers for their signals.
This commit is contained in:
parent
973efe945b
commit
8fae7131c8
|
@ -246,8 +246,7 @@ extern "C" {
|
||||||
/* Initialize nic-session */
|
/* Initialize nic-session */
|
||||||
enum {
|
enum {
|
||||||
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
||||||
RX_BUF_SIZE = Nic::Session::RX_QUEUE_SIZE * PACKET_SIZE,
|
BUF_SIZE = Nic::Session::QUEUE_SIZE * PACKET_SIZE,
|
||||||
TX_BUF_SIZE = Nic::Session::TX_QUEUE_SIZE * PACKET_SIZE,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Nic::Packet_allocator *tx_block_alloc = new (env()->heap())
|
Nic::Packet_allocator *tx_block_alloc = new (env()->heap())
|
||||||
|
@ -255,7 +254,7 @@ extern "C" {
|
||||||
|
|
||||||
Nic::Connection *nic = 0;
|
Nic::Connection *nic = 0;
|
||||||
try {
|
try {
|
||||||
nic = new (env()->heap()) Nic::Connection(tx_block_alloc, TX_BUF_SIZE, RX_BUF_SIZE);
|
nic = new (env()->heap()) Nic::Connection(tx_block_alloc, BUF_SIZE, BUF_SIZE);
|
||||||
} catch (Parent::Service_denied) {
|
} catch (Parent::Service_denied) {
|
||||||
destroy(env()->heap(), tx_block_alloc);
|
destroy(env()->heap(), tx_block_alloc);
|
||||||
return ERR_IF;
|
return ERR_IF;
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace Nic {
|
||||||
|
|
||||||
struct Session : Genode::Session
|
struct Session : Genode::Session
|
||||||
{
|
{
|
||||||
enum { TX_QUEUE_SIZE = 256, RX_QUEUE_SIZE = 256 };
|
enum { QUEUE_SIZE = 256 };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Types used by the client stub code and server implementation
|
* Types used by the client stub code and server implementation
|
||||||
|
@ -47,16 +47,11 @@ namespace Nic {
|
||||||
* The acknowledgement queue has always the same size as the submit
|
* The acknowledgement queue has always the same size as the submit
|
||||||
* queue. We access the packet content as a char pointer.
|
* queue. We access the packet content as a char pointer.
|
||||||
*/
|
*/
|
||||||
typedef Packet_stream_policy<Packet_descriptor,
|
typedef Packet_stream_policy<Packet_descriptor, QUEUE_SIZE, QUEUE_SIZE,
|
||||||
TX_QUEUE_SIZE, TX_QUEUE_SIZE,
|
char> Policy;
|
||||||
char> Tx_policy;
|
|
||||||
|
|
||||||
typedef Packet_stream_policy<Packet_descriptor,
|
typedef Packet_stream_tx::Channel<Policy> Tx;
|
||||||
RX_QUEUE_SIZE, RX_QUEUE_SIZE,
|
typedef Packet_stream_rx::Channel<Policy> Rx;
|
||||||
char> Rx_policy;
|
|
||||||
|
|
||||||
typedef Packet_stream_tx::Channel<Tx_policy> Tx;
|
|
||||||
typedef Packet_stream_rx::Channel<Rx_policy> Rx;
|
|
||||||
|
|
||||||
static const char *service_name() { return "Nic"; }
|
static const char *service_name() { return "Nic"; }
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,7 @@ int main(int, char **)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
||||||
RX_BUF_SIZE = Nic::Session::RX_QUEUE_SIZE * PACKET_SIZE,
|
BUF_SIZE = Nic::Session::QUEUE_SIZE * PACKET_SIZE,
|
||||||
TX_BUF_SIZE = Nic::Session::TX_QUEUE_SIZE * PACKET_SIZE
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* read MAC address prefix from config file */
|
/* read MAC address prefix from config file */
|
||||||
|
@ -50,7 +49,7 @@ int main(int, char **)
|
||||||
|
|
||||||
Root_capability nic_root_cap;
|
Root_capability nic_root_cap;
|
||||||
try {
|
try {
|
||||||
static Nic::Connection nic(&tx_block_alloc, TX_BUF_SIZE, RX_BUF_SIZE);
|
static Nic::Connection nic(&tx_block_alloc, BUF_SIZE, BUF_SIZE);
|
||||||
static Net::Rx_handler rx_handler(&nic);
|
static Net::Rx_handler rx_handler(&nic);
|
||||||
static Net::Root nic_root(&ep, env()->heap(), &nic);
|
static Net::Root nic_root(&ep, env()->heap(), &nic);
|
||||||
|
|
||||||
|
|
|
@ -97,15 +97,14 @@ static void net_init()
|
||||||
/* Initialize nic-session */
|
/* Initialize nic-session */
|
||||||
enum {
|
enum {
|
||||||
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
||||||
RX_BUF_SIZE = Nic::Session::RX_QUEUE_SIZE * PACKET_SIZE,
|
BUF_SIZE = Nic::Session::QUEUE_SIZE * PACKET_SIZE,
|
||||||
TX_BUF_SIZE = Nic::Session::TX_QUEUE_SIZE * PACKET_SIZE,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Nic::Packet_allocator *tx_block_alloc = new (env()->heap()) Nic::Packet_allocator(env()->heap());
|
Nic::Packet_allocator *tx_block_alloc = new (env()->heap()) Nic::Packet_allocator(env()->heap());
|
||||||
|
|
||||||
Nic::Connection *nic = 0;
|
Nic::Connection *nic = 0;
|
||||||
try {
|
try {
|
||||||
nic = new (env()->heap()) Nic::Connection(tx_block_alloc, TX_BUF_SIZE, RX_BUF_SIZE);
|
nic = new (env()->heap()) Nic::Connection(tx_block_alloc, BUF_SIZE, BUF_SIZE);
|
||||||
} catch (Parent::Service_denied) {
|
} catch (Parent::Service_denied) {
|
||||||
destroy(env()->heap(), tx_block_alloc);
|
destroy(env()->heap(), tx_block_alloc);
|
||||||
PERR("could not start Nic service");
|
PERR("could not start Nic service");
|
||||||
|
|
|
@ -70,8 +70,7 @@ static Nic::Connection *nic() {
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
|
||||||
RX_BUF_SIZE = Nic::Session::RX_QUEUE_SIZE * PACKET_SIZE,
|
BUF_SIZE = Nic::Session::QUEUE_SIZE * PACKET_SIZE,
|
||||||
TX_BUF_SIZE = Nic::Session::TX_QUEUE_SIZE * PACKET_SIZE,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static Nic::Connection *n = 0;
|
static Nic::Connection *n = 0;
|
||||||
|
@ -83,7 +82,7 @@ static Nic::Connection *nic() {
|
||||||
try {
|
try {
|
||||||
Linux::Irq_guard guard;
|
Linux::Irq_guard guard;
|
||||||
static Nic::Packet_allocator tx_block_alloc(Genode::env()->heap());
|
static Nic::Packet_allocator tx_block_alloc(Genode::env()->heap());
|
||||||
static Nic::Connection nic(&tx_block_alloc, TX_BUF_SIZE, RX_BUF_SIZE);
|
static Nic::Connection nic(&tx_block_alloc, BUF_SIZE, BUF_SIZE);
|
||||||
n = &nic;
|
n = &nic;
|
||||||
} catch(...) { }
|
} catch(...) { }
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user