From ccb5a01fc18ca5e8879cfa21adbb77b9740a6ac5 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakivskyy Date: Wed, 22 Apr 2020 15:09:23 +0300 Subject: [PATCH] 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 --- subsys/net/ip/tcp2.c | 22 ++-------------------- subsys/net/ip/tcp2_priv.h | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/subsys/net/ip/tcp2.c b/subsys/net/ip/tcp2.c index b7f091be1ef..f6ef14d593c 100644 --- a/subsys/net/ip/tcp2.c +++ b/subsys/net/ip/tcp2.c @@ -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); diff --git a/subsys/net/ip/tcp2_priv.h b/subsys/net/ip/tcp2_priv.h index 89719ad80a9..522eda27a87 100644 --- a/subsys/net/ip/tcp2_priv.h +++ b/subsys/net/ip/tcp2_priv.h @@ -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