Skip to content

Commit a4af2ac

Browse files
Tomasz Bursztykaaescolar
authored andcommitted
net/ip: Removing useless extra data capability in neighbors
This is not used by anyone, and is unlikely to be useful actually. Helps to save 4 bytes for each instance of struct net_nbr also (removing a 2 bytes attributes, which was anyway generating a 4bytes loss due to structure misalignment). Removing relevant useless functions related to it as well. Signed-off-by: Tomasz Bursztyka <[email protected]>
1 parent a3d7278 commit a4af2ac

File tree

6 files changed

+9
-114
lines changed

6 files changed

+9
-114
lines changed

subsys/net/ip/ipv6_nbr.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ static void ipv6_nd_restart_reachable_timer(struct net_nbr *nbr, int64_t time);
8080
#define DELAY_FIRST_PROBE_TIME (5 * MSEC_PER_SEC)
8181
#define RETRANS_TIMER 1000 /* ms */
8282

83-
extern void net_neighbor_data_remove(struct net_nbr *nbr);
83+
extern void net_neighbor_remove(struct net_nbr *nbr);
8484
extern void net_neighbor_table_clear(struct net_nbr_table *table);
8585

8686
/** Neighbor Solicitation reply timer */
@@ -89,8 +89,7 @@ static struct k_work_delayable ipv6_ns_reply_timer;
8989
NET_NBR_POOL_INIT(net_neighbor_pool,
9090
CONFIG_NET_IPV6_MAX_NEIGHBORS,
9191
sizeof(struct net_ipv6_nbr_data),
92-
net_neighbor_data_remove,
93-
0);
92+
net_neighbor_remove);
9493

9594
NET_NBR_TABLE_INIT(NET_NBR_GLOBAL,
9695
neighbor,
@@ -665,7 +664,7 @@ struct net_nbr *net_ipv6_nbr_add(struct net_if *iface,
665664
return nbr;
666665
}
667666

668-
void net_neighbor_data_remove(struct net_nbr *nbr)
667+
void net_neighbor_remove(struct net_nbr *nbr)
669668
{
670669
NET_DBG("Neighbor %p removed", nbr);
671670

subsys/net/ip/nbr.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ static inline struct net_nbr *get_nbr(struct net_nbr *start, int idx)
6262
NET_ASSERT(idx < CONFIG_NET_IPV6_MAX_NEIGHBORS);
6363

6464
return (struct net_nbr *)((uint8_t *)start +
65-
((sizeof(struct net_nbr) +
66-
start->size + start->extra_data_size) * idx));
65+
((sizeof(struct net_nbr) + start->size) * idx));
6766
}
6867

6968
struct net_nbr *net_nbr_get(struct net_nbr_table *table)

subsys/net/ip/nbr.h

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@ struct net_nbr {
5656
/** Amount of data that this neighbor buffer can store. */
5757
const uint16_t size;
5858

59-
/** Extra data size associated with this neighbor */
60-
const uint16_t extra_data_size;
61-
6259
/** Interface this neighbor is found */
6360
struct net_if *iface;
6461

@@ -75,17 +72,15 @@ struct net_nbr {
7572
};
7673

7774
/* This is an array of struct net_nbr + some additional data */
78-
#define NET_NBR_POOL_INIT(_name, _count, _size, _remove, _extra_size) \
75+
#define NET_NBR_POOL_INIT(_name, _count, _size, _remove) \
7976
struct { \
8077
struct net_nbr nbr; \
8178
uint8_t data[ROUND_UP(_size, 4)] __net_nbr_align; \
82-
uint8_t extra[ROUND_UP(_extra_size, 4)] __net_nbr_align;\
8379
} _name[_count] = { \
8480
[0 ... (_count - 1)] = { .nbr = { \
8581
.idx = NET_NBR_LLADDR_UNKNOWN, \
8682
.remove = _remove, \
87-
.size = ROUND_UP(_size, 4), \
88-
.extra_data_size = ROUND_UP(_extra_size, 4) } },\
83+
.size = ROUND_UP(_size, 4) } }, \
8984
}
9085

9186
struct net_nbr_table {
@@ -115,18 +110,6 @@ struct net_nbr_table {
115110
} \
116111
}
117112

118-
/**
119-
* @brief Get a pointer to the extra data of a neighbor entry.
120-
*
121-
* @param nbr A valid pointer to neighbor
122-
*
123-
* @return Pointer to the extra data of the nbr.
124-
*/
125-
static inline void *net_nbr_extra_data(struct net_nbr *nbr)
126-
{
127-
return (void *)ROUND_UP((nbr->__nbr + nbr->size), sizeof(int));
128-
}
129-
130113
/**
131114
* @brief Decrement the reference count. If count goes to 0, the neighbor
132115
* is released and returned to free list.

subsys/net/ip/route.c

Lines changed: 2 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ LOG_MODULE_REGISTER(net_route, CONFIG_NET_ROUTE_LOG_LEVEL);
2929
#include "nbr.h"
3030
#include "route.h"
3131

32-
#if !defined(NET_ROUTE_EXTRA_DATA_SIZE)
33-
#define NET_ROUTE_EXTRA_DATA_SIZE 0
34-
#endif
35-
3632
/* We keep track of the routes in a separate list so that we can remove
3733
* the oldest routes (at tail) if needed.
3834
*/
@@ -55,8 +51,7 @@ static void net_route_nexthop_remove(struct net_nbr *nbr)
5551
NET_NBR_POOL_INIT(net_route_nexthop_pool,
5652
CONFIG_NET_MAX_NEXTHOPS,
5753
sizeof(struct net_route_nexthop),
58-
net_route_nexthop_remove,
59-
0);
54+
net_route_nexthop_remove);
6055

