Skip to content

Commit ccb5a01

Browse files
ozhurakijukkar
authored andcommitted
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 <[email protected]>
1 parent b7897d5 commit ccb5a01

File tree

2 files changed

+20
-21
lines changed

2 files changed

+20
-21
lines changed

subsys/net/ip/tcp2.c

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -539,28 +539,13 @@ static int ip_header_add(struct tcp *conn, struct net_pkt *pkt)
539539
return -EINVAL;
540540
}
541541

542-
static struct net_pkt *tcp_pkt_alloc(struct net_if *iface,
543-
sa_family_t family, size_t len)
544-
{
545-
struct net_pkt *pkt;
546-
547-
pkt = net_pkt_alloc_with_buffer(iface, len, family,
548-
IPPROTO_TCP, K_NO_WAIT);
549-
550-
#if IS_ENABLED(CONFIG_NET_TEST_PROTOCOL)
551-
tp_pkt_alloc(pkt);
552-
#endif
553-
return pkt;
554-
}
555-
556542
static void tcp_out(struct tcp *conn, u8_t flags, ...)
557543
{
558544
struct net_pkt *pkt;
559545
size_t len = 0;
560546
int r;
561547

562-
pkt = tcp_pkt_alloc(conn->iface, net_context_get_family(conn->context),
563-
sizeof(struct tcphdr));
548+
pkt = tcp_pkt_alloc(conn, sizeof(struct tcphdr));
564549
if (!pkt) {
565550
goto fail;
566551
}
@@ -580,8 +565,6 @@ static void tcp_out(struct tcp *conn, u8_t flags, ...)
580565
tcp_pkt_unref(data_pkt);
581566
}
582567

583-
pkt->iface = conn->iface;
584-
585568
r = ip_header_add(conn, pkt);
586569
if (r < 0) {
587570
goto fail;
@@ -1494,8 +1477,7 @@ enum net_verdict tp_input(struct net_conn *net_conn,
14941477
{
14951478
struct net_pkt *data_pkt;
14961479

1497-
data_pkt = tcp_pkt_alloc(pkt->iface,
1498-
pkt->family, len);
1480+
data_pkt = tcp_pkt_alloc(conn, len);
14991481
net_pkt_write(data_pkt, buf, len);
15001482
net_pkt_cursor_init(data_pkt);
15011483
net_tcp_queue_data(conn->context, data_pkt);

subsys/net/ip/tcp2_priv.h

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,27 @@
3333
#endif
3434

3535
#if IS_ENABLED(CONFIG_NET_TEST_PROTOCOL)
36-
#define tp_pkt_alloc(_pkt) tp_pkt_alloc(_pkt, tp_basename(__FILE__), __LINE__)
36+
#define tcp_pkt_alloc(_conn, _len) \
37+
({ \
38+
sa_family_t _family = net_context_get_family((_conn)->context); \
39+
struct net_pkt *_pkt = net_pkt_alloc_with_buffer((_conn)->iface,\
40+
(_len), \
41+
_family, \
42+
IPPROTO_TCP, \
43+
K_NO_WAIT); \
44+
\
45+
tp_pkt_alloc(_pkt, tp_basename(__FILE__), __LINE__); \
46+
\
47+
_pkt; \
48+
})
3749
#define tcp_pkt_clone(_pkt) tp_pkt_clone(_pkt, tp_basename(__FILE__), __LINE__)
3850
#define tcp_pkt_unref(_pkt) tp_pkt_unref(_pkt, tp_basename(__FILE__), __LINE__)
3951
#else
52+
#define tcp_pkt_alloc(_conn, _len) \
53+
net_pkt_alloc_with_buffer((_conn)->iface, (_len), \
54+
net_context_get_family((_conn)->context), \
55+
IPPROTO_TCP, K_NO_WAIT)
56+
4057
#define tcp_pkt_clone(_pkt) net_pkt_clone(_pkt, K_NO_WAIT)
4158
#define tcp_pkt_unref(_pkt) net_pkt_unref(_pkt)
4259
#endif

0 commit comments

Comments
 (0)