diff --git a/headers/private/net/core_funcs.h b/headers/private/net/core_funcs.h index 2ba889bc15..5559c6cded 100644 --- a/headers/private/net/core_funcs.h +++ b/headers/private/net/core_funcs.h @@ -15,6 +15,12 @@ # define start_rx_thread core->start_rx_thread # define start_tx_thread core->start_tx_thread +# define get_max_hdr core->get_max_hdr +# define set_max_linkhdr core->set_max_linkhdr +# define get_max_linkhdr core->get_max_linkhdr +# define set_max_protohdr core->set_max_protohdr +# define get_max_protohdr core->get_max_protohdr + # define net_add_timer core->net_add_timer # define net_remove_timer core->net_remove_timer diff --git a/headers/private/net/core_module.h b/headers/private/net/core_module.h index 67910f282d..40e3f79f3b 100644 --- a/headers/private/net/core_module.h +++ b/headers/private/net/core_module.h @@ -26,6 +26,13 @@ struct core_module_info { void (*start_rx_thread)(struct ifnet *dev); void (*start_tx_thread)(struct ifnet *dev); + // functions for the 'max_xxx' values + int (*get_max_hdr)(void); + void (*set_max_linkhdr)(int maxLinkHdr); + int (*get_max_linkhdr)(void); + void (*set_max_protohdr)(int maxProtoHdr); + int (*get_max_protohdr)(void); + /* timer functions */ net_timer_id (*net_add_timer)(net_timer_hook ,void *, bigtime_t); diff --git a/headers/private/net/mbuf.h b/headers/private/net/mbuf.h index 6a3e15b612..8f08c789a8 100644 --- a/headers/private/net/mbuf.h +++ b/headers/private/net/mbuf.h @@ -308,11 +308,4 @@ void dump_freelist(void); /* XXX - add me! */ -struct pool_ctl *mbpool; -struct pool_ctl *clpool; - -int max_hdr; /* largest link+protocol header */ -int max_linkhdr; /* largest link level header */ -int max_protohdr; /* largest protocol header */ - #endif /* OBOS_MBUF_H */ diff --git a/src/add-ons/kernel/network/core/core.c b/src/add-ons/kernel/network/core/core.c index 666bddcc24..7187fe4b80 100644 --- a/src/add-ons/kernel/network/core/core.c +++ b/src/add-ons/kernel/network/core/core.c @@ -17,6 +17,7 @@ #include +#include "core_private.h" #include "core_module.h" #include "sys/socket.h" #include "sys/socketvar.h" @@ -63,6 +64,12 @@ static int stop_stack(void); static void add_protosw(struct protosw *[], int layer); static struct net_module *module_list = NULL; +static int get_max_hdr(void); +static void set_max_linkhdr(int maxLinkHdr); +static int get_max_linkhdr(void); +static void set_max_protohdr(int maxProtoHdr); +static int get_max_protohdr(void); + /* Wider scoped prototypes */ int net_sysctl(int *name, uint namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); @@ -87,6 +94,12 @@ struct core_module_info core_info = { start_rx_thread, start_tx_thread, + get_max_hdr, + set_max_linkhdr, + get_max_linkhdr, + set_max_protohdr, + get_max_protohdr, + net_add_timer, net_remove_timer, @@ -336,6 +349,33 @@ void start_tx_thread(struct ifnet *dev) resume_thread(dev->tx_thread); } +static int get_max_hdr(void) +{ + return max_hdr; +} + +static void set_max_linkhdr(int maxLinkHdr) +{ + max_linkhdr = maxLinkHdr; + max_hdr = max_linkhdr + max_protohdr; +} + +static int get_max_linkhdr(void) +{ + return max_linkhdr; +} + +static void set_max_protohdr(int maxProtoHdr) +{ + max_protohdr = maxProtoHdr; + max_hdr = max_linkhdr + max_protohdr; +} + +static int get_max_protohdr(void) +{ + return max_protohdr; +} + void net_server_add_device(struct ifnet *ifn) { char dname[16]; diff --git a/src/add-ons/kernel/network/core/core_private.h b/src/add-ons/kernel/network/core/core_private.h new file mode 100644 index 0000000000..f46ed511fc --- /dev/null +++ b/src/add-ons/kernel/network/core/core_private.h @@ -0,0 +1,12 @@ +#ifndef _CORE_PRIVATE__H +#define _CORE_PRIVATE__H + + +extern struct pool_ctl *mbpool; +extern struct pool_ctl *clpool; + +extern int max_hdr; /* largest link+protocol header */ +extern int max_linkhdr; /* largest link level header */ +extern int max_protohdr; /* largest protocol header */ + +#endif diff --git a/src/add-ons/kernel/network/core/mbuf.c b/src/add-ons/kernel/network/core/mbuf.c index 3de10e8718..5b8ccfd3e5 100644 --- a/src/add-ons/kernel/network/core/mbuf.c +++ b/src/add-ons/kernel/network/core/mbuf.c @@ -19,6 +19,15 @@ #define MBUF_ALLOCSIZE 4096 + +struct pool_ctl *mbpool; +struct pool_ctl *clpool; + +int max_hdr = 0; /* largest link+protocol header */ +int max_linkhdr = 0; /* largest link level header */ +int max_protohdr = 0; /* largest protocol header */ + + void dump_freelist(void) { pool_debug_walk(mbpool); @@ -31,7 +40,6 @@ void mbinit(void) pool_init(&mbpool, sizeof(struct mbuf)); if (!clpool) pool_init(&clpool, MCLBYTES); - /* XXX - move me to the protocol init routines! */ max_linkhdr = 14; max_protohdr = 40; max_hdr = max_linkhdr + max_protohdr; diff --git a/src/add-ons/kernel/network/core/sockbuf.c b/src/add-ons/kernel/network/core/sockbuf.c index 8c78df72ee..31e229a154 100644 --- a/src/add-ons/kernel/network/core/sockbuf.c +++ b/src/add-ons/kernel/network/core/sockbuf.c @@ -7,6 +7,7 @@ #include #endif +#include "core_private.h" #include #include #include diff --git a/src/add-ons/kernel/network/core/socket.c b/src/add-ons/kernel/network/core/socket.c index f4241e3782..9ec4dd8596 100644 --- a/src/add-ons/kernel/network/core/socket.c +++ b/src/add-ons/kernel/network/core/socket.c @@ -6,6 +6,7 @@ #include #include +#include "core_private.h" #include "sys/socket.h" #include "sys/socketvar.h" #include "sys/sockio.h"