6156
static inline struct net_route_nexthop *net_nexthop_data(struct net_nbr *nbr)
6257
{
@@ -115,8 +110,7 @@ static void net_route_entries_table_clear(struct net_nbr_table *table)
115110
NET_NBR_POOL_INIT(net_route_entries_pool,
116111
CONFIG_NET_MAX_ROUTES,
117112
sizeof(struct net_route_entry),
118-
net_route_entry_remove,
119-
NET_ROUTE_EXTRA_DATA_SIZE);
113+
net_route_entry_remove);
120114

121115
NET_NBR_TABLE_INIT(NET_NBR_LOCAL, nbr_routes, net_route_entries_pool,
122116
net_route_entries_table_clear);
@@ -665,70 +659,6 @@ int net_route_del_by_nexthop(struct net_if *iface, struct in6_addr *nexthop)
665659
return 0;
666660
}
667661

668-
int net_route_del_by_nexthop_data(struct net_if *iface,
669-
struct in6_addr *nexthop,
670-
void *data)
671-
{
672-
int count = 0, status = 0;
673-
struct net_nbr *nbr_nexthop;
674-
struct net_route_nexthop *nexthop_route;
675-
int i, ret;
676-
677-
NET_ASSERT(iface);
678-
NET_ASSERT(nexthop);
679-
680-
net_ipv6_nbr_lock();
681-
682-
nbr_nexthop = net_ipv6_nbr_lookup(iface, nexthop);
683-
if (!nbr_nexthop) {
684-
net_ipv6_nbr_unlock();
685-
return -EINVAL;
686-
}
687-
688-
for (i = 0; i < CONFIG_NET_MAX_ROUTES; i++) {
689-
struct net_nbr *nbr = get_nbr(i);
690-
struct net_route_entry *route = net_route_data(nbr);
691-
692-
SYS_SLIST_FOR_EACH_CONTAINER(&route->nexthop, nexthop_route,
693-
node) {
694-
void *extra_data;
695-
696-
if (nexthop_route->nbr != nbr_nexthop) {
697-
continue;
698-
}
699-
700-
if (nbr->extra_data_size == 0U) {
701-
continue;
702-
}
703-
704-
/* Routing engine specific extra data needs
705-
* to match too.
706-
*/
707-
extra_data = net_nbr_extra_data(nbr_nexthop);
708-
if (extra_data != data) {
709-
continue;
710-
}
711-
712-
ret = net_route_del(route);
713-
if (!ret) {
714-
count++;
715-
} else {
716-
status = ret;
717-
}
718-
719-
break;
720-
}
721-
}
722-
723-
net_ipv6_nbr_unlock();
724-
725-
if (count) {
726-
return count;
727-
}
728-
729-
return status;
730-
}
731-
732662
struct in6_addr *net_route_get_nexthop(struct net_route_entry *route)
733663
{
734664
struct net_route_nexthop *nexthop_route;

subsys/net/ip/route.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,6 @@ int net_route_del(struct net_route_entry *entry);
138138
int net_route_del_by_nexthop(struct net_if *iface,
139139
struct in6_addr *nexthop);
140140

141-
/**
142-
* @brief Delete a route from routing table by nexthop if the routing engine
143-
* specific data matches.
144-
*
145-
* @detail The routing engine specific data could be the RPL data.
146-
*
147-
* @param iface Network interface to use.
148-
* @param nexthop IPv6 address of the nexthop device.
149-
* @param data Routing engine specific data.
150-
*
151-
* @return number of routes deleted, <0 if error
152-
*/
153-
int net_route_del_by_nexthop_data(struct net_if *iface,
154-
struct in6_addr *nexthop,
155-
void *data);
156-
157141
/**
158142
* @brief Update the route lifetime.
159143
*

tests/net/neighbor/src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static void net_neighbor_table_clear(struct net_nbr_table *table)
4545
}
4646

4747
NET_NBR_POOL_INIT(net_test_neighbor_pool, CONFIG_NET_IPV6_MAX_NEIGHBORS,
48-
0, net_neighbor_data_remove, 0);
48+
0, net_neighbor_data_remove);
4949

5050
NET_NBR_TABLE_INIT(NET_NBR_LOCAL, test_neighbor, net_test_neighbor_pool,
5151
net_neighbor_table_clear);

0 commit comments

Comments
 (0)