net: tcp2: Refactor tcp_pkt_alloc()

In order to fix the line tracking of the TCP packet allocation
with the test protocol enabled, refactor tcp_pkt_alloc(),
so the line of the allocation can be tracked properly.

Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com>
This commit is contained in:
Oleg Zhurakivskyy 2020-04-22 15:09:23 +03:00 committed by Jukka Rissanen
commit ccb5a01fc1
2 changed files with 20 additions and 21 deletions

View file

@ -539,28 +539,13 @@ static int ip_header_add(struct tcp *conn, struct net_pkt *pkt)
return -EINVAL;
}
static struct net_pkt *tcp_pkt_alloc(struct net_if *iface,
sa_family_t family, size_t len)
{
struct net_pkt *pkt;
pkt = net_pkt_alloc_with_buffer(iface, len, family,
IPPROTO_TCP, K_NO_WAIT);
#if IS_ENABLED(CONFIG_NET_TEST_PROTOCOL)
tp_pkt_alloc(pkt);
#endif
return pkt;
}
static void tcp_out(struct tcp *conn, u8_t flags, ...)
{
struct net_pkt *pkt;
size_t len = 0;
int r;
pkt = tcp_pkt_alloc(conn->iface, net_context_get_family(conn->context),
sizeof(struct tcphdr));
pkt = tcp_pkt_alloc(conn, sizeof(struct tcphdr));
if (!pkt) {
goto fail;
}
@ -580,8 +565,6 @@ static void tcp_out(struct tcp *conn, u8_t flags, ...)
tcp_pkt_unref(data_pkt);
}
pkt->iface = conn->iface;
r = ip_header_add(conn, pkt);
if (r < 0) {
goto fail;
@ -1494,8 +1477,7 @@ enum net_verdict tp_input(struct net_conn *net_conn,
{
struct net_pkt *data_pkt;
data_pkt = tcp_pkt_alloc(pkt->iface,
pkt->family, len);
data_pkt = tcp_pkt_alloc(conn, len);
net_pkt_write(data_pkt, buf, len);
net_pkt_cursor_init(data_pkt);
net_tcp_queue_data(conn->context, data_pkt);

View file

@ -33,10 +33,27 @@
#endif
#if IS_ENABLED(CONFIG_NET_TEST_PROTOCOL)
#define tp_pkt_alloc(_pkt) tp_pkt_alloc(_pkt, tp_basename(__FILE__), __LINE__)
#define tcp_pkt_alloc(_conn, _len) \
({ \
sa_family_t _family = net_context_get_family((_conn)->context); \
struct net_pkt *_pkt = net_pkt_alloc_with_buffer((_conn)->iface,\
(_len), \
_family, \
IPPROTO_TCP, \
K_NO_WAIT); \
\
tp_pkt_alloc(_pkt, tp_basename(__FILE__), __LINE__); \
\
_pkt; \
})
#define tcp_pkt_clone(_pkt) tp_pkt_clone(_pkt, tp_basename(__FILE__), __LINE__)
#define tcp_pkt_unref(_pkt) tp_pkt_unref(_pkt, tp_basename(__FILE__), __LINE__)
#else
#define tcp_pkt_alloc(_conn, _len) \
net_pkt_alloc_with_buffer((_conn)->iface, (_len), \
net_context_get_family((_conn)->context), \
IPPROTO_TCP, K_NO_WAIT)
#define tcp_pkt_clone(_pkt) net_pkt_clone(_pkt, K_NO_WAIT)
#define tcp_pkt_unref(_pkt) net_pkt_unref(_pkt)
#endif