summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/subsystems/networking/connectivity-example-app.c4
-rw-r--r--drivers/console/telnet_console.c6
-rw-r--r--drivers/ethernet/eth_enc28j60.c4
-rw-r--r--drivers/ethernet/eth_mcux.c4
-rw-r--r--drivers/ethernet/eth_sam_gmac.c6
-rw-r--r--drivers/ieee802154/ieee802154_cc2520.c6
-rw-r--r--drivers/ieee802154/ieee802154_mcr20a.c6
-rw-r--r--drivers/ieee802154/ieee802154_uart_pipe.c4
-rw-r--r--drivers/slip/slip.c6
-rw-r--r--include/net/nbuf.h157
-rw-r--r--samples/bluetooth/ipsp/src/main.c2
-rw-r--r--samples/net/coaps_client/src/udp.c4
-rw-r--r--samples/net/coaps_server/src/udp.c4
-rw-r--r--samples/net/echo_client/src/echo-client.c5
-rw-r--r--samples/net/echo_server/src/echo-server.c4
-rw-r--r--samples/net/http_client/src/http_client.c25
-rw-r--r--samples/net/http_server/src/http_write_utils.c10
-rw-r--r--samples/net/irc_bot/src/irc-bot.c4
-rw-r--r--samples/net/leds_demo/src/leds-demo.c16
-rw-r--r--samples/net/mbedtls_dtlsclient/src/udp.c4
-rw-r--r--samples/net/mbedtls_dtlsserver/src/udp.c4
-rw-r--r--samples/net/mbedtls_sslclient/src/tcp.c4
-rw-r--r--samples/net/wpan_serial/src/main.c8
-rw-r--r--samples/net/wpanusb/src/wpanusb.c13
-rw-r--r--samples/net/zoap_client/src/zoap-client.c4
-rw-r--r--samples/net/zoap_server/src/zoap-server.c40
-rw-r--r--samples/net/zperf/src/zperf_tcp_uploader.c11
-rw-r--r--samples/net/zperf/src/zperf_udp_receiver.c4
-rw-r--r--samples/net/zperf/src/zperf_udp_uploader.c18
-rw-r--r--subsys/net/ip/6lo.c15
-rw-r--r--subsys/net/ip/dhcpv4.c38
-rw-r--r--subsys/net/ip/icmpv4.c8
-rw-r--r--subsys/net/ip/icmpv6.c10
-rw-r--r--subsys/net/ip/ipv4.c2
-rw-r--r--subsys/net/ip/ipv6.c19
-rw-r--r--subsys/net/ip/l2/arp.c13
-rw-r--r--subsys/net/ip/l2/bluetooth.c4
-rw-r--r--subsys/net/ip/l2/ieee802154/ieee802154.c4
-rw-r--r--subsys/net/ip/l2/ieee802154/ieee802154_fragment.c4
-rw-r--r--subsys/net/ip/l2/ieee802154/ieee802154_frame.c4
-rw-r--r--subsys/net/ip/nbuf.c144
-rw-r--r--subsys/net/ip/rpl.c21
-rw-r--r--subsys/net/ip/tcp.c4
-rw-r--r--subsys/net/lib/dns/dns_client.c4
-rw-r--r--subsys/net/lib/mqtt/mqtt.c20
-rw-r--r--subsys/net/lib/zoap/zoap_link_format.c4
-rw-r--r--tests/net/6lo/src/main.c6
-rw-r--r--tests/net/arp/src/main.c24
-rw-r--r--tests/net/context/src/main.c24
-rw-r--r--tests/net/dhcpv4/src/main.c7
-rw-r--r--tests/net/ieee802154/fragment/src/main.c10
-rw-r--r--tests/net/ieee802154/l2/src/ieee802154_test.c6
-rw-r--r--tests/net/iface/src/main.c4
-rw-r--r--tests/net/ipv6/src/main.c20
-rw-r--r--tests/net/nbuf/src/main.c119
-rw-r--r--tests/net/route/src/main.c4
-rw-r--r--tests/net/rpl/src/main.c4
-rw-r--r--tests/net/tcp/src/main.c8
-rw-r--r--tests/net/udp/src/main.c8
-rw-r--r--tests/net/utils/src/main.c34
60 files changed, 564 insertions, 419 deletions
diff --git a/doc/subsystems/networking/connectivity-example-app.c b/doc/subsystems/networking/connectivity-example-app.c
index 207b369ad..09b7c8a5c 100644
--- a/doc/subsystems/networking/connectivity-example-app.c
+++ b/doc/subsystems/networking/connectivity-example-app.c
@@ -95,7 +95,7 @@ static struct net_buf *udp_recv(const char *name,
NET_INFO("%s received %u bytes", name,
net_nbuf_appdatalen(buf));
- reply_buf = net_nbuf_get_tx(context);
+ reply_buf = net_nbuf_get_tx(context, K_FOREVER);
NET_ASSERT(reply_buf);
@@ -113,7 +113,7 @@ static struct net_buf *udp_recv(const char *name,
net_buf_pull(tmp, header_len);
while (tmp) {
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
memcpy(net_buf_add(frag, tmp->len), tmp->data, tmp->len);
diff --git a/drivers/console/telnet_console.c b/drivers/console/telnet_console.c
index 5fc254631..5e55f3a5c 100644
--- a/drivers/console/telnet_console.c
+++ b/drivers/console/telnet_console.c
@@ -125,7 +125,7 @@ static void telnet_end_client_connection(void)
static int telnet_setup_out_buf(struct net_context *client)
{
- out_buf = net_nbuf_get_tx(client);
+ out_buf = net_nbuf_get_tx(client, K_FOREVER);
if (!out_buf) {
/* Cannot happen atm, nbuf waits indefinitely */
return -ENOBUFS;
@@ -234,7 +234,7 @@ static inline bool telnet_send(void)
struct line_buf *lb = telnet_rb_get_line_out();
if (lb) {
- net_nbuf_append(out_buf, lb->len, lb->buf);
+ net_nbuf_append(out_buf, lb->len, lb->buf, K_FOREVER);
/* We reinitialize the line buffer */
lb->len = 0;
@@ -258,7 +258,7 @@ static int telnet_console_out_nothing(int c)
static inline void telnet_command_send_reply(uint8_t *msg, uint16_t len)
{
- net_nbuf_append(out_buf, len, msg);
+ net_nbuf_append(out_buf, len, msg, K_FOREVER);
net_context_send(out_buf, telnet_sent_cb,
K_NO_WAIT, NULL, NULL);
diff --git a/drivers/ethernet/eth_enc28j60.c b/drivers/ethernet/eth_enc28j60.c
index c29abb576..c42edd333 100644
--- a/drivers/ethernet/eth_enc28j60.c
+++ b/drivers/ethernet/eth_enc28j60.c
@@ -551,7 +551,7 @@ static int eth_enc28j60_rx(struct device *dev)
lengthfr = frm_len;
/* Get the frame from the buffer */
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!buf) {
SYS_LOG_ERR("Could not allocate rx buffer");
goto done;
@@ -565,7 +565,7 @@ static int eth_enc28j60_rx(struct device *dev)
size_t spi_frame_len;
/* Reserve a data frag to receive the frame */
- pkt_buf = net_nbuf_get_reserve_data(0);
+ pkt_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!pkt_buf) {
SYS_LOG_ERR("Could not allocate data buffer");
net_buf_unref(buf);
diff --git a/drivers/ethernet/eth_mcux.c b/drivers/ethernet/eth_mcux.c
index 55df52ae7..2b1111b08 100644
--- a/drivers/ethernet/eth_mcux.c
+++ b/drivers/ethernet/eth_mcux.c
@@ -145,7 +145,7 @@ static void eth_rx(struct device *iface)
return;
}
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!buf) {
/* We failed to get a receive buffer. We don't add
* any further logging here because the allocator
@@ -188,7 +188,7 @@ static void eth_rx(struct device *iface)
struct net_buf *pkt_buf;
size_t frag_len;
- pkt_buf = net_nbuf_get_reserve_data(0);
+ pkt_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!pkt_buf) {
irq_unlock(imask);
SYS_LOG_ERR("Failed to get fragment buf\n");
diff --git a/drivers/ethernet/eth_sam_gmac.c b/drivers/ethernet/eth_sam_gmac.c
index 63efa9800..e78fbc568 100644
--- a/drivers/ethernet/eth_sam_gmac.c
+++ b/drivers/ethernet/eth_sam_gmac.c
@@ -162,7 +162,7 @@ static int rx_descriptors_init(Gmac *gmac, struct gmac_queue *queue)
rx_nbuf_list->tail = 0;
for (int i = 0; i < rx_desc_list->len; i++) {
- rx_buf = net_nbuf_get_reserve_data(0);
+ rx_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (rx_buf == NULL) {
free_rx_bufs(rx_nbuf_list);
SYS_LOG_ERR("Failed to reserve data net buffers");
@@ -470,7 +470,7 @@ static struct net_buf *frame_get(struct gmac_queue *queue)
return NULL;
}
- rx_frame = net_nbuf_get_reserve_rx(0);
+ rx_frame = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
/* Process a frame */
prev_frag = rx_frame;
@@ -509,7 +509,7 @@ static struct net_buf *frame_get(struct gmac_queue *queue)
DCACHE_INVALIDATE(frag_data, frag_len);
/* Get a new data net buffer from the buffer pool */
- new_frag = net_nbuf_get_reserve_data(0);
+ new_frag = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (new_frag == NULL) {
queue->err_rx_frames_dropped++;
net_buf_unref(rx_frame);
diff --git a/drivers/ieee802154/ieee802154_cc2520.c b/drivers/ieee802154/ieee802154_cc2520.c
index 58a78dc72..4b3280240 100644
--- a/drivers/ieee802154/ieee802154_cc2520.c
+++ b/drivers/ieee802154/ieee802154_cc2520.c
@@ -594,7 +594,7 @@ static void cc2520_rx(int arg)
goto flush;
}
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!buf) {
SYS_LOG_ERR("No buf available");
goto flush;
@@ -604,9 +604,9 @@ static void cc2520_rx(int arg)
/**
* Reserve 1 byte for length
*/
- pkt_buf = net_nbuf_get_reserve_data(1);
+ pkt_buf = net_nbuf_get_reserve_data(1, K_NO_WAIT);
#else
- pkt_buf = net_nbuf_get_reserve_data(0);
+ pkt_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
#endif
if (!pkt_buf) {
SYS_LOG_ERR("No pkt_buf available");
diff --git a/drivers/ieee802154/ieee802154_mcr20a.c b/drivers/ieee802154/ieee802154_mcr20a.c
index eae6128fb..756cc89c1 100644
--- a/drivers/ieee802154/ieee802154_mcr20a.c
+++ b/drivers/ieee802154/ieee802154_mcr20a.c
@@ -524,7 +524,7 @@ static inline void mcr20a_rx(struct mcr20a_context *mcr20a)
pkt_len = read_reg_rx_frm_len(&mcr20a->spi);
pkt_len -= MCR20A_FCS_LENGTH;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!buf) {
SYS_LOG_ERR("No buf available");
goto out;
@@ -535,9 +535,9 @@ static inline void mcr20a_rx(struct mcr20a_context *mcr20a)
/**
* Reserve 1 byte for length
*/
- pkt_buf = net_nbuf_get_reserve_data(1);
+ pkt_buf = net_nbuf_get_reserve_data(1, K_NO_WAIT);
#else
- pkt_buf = net_nbuf_get_reserve_data(0);
+ pkt_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
#endif
if (!pkt_buf) {
SYS_LOG_ERR("No pkt_buf available");
diff --git a/drivers/ieee802154/ieee802154_uart_pipe.c b/drivers/ieee802154/ieee802154_uart_pipe.c
index 68307d796..5daa2e6d0 100644
--- a/drivers/ieee802154/ieee802154_uart_pipe.c
+++ b/drivers/ieee802154/ieee802154_uart_pipe.c
@@ -54,13 +54,13 @@ static uint8_t *upipe_rx(uint8_t *buf, size_t *off)
upipe->rx_buf[upipe->rx_off++] = *buf;
if (upipe->rx_len == upipe->rx_off) {
- nbuf = net_nbuf_get_reserve_rx(0);
+ nbuf = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!nbuf) {
SYS_LOG_DBG("No buf available");
goto flush;
}
- pkt_buf = net_nbuf_get_reserve_data(0);
+ pkt_buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!pkt_buf) {
SYS_LOG_DBG("No fragment available");
goto out;
diff --git a/drivers/slip/slip.c b/drivers/slip/slip.c
index 2d44d0b5b..f64783ff2 100644
--- a/drivers/slip/slip.c
+++ b/drivers/slip/slip.c
@@ -267,12 +267,12 @@ static inline int slip_input_byte(struct slip_context *slip,
}
if (!slip->rx) {
- slip->rx = net_nbuf_get_reserve_rx(0);
+ slip->rx = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!slip->rx) {
return 0;
}
- slip->last = net_nbuf_get_reserve_data(0);
+ slip->last = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!slip->last) {
net_nbuf_unref(slip->rx);
slip->rx = NULL;
@@ -287,7 +287,7 @@ static inline int slip_input_byte(struct slip_context *slip,
/* We need to allocate a new fragment */
struct net_buf *frag;
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!frag) {
SYS_LOG_ERR("[%p] cannot allocate data fragment",
slip);
diff --git a/include/net/nbuf.h b/include/net/nbuf.h
index 99a55a4ca..55f8d4a9b 100644
--- a/include/net/nbuf.h
+++ b/include/net/nbuf.h
@@ -311,34 +311,40 @@ static inline void net_nbuf_set_src_ipv6_addr(struct net_buf *buf)
*/
struct net_buf *net_nbuf_get_rx_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_rx(context) \
- net_nbuf_get_rx_debug(context, __func__, __LINE__)
+#define net_nbuf_get_rx(context, timeout) \
+ net_nbuf_get_rx_debug(context, timeout, __func__, __LINE__)
struct net_buf *net_nbuf_get_tx_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_tx(context) \
- net_nbuf_get_tx_debug(context, __func__, __LINE__)
+#define net_nbuf_get_tx(context, timeout) \
+ net_nbuf_get_tx_debug(context, timeout, __func__, __LINE__)
struct net_buf *net_nbuf_get_data_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_data(context) \
- net_nbuf_get_data_debug(context, __func__, __LINE__)
+#define net_nbuf_get_data(context, timeout) \
+ net_nbuf_get_data_debug(context, timeout, __func__, __LINE__)
struct net_buf *net_nbuf_get_reserve_rx_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_reserve_rx(res) \
- net_nbuf_get_reserve_rx_debug(res, __func__, __LINE__)
+#define net_nbuf_get_reserve_rx(res, timeout) \
+ net_nbuf_get_reserve_rx_debug(res, timeout, __func__, __LINE__)
struct net_buf *net_nbuf_get_reserve_tx_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_reserve_tx(res) \
- net_nbuf_get_reserve_tx_debug(res, __func__, __LINE__)
+#define net_nbuf_get_reserve_tx(res, timeout) \
+ net_nbuf_get_reserve_tx_debug(res, timeout, __func__, __LINE__)
struct net_buf *net_nbuf_get_reserve_data_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line);
-#define net_nbuf_get_reserve_data(res) \
- net_nbuf_get_reserve_data_debug(res, __func__, __LINE__)
+#define net_nbuf_get_reserve_data(res, timeout) \
+ net_nbuf_get_reserve_data_debug(res, timeout, __func__, __LINE__)
void net_nbuf_unref_debug(struct net_buf *buf, const char *caller, int line);
#define net_nbuf_unref(buf) net_nbuf_unref_debug(buf, __func__, __LINE__)
@@ -369,10 +375,15 @@ void net_nbuf_print_frags(struct net_buf *buf);
*
* @param context Network context that will be related to
* this buffer.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_rx(struct net_context *context);
+struct net_buf *net_nbuf_get_rx(struct net_context *context,
+ int32_t timeout);
/**
* @brief Get buffer from the TX buffers pool.
@@ -382,10 +393,15 @@ struct net_buf *net_nbuf_get_rx(struct net_context *context);
*
* @param context Network context that will be related to
* this buffer.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_tx(struct net_context *context);
+struct net_buf *net_nbuf_get_tx(struct net_context *context,
+ int32_t timeout);
/**
* @brief Get buffer from the DATA buffers pool.
@@ -395,10 +411,15 @@ struct net_buf *net_nbuf_get_tx(struct net_context *context);
*
* @param context Network context that will be related to
* this buffer.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_data(struct net_context *context);
+struct net_buf *net_nbuf_get_data(struct net_context *context,
+ int32_t timeout);
/**
* @brief Get RX buffer from pool but also reserve headroom for
@@ -408,10 +429,15 @@ struct net_buf *net_nbuf_get_data(struct net_context *context);
* but is mainly used by network fragmentation code.
*
* @param reserve_head How many bytes to reserve for headroom.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_reserve_rx(uint16_t reserve_head);
+struct net_buf *net_nbuf_get_reserve_rx(uint16_t reserve_head,
+ int32_t timeout);
/**
* @brief Get TX buffer from pool but also reserve headroom for
@@ -421,10 +447,15 @@ struct net_buf *net_nbuf_get_reserve_rx(uint16_t reserve_head);
* but is mainly used by network fragmentation code.
*
* @param reserve_head How many bytes to reserve for headroom.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_reserve_tx(uint16_t reserve_head);
+struct net_buf *net_nbuf_get_reserve_tx(uint16_t reserve_head,
+ int32_t timeout);
/**
* @brief Get DATA buffer from pool but also reserve headroom for
@@ -434,10 +465,15 @@ struct net_buf *net_nbuf_get_reserve_tx(uint16_t reserve_head);
* but is mainly used by network fragmentation code.
*
* @param reserve_head How many bytes to reserve for headroom.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Network buffer if successful, NULL otherwise.
*/
-struct net_buf *net_nbuf_get_reserve_data(uint16_t reserve_head);
+struct net_buf *net_nbuf_get_reserve_data(uint16_t reserve_head,
+ int32_t timeout);
/**
* @brief Place buffer back into the available buffers pool.
@@ -477,11 +513,15 @@ struct net_buf *net_nbuf_ref(struct net_buf *buf);
* @param reserve Amount of extra data (this is not link layer header) in the
* first data fragment that is returned. The function will copy the original
* buffer right after the reserved bytes in the first destination fragment.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return New fragment list if successful, NULL otherwise.
*/
struct net_buf *net_nbuf_copy(struct net_buf *buf, size_t amount,
- size_t reserve);
+ size_t reserve, int32_t timeout);
/**
* @brief Copy a buffer with fragments while reserving some extra space
@@ -492,13 +532,18 @@ struct net_buf *net_nbuf_copy(struct net_buf *buf, size_t amount,
* @param reserve Amount of extra data (this is not link layer header) in the
* first data fragment that is returned. The function will copy the original
* buffer right after the reserved bytes in the first destination fragment.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return New fragment list if successful, NULL otherwise.
*/
static inline struct net_buf *net_nbuf_copy_all(struct net_buf *buf,
- size_t reserve)
+ size_t reserve,
+ int32_t timeout)
{
- return net_nbuf_copy(buf, net_buf_frags_len(buf), reserve);
+ return net_nbuf_copy(buf, net_buf_frags_len(buf), reserve, timeout);
}
/**
@@ -554,11 +599,15 @@ bool net_nbuf_is_compact(struct net_buf *buf);
* no parent, then set this parameter NULL.
* @param buf Network buffer
* @param amount Amount of data that is needed in front of the fragment list.
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Pointer to the start of the fragment list if ok, NULL otherwise.
*/
struct net_buf *net_nbuf_push(struct net_buf *parent, struct net_buf *buf,
- size_t amount);
+ size_t amount, int32_t timeout);
/**
* @brief Remove given amount of data from the beginning of fragment list.
@@ -583,12 +632,17 @@ struct net_buf *net_nbuf_pull(struct net_buf *buf, size_t amount);
* @param buf Network buffer fragment list.
* @param len Total length of input data
* @param data Data to be added
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return True if all the data is placed at end of fragment list,
* False otherwise (In-case of false buf might contain input
* data in the process of placing into fragments).
*/
-bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data);
+bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data,
+ int32_t timeout);
/**
* @brief Append uint8_t data to last fragment in fragment list
@@ -606,7 +660,7 @@ bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data);
*/
static inline bool net_nbuf_append_u8(struct net_buf *buf, uint8_t data)
{
- return net_nbuf_append(buf, 1, &data);
+ return net_nbuf_append(buf, 1, &data, K_FOREVER);
}
/**
@@ -627,7 +681,8 @@ static inline bool net_nbuf_append_be16(struct net_buf *buf, uint16_t data)
{
uint16_t value = sys_cpu_to_be16(data);
- return net_nbuf_append(buf, sizeof(uint16_t), (uint8_t *)&value);
+ return net_nbuf_append(buf, sizeof(uint16_t), (uint8_t *)&value,
+ K_FOREVER);
}
/**
@@ -648,7 +703,8 @@ static inline bool net_nbuf_append_be32(struct net_buf *buf, uint32_t data)
{
uint32_t value = sys_cpu_to_be32(data);
- return net_nbuf_append(buf, sizeof(uint32_t), (uint8_t *)&value);
+ return net_nbuf_append(buf, sizeof(uint32_t), (uint8_t *)&value,
+ K_FOREVER);
}
/**
@@ -770,23 +826,23 @@ struct net_buf *net_nbuf_read_be32(struct net_buf *buf, uint16_t offset,
* e.g. Buf(Tx/Rx) - Frag1 - Frag2 - Frag3 - Frag4
* (Assume FRAG DATA SIZE is 100 bytes after link layer header)
*
- * 1) net_nbuf_write(buf, frag2, 20, &pos, 20, data)
+ * 1) net_nbuf_write(buf, frag2, 20, &pos, 20, data, K_FOREVER)
* In this case write starts from "frag2->data + 20",
* returns frag2, pos = 40
*
- * 2) net_nbuf_write(buf, frag1, 150, &pos, 60, data)
+ * 2) net_nbuf_write(buf, frag1, 150, &pos, 60, data, K_FOREVER)
* In this case write starts from "frag2->data + 50"
* returns frag3, pos = 10
*
- * 3) net_nbuf_write(buf, frag1, 350, &pos, 30, data)
+ * 3) net_nbuf_write(buf, frag1, 350, &pos, 30, data, K_FOREVER)
* In this case write starts from "frag4->data + 50"
* returns frag4, pos = 80
*
- * 4) net_nbuf_write(buf, frag2, 110, &pos, 90, data)
+ * 4) net_nbuf_write(buf, frag2, 110, &pos, 90, data, K_FOREVER)
* In this case write starts from "frag3->data + 10"
* returns frag4, pos = 0
*
- * 5) net_nbuf_write(buf, frag4, 110, &pos, 20, data)
+ * 5) net_nbuf_write(buf, frag4, 110, &pos, 20, data, K_FOREVER)
* In this case write creates new data fragment and starts from
* "frag5->data + 10"
* returns frag5, pos = 30
@@ -801,13 +857,17 @@ struct net_buf *net_nbuf_read_be32(struct net_buf *buf, uint16_t offset,
* relative to return fragment)
* @param len Length of the data to be written.
* @param data Data to be written
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return Pointer to the fragment and position (*pos) where write ended,
* NULL and pos is 0xffff otherwise.
*/
struct net_buf *net_nbuf_write(struct net_buf *buf, struct net_buf *frag,
uint16_t offset, uint16_t *pos, uint16_t len,
- uint8_t *data);
+ uint8_t *data, int32_t timeout);
/* Write uint8_t data to an arbitrary offset in fragment. */
static inline struct net_buf *net_nbuf_write_u8(struct net_buf *buf,
@@ -816,7 +876,8 @@ static inline struct net_buf *net_nbuf_write_u8(struct net_buf *buf,
uint16_t *pos,
uint8_t data)
{
- return net_nbuf_write(buf, frag, offset, pos, sizeof(uint8_t), &data);
+ return net_nbuf_write(buf, frag, offset, pos, sizeof(uint8_t),
+ &data, K_FOREVER);
}
/* Write uint16_t big endian value to an arbitrary offset in fragment. */
@@ -829,7 +890,7 @@ static inline struct net_buf *net_nbuf_write_be16(struct net_buf *buf,
uint16_t value = htons(data);
return net_nbuf_write(buf, frag, offset, pos, sizeof(uint16_t),
- (uint8_t *)&value);
+ (uint8_t *)&value, K_FOREVER);
}
/* Write uint32_t big endian value to an arbitrary offset in fragment. */
@@ -842,7 +903,7 @@ static inline struct net_buf *net_nbuf_write_be32(struct net_buf *buf,
uint32_t value = htonl(data);
return net_nbuf_write(buf, frag, offset, pos, sizeof(uint32_t),
- (uint8_t *)&value);
+ (uint8_t *)&value, K_FOREVER);
}
/**
@@ -862,18 +923,26 @@ static inline struct net_buf *net_nbuf_write_be32(struct net_buf *buf,
* @param offset Offset of fragment where insertion will start.
* @param len Length of the data to be inserted.
* @param data Data to be inserted
+ * @param timeout Affects the action taken should the net buf pool be empty.
+ * If K_NO_WAIT, then return immediately. If K_FOREVER, then
+ * wait as long as necessary. Otherwise, wait up to the specified
+ * number of milliseconds before timing out.
*
* @return True on success,
* False otherwise.
*/
bool net_nbuf_insert(struct net_buf *buf, struct net_buf *frag,
- uint16_t offset, uint16_t len, uint8_t *data);
+ uint16_t offset, uint16_t len, uint8_t *data,
+ int32_t timeout);
/* Insert uint8_t data at an arbitrary offset in a series of fragments. */
-static inline bool net_nbuf_insert_u8(struct net_buf *buf, struct net_buf *frag,
- uint16_t offset, uint8_t data)
+static inline bool net_nbuf_insert_u8(struct net_buf *buf,
+ struct net_buf *frag,
+ uint16_t offset,
+ uint8_t data)
{
- return net_nbuf_insert(buf, frag, offset, sizeof(uint8_t), &data);
+ return net_nbuf_insert(buf, frag, offset, sizeof(uint8_t), &data,
+ K_FOREVER);
}
/* Insert uint16_t big endian value at an arbitrary offset in a series of
@@ -881,12 +950,13 @@ static inline bool net_nbuf_insert_u8(struct net_buf *buf, struct net_buf *frag,
*/
static inline bool net_nbuf_insert_be16(struct net_buf *buf,
struct net_buf *frag,
- uint16_t offset, uint16_t data)
+ uint16_t offset,
+ uint16_t data)
{
uint16_t value = htons(data);
return net_nbuf_insert(buf, frag, offset, sizeof(uint16_t),
- (uint8_t *)&value);
+ (uint8_t *)&value, K_FOREVER);
}
/* Insert uint32_t big endian value at an arbitrary offset in a series of
@@ -894,12 +964,13 @@ static inline bool net_nbuf_insert_be16(struct net_buf *buf,
*/
static inline bool net_nbuf_insert_be32(struct net_buf *buf,
struct net_buf *frag,
- uint16_t offset, uint32_t data)
+ uint16_t offset,
+ uint32_t data)
{
uint32_t value = htonl(data);
return net_nbuf_insert(buf, frag, offset, sizeof(uint32_t),
- (uint8_t *)&value);
+ (uint8_t *)&value, K_FOREVER);
}
/**
diff --git a/samples/bluetooth/ipsp/src/main.c b/samples/bluetooth/ipsp/src/main.c
index 378dca0c7..e29b95cce 100644
--- a/samples/bluetooth/ipsp/src/main.c
+++ b/samples/bluetooth/ipsp/src/main.c
@@ -145,7 +145,7 @@ static struct net_buf *build_reply_buf(const char *name,
printk("%s received %d bytes", name,
net_nbuf_appdatalen(buf));
- reply_buf = net_nbuf_get_tx(context);
+ reply_buf = net_nbuf_get_tx(context, K_FOREVER);
recv_len = net_buf_frags_len(buf->frags);
diff --git a/samples/net/coaps_client/src/udp.c b/samples/net/coaps_client/src/udp.c
index 1da593e84..b2c8e3799 100644
--- a/samples/net/coaps_client/src/udp.c
+++ b/samples/net/coaps_client/src/udp.c
@@ -58,12 +58,12 @@ int udp_tx(void *context, const unsigned char *buf, size_t size)
udp_ctx = ctx->net_ctx;
- send_buf = net_nbuf_get_tx(udp_ctx);
+ send_buf = net_nbuf_get_tx(udp_ctx, K_FOREVER);
if (!send_buf) {
return MBEDTLS_ERR_SSL_ALLOC_FAILED;
}
- rc = net_nbuf_append(send_buf, size, (uint8_t *) buf);
+ rc = net_nbuf_append(send_buf, size, (uint8_t *) buf, K_FOREVER);
if (!rc) {
return MBEDTLS_ERR_SSL_INTERNAL_ERROR;
}
diff --git a/samples/net/coaps_server/src/udp.c b/samples/net/coaps_server/src/udp.c
index f2a7081db..76cd1500e 100644
--- a/samples/net/coaps_server/src/udp.c
+++ b/samples/net/coaps_server/src/udp.c
@@ -47,13 +47,13 @@ int udp_tx(void *context, const unsigned char *buf, size_t size)
net_ctx = ctx->net_ctx;
- send_buf = net_nbuf_get_tx(net_ctx);
+ send_buf = net_nbuf_get_tx(net_ctx, K_FOREVER);
if (!send_buf) {
printk("cannot create buf\n");
return -EIO;
}
- rc = net_nbuf_append(send_buf, size, (uint8_t *) buf);
+ rc = net_nbuf_append(send_buf, size, (uint8_t *) buf, K_FOREVER);
if (!rc) {
printk("cannot write buf\n");
return -EIO;
diff --git a/samples/net/echo_client/src/echo-client.c b/samples/net/echo_client/src/echo-client.c
index 67cd58514..06f4ceafc 100644
--- a/samples/net/echo_client/src/echo-client.c
+++ b/samples/net/echo_client/src/echo-client.c
@@ -364,11 +364,12 @@ static struct net_buf *prepare_send_buf(const char *name,
struct net_buf *send_buf;
bool status;
- send_buf = net_nbuf_get_tx(context);
+ send_buf = net_nbuf_get_tx(context, K_FOREVER);
NET_ASSERT(send_buf);
- status = net_nbuf_append(send_buf, expecting_len, lorem_ipsum);
+ status = net_nbuf_append(send_buf, expecting_len, lorem_ipsum,
+ K_FOREVER);
if (!status) {
NET_ERR("%s: cannot create send buf", name);
return NULL;
diff --git a/samples/net/echo_server/src/echo-server.c b/samples/net/echo_server/src/echo-server.c
index 2344c12ed..fb3deecbd 100644
--- a/samples/net/echo_server/src/echo-server.c
+++ b/samples/net/echo_server/src/echo-server.c
@@ -271,7 +271,7 @@ static struct net_buf *build_reply_buf(const char *name,
return NULL;
}
- reply_buf = net_nbuf_get_tx(context);
+ reply_buf = net_nbuf_get_tx(context, K_FOREVER);
NET_ASSERT(reply_buf);
@@ -292,7 +292,7 @@ static struct net_buf *build_reply_buf(const char *name,
net_buf_pull(tmp, header_len);
while (tmp) {
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!net_buf_headroom(tmp)) {
/* If there is no link layer headers in the
diff --git a/samples/net/http_client/src/http_client.c b/samples/net/http_client/src/http_client.c
index 2632f6adc..5ae15713e 100644
--- a/samples/net/http_client/src/http_client.c
+++ b/samples/net/http_client/src/http_client.c
@@ -54,25 +54,27 @@ int http_send_request(struct http_client_ctx *http_ctx, const char *method,
struct net_buf *tx;
int rc;
- tx = net_nbuf_get_tx(http_ctx->tcp_ctx.net_ctx);
+ tx = net_nbuf_get_tx(http_ctx->tcp_ctx.net_ctx, K_FOREVER);
if (tx == NULL) {
return -ENOMEM;
}
- if (!net_nbuf_append(tx, strlen(method), (uint8_t *)method)) {
+ if (!net_nbuf_append(tx, strlen(method), (uint8_t *)method,
+ K_FOREVER)) {
goto lb_exit;
}
- if (!net_nbuf_append(tx, strlen(url), (uint8_t *)url)) {
+ if (!net_nbuf_append(tx, strlen(url), (uint8_t *)url, K_FOREVER)) {
goto lb_exit;
}
- if (!net_nbuf_append(tx, strlen(protocol), (uint8_t *)protocol)) {
+ if (!net_nbuf_append(tx, strlen(protocol), (uint8_t *)protocol,
+ K_FOREVER)) {
goto lb_exit;
}
if (!net_nbuf_append(tx, strlen(HEADER_FIELDS),
- (uint8_t *)HEADER_FIELDS)) {
+ (uint8_t *)HEADER_FIELDS, K_FOREVER)) {
goto lb_exit;
}
@@ -80,13 +82,14 @@ int http_send_request(struct http_client_ctx *http_ctx, const char *method,
char content_len_str[CON_LEN_SIZE];
if (!net_nbuf_append(tx, strlen(content_type),
- (uint8_t *)content_type)) {
+ (uint8_t *)content_type, K_FOREVER)) {
rc = -ENOMEM;
goto lb_exit;
}
if (!net_nbuf_append(tx, strlen(content_type_value),
- (uint8_t *)content_type_value)) {
+ (uint8_t *)content_type_value,
+ K_FOREVER)) {
rc = -ENOMEM;
goto lb_exit;
}
@@ -100,18 +103,20 @@ int http_send_request(struct http_client_ctx *http_ctx, const char *method,
}
if (!net_nbuf_append(tx, strlen(content_len_str),
- (uint8_t *)content_len_str)) {
+ (uint8_t *)content_len_str, K_FOREVER)) {
rc = -ENOMEM;
goto lb_exit;
}
- if (!net_nbuf_append(tx, strlen(payload), (uint8_t *)payload)) {
+ if (!net_nbuf_append(tx, strlen(payload), (uint8_t *)payload,
+ K_FOREVER)) {
rc = -ENOMEM;
goto lb_exit;
}
} else {
- if (!net_nbuf_append(tx, strlen(sep), (uint8_t *)sep)) {
+ if (!net_nbuf_append(tx, strlen(sep), (uint8_t *)sep,
+ K_FOREVER)) {
rc = -ENOMEM;
goto lb_exit;
}
diff --git a/samples/net/http_server/src/http_write_utils.c b/samples/net/http_server/src/http_write_utils.c
index a96853040..1167cfdcb 100644
--- a/samples/net/http_server/src/http_write_utils.c
+++ b/samples/net/http_server/src/http_write_utils.c
@@ -22,7 +22,7 @@ uint16_t http_strlen(const char *str)
int http_add_header(struct net_buf *tx, const char *str)
{
- net_nbuf_append(tx, strlen(str), (uint8_t *)str);
+ net_nbuf_append(tx, strlen(str), (uint8_t *)str, K_FOREVER);
return 0;
}
@@ -36,13 +36,13 @@ int http_add_chunk(struct net_buf *tx, const char *str)
str_len = http_strlen(str);
snprintf(chunk_header, sizeof(chunk_header), "%x\r\n", str_len);
- net_nbuf_append(tx, strlen(chunk_header), chunk_header);
+ net_nbuf_append(tx, strlen(chunk_header), chunk_header, K_FOREVER);
if (str_len) {
- net_nbuf_append(tx, str_len, (uint8_t *)str);
+ net_nbuf_append(tx, str_len, (uint8_t *)str, K_FOREVER);
}
- net_nbuf_append(tx, strlen(rn), rn);
+ net_nbuf_append(tx, strlen(rn), rn, K_FOREVER);
return 0;
}
@@ -54,7 +54,7 @@ int http_write(struct http_server_ctx *ctx, const char *http_header,
struct net_buf *tx;
int rc = -EINVAL;
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, K_FOREVER);
printf("[%s:%d] net_nbuf_get_tx, rc: %d <%s>\n",
__func__, __LINE__, !tx, RC_STR(!tx));
if (tx == NULL) {
diff --git a/samples/net/irc_bot/src/irc-bot.c b/samples/net/irc_bot/src/irc-bot.c
index d3c668eb9..8b6edb87e 100644
--- a/samples/net/irc_bot/src/irc-bot.c
+++ b/samples/net/irc_bot/src/irc-bot.c
@@ -146,12 +146,12 @@ transmit(struct net_context *ctx, char buffer[], size_t len)
{
struct net_buf *send_buf;
- send_buf = net_nbuf_get_tx(ctx);
+ send_buf = net_nbuf_get_tx(ctx, K_FOREVER);
if (!send_buf) {
return -ENOMEM;
}
- if (!net_nbuf_append(send_buf, len, buffer)) {
+ if (!net_nbuf_append(send_buf, len, buffer), K_FOREVER) {
return -EINVAL;
}
diff --git a/samples/net/leds_demo/src/leds-demo.c b/samples/net/leds_demo/src/leds-demo.c
index 0fe8044d8..5f081bbea 100644
--- a/samples/net/leds_demo/src/leds-demo.c
+++ b/samples/net/leds_demo/src/leds-demo.c
@@ -100,12 +100,12 @@ static int led_get(struct zoap_resource *resource,
id = zoap_header_get_id(request);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -167,12 +167,12 @@ static int led_post(struct zoap_resource *resource,
id = zoap_header_get_id(request);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -245,12 +245,12 @@ static int led_put(struct zoap_resource *resource,
id = zoap_header_get_id(request);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -307,12 +307,12 @@ static int dummy_get(struct zoap_resource *resource,
id = zoap_header_get_id(request);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
diff --git a/samples/net/mbedtls_dtlsclient/src/udp.c b/samples/net/mbedtls_dtlsclient/src/udp.c
index 06f7fb9da..bf6f3142f 100644
--- a/samples/net/mbedtls_dtlsclient/src/udp.c
+++ b/samples/net/mbedtls_dtlsclient/src/udp.c
@@ -66,13 +66,13 @@ int udp_tx(void *context, const unsigned char *buf, size_t size)
udp_ctx = ctx->net_ctx;
- send_buf = net_nbuf_get_tx(udp_ctx);
+ send_buf = net_nbuf_get_tx(udp_ctx, K_FOREVER);
if (!send_buf) {
printk("cannot create buf\n");
return -EIO;
}
- rc = net_nbuf_append(send_buf, size, (uint8_t *) buf);
+ rc = net_nbuf_append(send_buf, size, (uint8_t *) buf, K_FOREVER);
if (!rc) {
printk("cannot write buf\n");
return -EIO;
diff --git a/samples/net/mbedtls_dtlsserver/src/udp.c b/samples/net/mbedtls_dtlsserver/src/udp.c
index 20b68a2d5..7ed500d8c 100644
--- a/samples/net/mbedtls_dtlsserver/src/udp.c
+++ b/samples/net/mbedtls_dtlsserver/src/udp.c
@@ -60,13 +60,13 @@ int udp_tx(void *context, const unsigned char *buf, size_t size)
net_ctx = ctx->net_ctx;
- send_buf = net_nbuf_get_tx(net_ctx);
+ send_buf = net_nbuf_get_tx(net_ctx, K_FOREVER);
if (!send_buf) {
printk("cannot create buf\n");
return -EIO;
}
- rc = net_nbuf_append(send_buf, size, (uint8_t *) buf);
+ rc = net_nbuf_append(send_buf, size, (uint8_t *) buf, K_FOREVER);
if (!rc) {
printk("cannot write buf\n");
return -EIO;
diff --git a/samples/net/mbedtls_sslclient/src/tcp.c b/samples/net/mbedtls_sslclient/src/tcp.c
index 675cef09b..5f7cca16e 100644
--- a/samples/net/mbedtls_sslclient/src/tcp.c
+++ b/samples/net/mbedtls_sslclient/src/tcp.c
@@ -54,13 +54,13 @@ int tcp_tx(void *context, const unsigned char *buf, size_t size)
tcp_ctx = ctx->net_ctx;
- send_buf = net_nbuf_get_tx(tcp_ctx);
+ send_buf = net_nbuf_get_tx(tcp_ctx, K_FOREVER);
if (!send_buf) {
printk("cannot create buf\n");
return -EIO;
}
- rc = net_nbuf_append(send_buf, size, (uint8_t *) buf);
+ rc = net_nbuf_append(send_buf, size, (uint8_t *) buf, K_FOREVER);
if (!rc) {
printk("cannot write buf\n");
return -EIO;
diff --git a/samples/net/wpan_serial/src/main.c b/samples/net/wpan_serial/src/main.c
index 86b99acee..da56daf42 100644
--- a/samples/net/wpan_serial/src/main.c
+++ b/samples/net/wpan_serial/src/main.c
@@ -143,12 +143,12 @@ static int slip_process_byte(unsigned char c)
#endif
if (!pkt_curr) {
- pkt_curr = net_nbuf_get_reserve_rx(0);
+ pkt_curr = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!pkt_curr) {
SYS_LOG_ERR("No more buffers");
return 0;
}
- buf = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!buf) {
SYS_LOG_ERR("No more buffers");
net_nbuf_unref(pkt_curr);
@@ -220,13 +220,13 @@ static void send_data(uint8_t *cfg, uint8_t *data, size_t len)
{
struct net_buf *buf, *pkt;
- pkt = net_nbuf_get_reserve_rx(0);
+ pkt = net_nbuf_get_reserve_rx(0, K_NO_WAIT);
if (!pkt) {
SYS_LOG_DBG("No buf available");
return;
}
- buf = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
if (!buf) {
SYS_LOG_DBG("No fragment available");
net_nbuf_unref(pkt);
diff --git a/samples/net/wpanusb/src/wpanusb.c b/samples/net/wpanusb/src/wpanusb.c
index e764c70ec..ee9bc0992 100644
--- a/samples/net/wpanusb/src/wpanusb.c
+++ b/samples/net/wpanusb/src/wpanusb.c
@@ -382,8 +382,17 @@ static int wpanusb_vendor_handler(struct usb_setup_packet *setup,
{
struct net_buf *pkt, *buf;
- pkt = net_nbuf_get_reserve_tx(0);
- buf = net_nbuf_get_reserve_data(0);
+ pkt = net_nbuf_get_reserve_tx(0, K_NO_WAIT);
+ if (!pkt) {
+ return -ENOMEM;
+ }
+
+ buf = net_nbuf_get_reserve_data(0, K_NO_WAIT);
+ if (!buf) {
+ net_nbuf_unref(pkt);
+ return -ENOMEM;
+ }
+
net_buf_frag_insert(pkt, buf);
net_buf_add_u8(buf, setup->bRequest);
diff --git a/samples/net/zoap_client/src/zoap-client.c b/samples/net/zoap_client/src/zoap-client.c
index 984afa451..6e12077a2 100644
--- a/samples/net/zoap_client/src/zoap-client.c
+++ b/samples/net/zoap_client/src/zoap-client.c
@@ -173,13 +173,13 @@ static void event_iface_up(struct net_mgmt_event_callback *cb,
k_delayed_work_init(&retransmit_work, retransmit_request);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
printk("Unable to get TX buffer, not enough memory.\n");
return;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
printk("Unable to get DATA buffer, not enough memory.\n");
return;
diff --git a/samples/net/zoap_server/src/zoap-server.c b/samples/net/zoap_server/src/zoap-server.c
index 1c7d1a783..51862fe12 100644
--- a/samples/net/zoap_server/src/zoap-server.c
+++ b/samples/net/zoap_server/src/zoap-server.c
@@ -64,12 +64,12 @@ static int test_del(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -123,12 +123,12 @@ static int test_put(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -188,12 +188,12 @@ static int test_post(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -257,12 +257,12 @@ static int location_query_post(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -317,12 +317,12 @@ static int piggyback_get(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -419,12 +419,12 @@ static int query_get(struct zoap_resource *resource,
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -494,12 +494,12 @@ static int separate_get(struct zoap_resource *resource,
goto done;
}
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -525,12 +525,12 @@ static int separate_get(struct zoap_resource *resource,
}
done:
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -614,12 +614,12 @@ static int large_get(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
@@ -712,12 +712,12 @@ static int large_update_put(struct zoap_resource *resource,
NET_INFO("type: %u code %u id %u\n", type, code, id);
NET_INFO("*******\n");
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
return -ENOMEM;
}
diff --git a/samples/net/zperf/src/zperf_tcp_uploader.c b/samples/net/zperf/src/zperf_tcp_uploader.c
index 7d1735203..c40b96dc8 100644
--- a/samples/net/zperf/src/zperf_tcp_uploader.c
+++ b/samples/net/zperf/src/zperf_tcp_uploader.c
@@ -54,23 +54,24 @@ void zperf_tcp_upload(struct net_context *ctx,
loop_time = k_cycle_get_32();
last_loop_time = loop_time;
- buf = net_nbuf_get_tx(ctx);
+ buf = net_nbuf_get_tx(ctx, K_FOREVER);
if (!buf) {
printk(TAG "ERROR! Failed to retrieve a buffer\n");
- continue;
+ break;
}
- frag = net_nbuf_get_data(ctx);
+ frag = net_nbuf_get_data(ctx, K_FOREVER);
if (!frag) {
+ net_nbuf_unref(buf);
printk(TAG "ERROR! Failed to retrieve a fragment\n");
- continue;
+ break;
}
net_buf_frag_add(buf, frag);
/* Fill in the TCP payload */
st = net_nbuf_append(buf, sizeof(sample_packet),
- sample_packet);
+ sample_packet, K_FOREVER);
if (!st) {
printk(TAG "ERROR! Failed to fill packet\n");
diff --git a/samples/net/zperf/src/zperf_udp_receiver.c b/samples/net/zperf/src/zperf_udp_receiver.c
index 68ff53e90..cf3681e89 100644
--- a/samples/net/zperf/src/zperf_udp_receiver.c
+++ b/samples/net/zperf/src/zperf_udp_receiver.c
@@ -67,8 +67,8 @@ static inline struct net_buf *build_reply_buf(struct net_context *context,
printk(TAG "received %d bytes\n", net_nbuf_appdatalen(buf));
- reply_buf = net_nbuf_get_tx(context);
- frag = net_nbuf_get_data(context);
+ reply_buf = net_nbuf_get_tx(context, K_FOREVER);
+ frag = net_nbuf_get_data(context, K_FOREVER);
net_buf_frag_add(reply_buf, frag);
diff --git a/samples/net/zperf/src/zperf_udp_uploader.c b/samples/net/zperf/src/zperf_udp_uploader.c
index cdff49d60..794dfb373 100644
--- a/samples/net/zperf/src/zperf_udp_uploader.c
+++ b/samples/net/zperf/src/zperf_udp_uploader.c
@@ -86,13 +86,13 @@ static inline void zperf_upload_fin(struct net_context *context,
struct net_buf *buf, *frag;
bool status;
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
printk(TAG "ERROR! Failed to retrieve a buffer\n");
continue;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
printk(TAG "ERROR! Failed to retrieve a fragment\n");
continue;
@@ -107,7 +107,7 @@ static inline void zperf_upload_fin(struct net_context *context,
USEC_PER_SEC);
status = net_nbuf_append(buf, sizeof(datagram),
- (uint8_t *)&datagram);
+ (uint8_t *)&datagram, K_FOREVER);
if (!status) {
printk(TAG "ERROR! Cannot append datagram data\n");
break;
@@ -121,7 +121,8 @@ static inline void zperf_upload_fin(struct net_context *context,
frag = net_nbuf_write(buf, net_buf_frag_last(buf),
sizeof(struct zperf_udp_datagram),
- &pos, size, sample_packet);
+ &pos, size, sample_packet,
+ K_FOREVER);
}
/* Send the packet */
@@ -229,13 +230,13 @@ void zperf_udp_upload(struct net_context *context,
last_loop_time = loop_time;
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
printk(TAG "ERROR! Failed to retrieve a buffer\n");
continue;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
printk(TAG "ERROR! Failed to retrieve a frag\n");
continue;
@@ -250,7 +251,7 @@ void zperf_udp_upload(struct net_context *context,
htonl(HW_CYCLES_TO_USEC(loop_time) % USEC_PER_SEC);
status = net_nbuf_append(buf, sizeof(datagram),
- (uint8_t *)&datagram);
+ (uint8_t *)&datagram, K_FOREVER);
if (!status) {
printk(TAG "ERROR! Cannot append datagram data\n");
break;
@@ -264,7 +265,8 @@ void zperf_udp_upload(struct net_context *context,
frag = net_nbuf_write(buf, net_buf_frag_last(buf),
sizeof(struct zperf_udp_datagram),
- &pos, size, sample_packet);
+ &pos, size, sample_packet,
+ K_FOREVER);
}
/* Send the packet */
diff --git a/subsys/net/ip/6lo.c b/subsys/net/ip/6lo.c
index 6dbf4b9f3..d1d8be695 100644
--- a/subsys/net/ip/6lo.c
+++ b/subsys/net/ip/6lo.c
@@ -712,10 +712,7 @@ static inline bool compress_IPHC_header(struct net_buf *buf,
return false;
}
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
- if (!frag) {
- return false;
- }
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
IPHC[offset++] = NET_6LO_DISPATCH_IPHC;
IPHC[offset++] = 0;
@@ -1287,10 +1284,7 @@ static inline bool uncompress_IPHC_header(struct net_buf *buf)
#endif
}
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
- if (!frag) {
- return false;
- }
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
ipv6 = (struct net_ipv6_hdr *)(frag->data);
@@ -1406,10 +1400,7 @@ static inline bool compress_ipv6_header(struct net_buf *buf,
{
struct net_buf *frag;
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
- if (!frag) {
- return false;
- }
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
frag->data[0] = NET_6LO_DISPATCH_IPV6;
net_buf_add(frag, 1);
diff --git a/subsys/net/ip/dhcpv4.c b/subsys/net/ip/dhcpv4.c
index 64052551c..d8efbf4cc 100644
--- a/subsys/net/ip/dhcpv4.c
+++ b/subsys/net/ip/dhcpv4.c
@@ -132,7 +132,8 @@ static inline void unset_dhcpv4_on_iface(struct net_if *iface)
/* Add magic cookie to DCHPv4 messages */
static inline bool add_cookie(struct net_buf *buf)
{
- return net_nbuf_append(buf, sizeof(magic_cookie), magic_cookie);
+ return net_nbuf_append(buf, sizeof(magic_cookie), magic_cookie,
+ K_FOREVER);
}
/* Add DHCPv4 message type */
@@ -140,7 +141,7 @@ static inline bool add_msg_type(struct net_buf *buf, uint8_t type)
{
uint8_t data[3] = { DHCPV4_OPTIONS_MSG_TYPE, 1, type };
- return net_nbuf_append(buf, sizeof(data), data);
+ return net_nbuf_append(buf, sizeof(data), data, K_FOREVER);
}
/* Add DHCPv4 minimum required options for server to reply.
@@ -154,7 +155,7 @@ static inline bool add_req_options(struct net_buf *buf)
DHCPV4_OPTIONS_ROUTER,
DHCPV4_OPTIONS_DNS_SERVER };
- return net_nbuf_append(buf, sizeof(data), data);
+ return net_nbuf_append(buf, sizeof(data), data, K_FOREVER);
}
static inline bool add_server_id(struct net_buf *buf)
@@ -163,16 +164,17 @@ static inline bool add_server_id(struct net_buf *buf)
uint8_t data;
data = DHCPV4_OPTIONS_SERVER_ID;
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
data = 4;
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
- if (!net_nbuf_append(buf, 4, iface->dhcpv4.server_id.s4_addr)) {
+ if (!net_nbuf_append(buf, 4, iface->dhcpv4.server_id.s4_addr,
+ K_FOREVER)) {
return false;
}
@@ -185,16 +187,17 @@ static inline bool add_req_ipaddr(struct net_buf *buf)
uint8_t data;
data = DHCPV4_OPTIONS_REQ_IPADDR;
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
data = 4;
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
- if (!net_nbuf_append(buf, 4, iface->dhcpv4.requested_ip.s4_addr)) {
+ if (!net_nbuf_append(buf, 4, iface->dhcpv4.requested_ip.s4_addr,
+ K_FOREVER)) {
return false;
}
@@ -206,7 +209,7 @@ static inline bool add_end(struct net_buf *buf)
{
uint8_t data = DHCPV4_OPTIONS_END;
- return net_nbuf_append(buf, 1, &data);
+ return net_nbuf_append(buf, 1, &data, K_FOREVER);
}
/* File is empty ATM */
@@ -216,7 +219,7 @@ static inline bool add_file(struct net_buf *buf)
uint8_t data = 0;
while (len-- > 0) {
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
}
@@ -231,7 +234,7 @@ static inline bool add_sname(struct net_buf *buf)
uint8_t data = 0;
while (len-- > 0) {
- if (!net_nbuf_append(buf, 1, &data)) {
+ if (!net_nbuf_append(buf, 1, &data, K_FOREVER)) {
return false;
}
}
@@ -278,15 +281,10 @@ static struct net_buf *prepare_message(struct net_if *iface, uint8_t type)
struct net_buf *frag;
struct dhcp_msg *msg;
- buf = net_nbuf_get_reserve_tx(0);
- if (!buf) {
- return NULL;
- }
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
- frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, NULL));
- if (!frag) {
- goto fail;
- }
+ frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, NULL),
+ K_FOREVER);
net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag));
net_nbuf_set_iface(buf, iface);
diff --git a/subsys/net/ip/icmpv4.c b/subsys/net/ip/icmpv4.c
index 09a283821..1f58cf2c9 100644
--- a/subsys/net/ip/icmpv4.c
+++ b/subsys/net/ip/icmpv4.c
@@ -106,7 +106,7 @@ int net_icmpv4_send_echo_request(struct net_if *iface,
/* Take the first address of the network interface */
src = &iface->ipv4.unicast[0].address.in_addr;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
/* We cast to IPv6 address but that should be ok in this case
* as IPv4 cannot be used in 802.15.4 where it is the reserve
@@ -115,7 +115,7 @@ int net_icmpv4_send_echo_request(struct net_if *iface,
reserve = net_if_get_ll_reserve(iface,
(const struct in6_addr *)dst);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_family(buf, AF_INET);
@@ -192,7 +192,7 @@ int net_icmpv4_send_error(struct net_buf *orig, uint8_t type, uint8_t code)
iface = net_nbuf_iface(orig);
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
reserve = sizeof(struct net_ipv4_hdr) + sizeof(struct net_icmp_hdr) +
NET_ICMPV4_UNUSED_LEN;
@@ -223,7 +223,7 @@ int net_icmpv4_send_error(struct net_buf *orig, uint8_t type, uint8_t code)
/* We only copy minimal IPv4 + next header from original message.
* This is so that the memory pressure is minimized.
*/
- frag = net_nbuf_copy(orig->frags, extra_len, reserve);
+ frag = net_nbuf_copy(orig->frags, extra_len, reserve, K_FOREVER);
if (!frag) {
goto drop;
}
diff --git a/subsys/net/ip/icmpv6.c b/subsys/net/ip/icmpv6.c
index 58b8874b9..a4a849990 100644
--- a/subsys/net/ip/icmpv6.c
+++ b/subsys/net/ip/icmpv6.c
@@ -78,7 +78,7 @@ static enum net_verdict handle_echo_request(struct net_buf *orig)
iface = net_nbuf_iface(orig);
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
/* We need to remember the original location of source and destination
* addresses as the net_nbuf_copy() will mangle the original buffer.
@@ -96,7 +96,7 @@ static enum net_verdict handle_echo_request(struct net_buf *orig)
payload_len = sys_get_be16(NET_IPV6_BUF(orig)->len) -
sizeof(NET_ICMPH_LEN) - NET_ICMPV6_UNUSED_LEN;
- frag = net_nbuf_copy_all(orig->frags, 0);
+ frag = net_nbuf_copy_all(orig->frags, 0, K_FOREVER);
if (!frag) {
goto drop;
}
@@ -181,7 +181,7 @@ int net_icmpv6_send_error(struct net_buf *orig, uint8_t type, uint8_t code,
iface = net_nbuf_iface(orig);
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
/* We need to remember the original location of source and destination
* addresses as the net_nbuf_copy() will mangle the original buffer.
@@ -215,7 +215,7 @@ int net_icmpv6_send_error(struct net_buf *orig, uint8_t type, uint8_t code,
/* We only copy minimal IPv6 + next header from original message.
* This is so that the memory pressure is minimized.
*/
- frag = net_nbuf_copy(orig->frags, extra_len, reserve);
+ frag = net_nbuf_copy(orig->frags, extra_len, reserve, K_FOREVER);
if (!frag) {
goto drop;
}
@@ -294,7 +294,7 @@ int net_icmpv6_send_echo_request(struct net_if *iface,
src = net_if_ipv6_select_src_addr(iface, dst);
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
reserve = net_if_get_ll_reserve(iface, dst);
diff --git a/subsys/net/ip/ipv4.c b/subsys/net/ip/ipv4.c
index 07710cdc3..5235b9739 100644
--- a/subsys/net/ip/ipv4.c
+++ b/subsys/net/ip/ipv4.c
@@ -30,7 +30,7 @@ struct net_buf *net_ipv4_create_raw(struct net_buf *buf,
{
struct net_buf *header;
- header = net_nbuf_get_reserve_data(reserve);
+ header = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_insert(buf, header);
diff --git a/subsys/net/ip/ipv6.c b/subsys/net/ip/ipv6.c
index d31217b4c..3e12f7bae 100644
--- a/subsys/net/ip/ipv6.c
+++ b/subsys/net/ip/ipv6.c
@@ -292,7 +292,7 @@ struct net_buf *net_ipv6_create_raw(struct net_buf *buf,
{
struct net_buf *header;
- header = net_nbuf_get_reserve_data(reserve);
+ header = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_insert(buf, header);
@@ -520,7 +520,7 @@ static struct net_buf *update_ll_reserve(struct net_buf *buf,
while (orig_frag) {
if (!room_len) {
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -874,11 +874,12 @@ int net_ipv6_send_na(struct net_if *iface, struct in6_addr *src,
struct net_buf *buf, *frag;
uint8_t llao_len;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
- frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, dst));
+ frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, dst),
+ K_FOREVER);
NET_ASSERT_INFO(frag, "Out of DATA buffers");
@@ -1476,11 +1477,12 @@ int net_ipv6_send_ns(struct net_if *iface,
struct net_nbr *nbr;
uint8_t llao_len;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
- frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, dst));
+ frag = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, dst),
+ K_FOREVER);
NET_ASSERT_INFO(frag, "Out of DATA buffers");
@@ -1611,10 +1613,11 @@ int net_ipv6_send_rs(struct net_if *iface)
bool unspec_src;
uint8_t llao_len = 0;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
frag = net_nbuf_get_reserve_data(
- net_if_get_ll_reserve(iface, &NET_IPV6_BUF(buf)->dst));
+ net_if_get_ll_reserve(iface, &NET_IPV6_BUF(buf)->dst),
+ K_FOREVER);
net_buf_frag_add(buf, frag);
diff --git a/subsys/net/ip/l2/arp.c b/subsys/net/ip/l2/arp.c
index e5ab786c6..d7e40403a 100644
--- a/subsys/net/ip/l2/arp.c
+++ b/subsys/net/ip/l2/arp.c
@@ -107,12 +107,13 @@ static inline struct net_buf *prepare_arp(struct net_if *iface,
struct net_eth_hdr *eth;
struct in_addr *my_addr;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
goto fail;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
goto fail;
}
@@ -202,7 +203,8 @@ struct net_buf *net_arp_prepare(struct net_buf *buf)
net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr));
- header = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ header = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
hdr = (struct net_eth_hdr *)net_nbuf_ll(header);
hdr->type = htons(NET_ETH_PTYPE_IP);
@@ -371,12 +373,13 @@ static inline struct net_buf *prepare_arp_reply(struct net_if *iface,
struct net_arp_hdr *hdr, *query;
struct net_eth_hdr *eth, *eth_query;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
goto fail;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
goto fail;
}
diff --git a/subsys/net/ip/l2/bluetooth.c b/subsys/net/ip/l2/bluetooth.c
index b3b59737b..de55c618a 100644
--- a/subsys/net/ip/l2/bluetooth.c
+++ b/subsys/net/ip/l2/bluetooth.c
@@ -191,7 +191,7 @@ static void ipsp_recv(struct bt_l2cap_chan *chan, struct net_buf *buf)
net_buf_frags_len(buf));
/* Get buffer for bearer / protocol related data */
- nbuf = net_nbuf_get_reserve_rx(0);
+ nbuf = net_nbuf_get_reserve_rx(0, K_FOREVER);
/* Set destination address */
net_nbuf_ll_dst(nbuf)->addr = ctxt->src.val;
@@ -216,7 +216,7 @@ static struct net_buf *ipsp_alloc_buf(struct bt_l2cap_chan *chan)
{
NET_DBG("Channel %p requires buffer", chan);
- return net_nbuf_get_reserve_data(0);
+ return net_nbuf_get_reserve_data(0, K_FOREVER);
}
static struct bt_l2cap_chan_ops ipsp_ops = {
diff --git a/subsys/net/ip/l2/ieee802154/ieee802154.c b/subsys/net/ip/l2/ieee802154/ieee802154.c
index 1c6a19f5c..c1e9e2d83 100644
--- a/subsys/net/ip/l2/ieee802154/ieee802154.c
+++ b/subsys/net/ip/l2/ieee802154/ieee802154.c
@@ -92,12 +92,12 @@ static inline void ieee802154_acknowledge(struct net_if *iface,
return;
}
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return;
}
- frag = net_nbuf_get_reserve_data(IEEE802154_ACK_PKT_LENGTH);
+ frag = net_nbuf_get_reserve_data(IEEE802154_ACK_PKT_LENGTH, K_FOREVER);
net_buf_frag_insert(buf, frag);
net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag));
diff --git a/subsys/net/ip/l2/ieee802154/ieee802154_fragment.c b/subsys/net/ip/l2/ieee802154/ieee802154_fragment.c
index 5dc700258..62bb1f368 100644
--- a/subsys/net/ip/l2/ieee802154/ieee802154_fragment.c
+++ b/subsys/net/ip/l2/ieee802154/ieee802154_fragment.c
@@ -212,7 +212,7 @@ bool ieee802154_fragment(struct net_buf *buf, int hdr_diff)
/* Datagram_size: total length before compression */
size = net_buf_frags_len(buf) + hdr_diff;
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
if (!frag) {
return false;
}
@@ -397,7 +397,7 @@ static inline bool copy_frag(struct net_buf *buf,
while (input) {
write = net_nbuf_write(buf, write, pos, &pos, input->len,
- input->data);
+ input->data, K_FOREVER);
if (!write && pos == 0xffff) {
return false;
}
diff --git a/subsys/net/ip/l2/ieee802154/ieee802154_frame.c b/subsys/net/ip/l2/ieee802154/ieee802154_frame.c
index 5ac42f2a1..a32e39913 100644
--- a/subsys/net/ip/l2/ieee802154/ieee802154_frame.c
+++ b/subsys/net/ip/l2/ieee802154/ieee802154_frame.c
@@ -635,12 +635,12 @@ ieee802154_create_mac_cmd_frame(struct net_if *iface,
struct net_buf *buf, *frag;
uint8_t *p_buf;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return NULL;
}
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
if (!frag) {
goto error;
}
diff --git a/subsys/net/ip/nbuf.c b/subsys/net/ip/nbuf.c
index db7d33724..4bc7c8f35 100644
--- a/subsys/net/ip/nbuf.c
+++ b/subsys/net/ip/nbuf.c
@@ -311,11 +311,13 @@ void net_nbuf_print_frags(struct net_buf *buf)
static struct net_buf *net_nbuf_get_reserve_debug(struct net_buf_pool *pool,
uint16_t reserve_head,
+ int32_t timeout,
const char *caller,
int line)
#else /* CONFIG_NET_DEBUG_NET_BUF */
static struct net_buf *net_nbuf_get_reserve(struct net_buf_pool *pool,
- uint16_t reserve_head)
+ uint16_t reserve_head,
+ int32_t timeout)
#endif /* CONFIG_NET_DEBUG_NET_BUF */
{
struct net_buf *buf = NULL;
@@ -327,11 +329,12 @@ static struct net_buf *net_nbuf_get_reserve(struct net_buf_pool *pool,
if (k_is_in_isr()) {
buf = net_buf_alloc(pool, K_NO_WAIT);
- if (!buf) {
- return NULL;
- }
} else {
- buf = net_buf_alloc(pool, K_FOREVER);
+ buf = net_buf_alloc(pool, timeout);
+ }
+
+ if (!buf) {
+ return NULL;
}
if (pool == &data_buffers) {
@@ -356,41 +359,47 @@ static struct net_buf *net_nbuf_get_reserve(struct net_buf_pool *pool,
#if defined(CONFIG_NET_DEBUG_NET_BUF)
struct net_buf *net_nbuf_get_reserve_rx_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line)
{
- return net_nbuf_get_reserve_debug(&rx_buffers, reserve_head,
+ return net_nbuf_get_reserve_debug(&rx_buffers, reserve_head, timeout,
caller, line);
}
struct net_buf *net_nbuf_get_reserve_tx_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line)
{
- return net_nbuf_get_reserve_debug(&tx_buffers, reserve_head,
+ return net_nbuf_get_reserve_debug(&tx_buffers, reserve_head, timeout,
caller, line);
}
struct net_buf *net_nbuf_get_reserve_data_debug(uint16_t reserve_head,
+ int32_t timeout,
const char *caller, int line)
{
return net_nbuf_get_reserve_debug(&data_buffers, reserve_head,
- caller, line);
+ timeout, caller, line);
}
#else /* CONFIG_NET_DEBUG_NET_BUF */
-struct net_buf *net_nbuf_get_reserve_rx(uint16_t reserve_head)
+struct net_buf *net_nbuf_get_reserve_rx(uint16_t reserve_head,
+ int32_t timeout)
{
- return net_nbuf_get_reserve(&rx_buffers, reserve_head);
+ return net_nbuf_get_reserve(&rx_buffers, reserve_head, timeout);
}
-struct net_buf *net_nbuf_get_reserve_tx(uint16_t reserve_head)
+struct net_buf *net_nbuf_get_reserve_tx(uint16_t reserve_head,
+ int32_t timeout)
{
- return net_nbuf_get_reserve(&tx_buffers, reserve_head);
+ return net_nbuf_get_reserve(&tx_buffers, reserve_head, timeout);
}
-struct net_buf *net_nbuf_get_reserve_data(uint16_t reserve_head)
+struct net_buf *net_nbuf_get_reserve_data(uint16_t reserve_head,
+ int32_t timeout)
{
- return net_nbuf_get_reserve(&data_buffers, reserve_head);
+ return net_nbuf_get_reserve(&data_buffers, reserve_head, timeout);
}
#endif /* CONFIG_NET_DEBUG_NET_BUF */
@@ -399,10 +408,12 @@ struct net_buf *net_nbuf_get_reserve_data(uint16_t reserve_head)
#if defined(CONFIG_NET_DEBUG_NET_BUF)
static struct net_buf *net_nbuf_get_debug(struct net_buf_pool *pool,
struct net_context *context,
+ int32_t timeout,
const char *caller, int line)
#else
static struct net_buf *net_nbuf_get(struct net_buf_pool *pool,
- struct net_context *context)
+ struct net_context *context,
+ int32_t timeout)
#endif /* CONFIG_NET_DEBUG_NET_BUF */
{
struct in6_addr *addr6 = NULL;
@@ -425,9 +436,9 @@ static struct net_buf *net_nbuf_get(struct net_buf_pool *pool,
reserve = net_if_get_ll_reserve(iface, addr6);
#if defined(CONFIG_NET_DEBUG_NET_BUF)
- buf = net_nbuf_get_reserve_debug(pool, reserve, caller, line);
+ buf = net_nbuf_get_reserve_debug(pool, reserve, timeout, caller, line);
#else
- buf = net_nbuf_get_reserve(pool, reserve);
+ buf = net_nbuf_get_reserve(pool, reserve, timeout);
#endif
if (!buf) {
return buf;
@@ -449,44 +460,48 @@ static struct net_buf *net_nbuf_get(struct net_buf_pool *pool,
#if defined(CONFIG_NET_DEBUG_NET_BUF)
struct net_buf *net_nbuf_get_rx_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line)
{
- return net_nbuf_get_debug(&rx_buffers, context, caller, line);
+ return net_nbuf_get_debug(&rx_buffers, context, timeout, caller, line);
}
struct net_buf *net_nbuf_get_tx_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line)
{
- return net_nbuf_get_debug(&tx_buffers, context, caller, line);
+ return net_nbuf_get_debug(&tx_buffers, context, timeout, caller, line);
}
struct net_buf *net_nbuf_get_data_debug(struct net_context *context,
+ int32_t timeout,
const char *caller, int line)
{
- return net_nbuf_get_debug(&data_buffers, context, caller, line);
+ return net_nbuf_get_debug(&data_buffers, context, timeout,
+ caller, line);
}
#else /* CONFIG_NET_DEBUG_NET_BUF */
-struct net_buf *net_nbuf_get_rx(struct net_context *context)
+struct net_buf *net_nbuf_get_rx(struct net_context *context, int32_t timeout)
{
NET_ASSERT_INFO(context, "RX context not set");
- return net_nbuf_get(&rx_buffers, context);
+ return net_nbuf_get(&rx_buffers, context, timeout);
}
-struct net_buf *net_nbuf_get_tx(struct net_context *context)
+struct net_buf *net_nbuf_get_tx(struct net_context *context, int32_t timeout)
{
NET_ASSERT_INFO(context, "TX context not set");
- return net_nbuf_get(&tx_buffers, context);
+ return net_nbuf_get(&tx_buffers, context, timeout);
}
-struct net_buf *net_nbuf_get_data(struct net_context *context)
+struct net_buf *net_nbuf_get_data(struct net_context *context, int32_t timeout)
{
NET_ASSERT_INFO(context, "Data context not set");
- return net_nbuf_get(&data_buffers, context);
+ return net_nbuf_get(&data_buffers, context, timeout);
}
#endif /* CONFIG_NET_DEBUG_NET_BUF */
@@ -564,7 +579,7 @@ struct net_buf *net_nbuf_ref(struct net_buf *buf)
}
struct net_buf *net_nbuf_copy(struct net_buf *orig, size_t amount,
- size_t reserve)
+ size_t reserve, int32_t timeout)
{
uint16_t ll_reserve = net_buf_headroom(orig);
struct net_buf *frag, *first;
@@ -574,7 +589,10 @@ struct net_buf *net_nbuf_copy(struct net_buf *orig, size_t amount,
return NULL;
}
- frag = net_nbuf_get_reserve_data(ll_reserve);
+ frag = net_nbuf_get_reserve_data(ll_reserve, timeout);
+ if (!frag) {
+ return NULL;
+ }
if (reserve > net_buf_tailroom(frag)) {
NET_ERR("Reserve %zu is too long, max is %zu",
@@ -622,7 +640,12 @@ struct net_buf *net_nbuf_copy(struct net_buf *orig, size_t amount,
* We must allocate a new one.
*/
struct net_buf *new_frag =
- net_nbuf_get_reserve_data(ll_reserve);
+ net_nbuf_get_reserve_data(ll_reserve,
+ timeout);
+ if (!new_frag) {
+ net_nbuf_unref(first);
+ return NULL;
+ }
net_buf_frag_add(frag, new_frag);
@@ -803,7 +826,8 @@ struct net_buf *net_nbuf_compact(struct net_buf *buf)
struct net_buf *net_nbuf_push(struct net_buf *parent,
struct net_buf *buf,
- size_t amount)
+ size_t amount,
+ int32_t timeout)
{
struct net_buf *frag;
@@ -816,7 +840,10 @@ struct net_buf *net_nbuf_push(struct net_buf *parent,
return NULL;
}
- frag = net_nbuf_get_reserve_data(net_buf_headroom(buf));
+ frag = net_nbuf_get_reserve_data(net_buf_headroom(buf), timeout);
+ if (!frag) {
+ return NULL;
+ }
net_buf_add(frag, amount);
@@ -898,7 +925,7 @@ struct net_buf *net_nbuf_pull(struct net_buf *buf, size_t amount)
* the buffer. It assumes that the buffer has at least one fragment.
*/
static inline bool net_nbuf_append_bytes(struct net_buf *buf, uint8_t *value,
- uint16_t len)
+ uint16_t len, int32_t timeout)
{
struct net_buf *frag = net_buf_frag_last(buf);
uint16_t ll_reserve = net_nbuf_ll_reserve(buf);
@@ -915,7 +942,7 @@ static inline bool net_nbuf_append_bytes(struct net_buf *buf, uint8_t *value,
return true;
}
- frag = net_nbuf_get_reserve_data(ll_reserve);
+ frag = net_nbuf_get_reserve_data(ll_reserve, timeout);
if (!frag) {
return false;
}
@@ -926,7 +953,8 @@ static inline bool net_nbuf_append_bytes(struct net_buf *buf, uint8_t *value,
return false;
}
-bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data)
+bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data,
+ int32_t timeout)
{
struct net_buf *frag;
@@ -944,7 +972,8 @@ bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data)
}
if (!buf->frags) {
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf),
+ timeout);
if (!frag) {
return false;
}
@@ -952,7 +981,7 @@ bool net_nbuf_append(struct net_buf *buf, uint16_t len, uint8_t *data)
net_buf_frag_add(buf, frag);
}
- return net_nbuf_append_bytes(buf, data, len);
+ return net_nbuf_append_bytes(buf, data, len, timeout);
}
/* Helper routine to retrieve single byte from fragment and move
@@ -1069,7 +1098,8 @@ struct net_buf *net_nbuf_read_be32(struct net_buf *buf, uint16_t offset,
}
static inline struct net_buf *check_and_create_data(struct net_buf *buf,
- struct net_buf *data)
+ struct net_buf *data,
+ int32_t timeout)
{
struct net_buf *frag;
@@ -1077,7 +1107,8 @@ static inline struct net_buf *check_and_create_data(struct net_buf *buf,
return data;
}
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf),
+ timeout);
if (!frag) {
return NULL;
}
@@ -1090,12 +1121,13 @@ static inline struct net_buf *check_and_create_data(struct net_buf *buf,
static inline struct net_buf *adjust_write_offset(struct net_buf *buf,
struct net_buf *frag,
uint16_t offset,
- uint16_t *pos)
+ uint16_t *pos,
+ int32_t timeout)
{
uint16_t tailroom;
do {
- frag = check_and_create_data(buf, frag);
+ frag = check_and_create_data(buf, frag, timeout);
if (!frag) {
return NULL;
}
@@ -1122,7 +1154,8 @@ static inline struct net_buf *adjust_write_offset(struct net_buf *buf,
*pos = 0;
- return check_and_create_data(buf, frag->frags);
+ return check_and_create_data(buf, frag->frags,
+ timeout);
}
/* If the offset is more than current fragment length, remove
@@ -1150,7 +1183,9 @@ static inline struct net_buf *adjust_write_offset(struct net_buf *buf,
*pos = 0;
- return check_and_create_data(buf, frag->frags);
+ return check_and_create_data(buf,
+ frag->frags,
+ timeout);
}
if (offset > tailroom) {
@@ -1158,7 +1193,9 @@ static inline struct net_buf *adjust_write_offset(struct net_buf *buf,
net_buf_add(frag, tailroom);
offset -= tailroom;
- frag = check_and_create_data(buf, frag->frags);
+ frag = check_and_create_data(buf,
+ frag->frags,
+ timeout);
}
}
@@ -1169,7 +1206,8 @@ static inline struct net_buf *adjust_write_offset(struct net_buf *buf,
struct net_buf *net_nbuf_write(struct net_buf *buf, struct net_buf *frag,
uint16_t offset, uint16_t *pos,
- uint16_t len, uint8_t *data)
+ uint16_t len, uint8_t *data,
+ int32_t timeout)
{
uint16_t ll_reserve;
@@ -1180,7 +1218,7 @@ struct net_buf *net_nbuf_write(struct net_buf *buf, struct net_buf *frag,
ll_reserve = net_nbuf_ll_reserve(buf);
- frag = adjust_write_offset(buf, frag, offset, &offset);
+ frag = adjust_write_offset(buf, frag, offset, &offset, timeout);
if (!frag) {
NET_DBG("Failed to adjust offset");
goto error;
@@ -1213,7 +1251,7 @@ struct net_buf *net_nbuf_write(struct net_buf *buf, struct net_buf *frag,
frag = frag->frags;
if (!frag) {
- frag = net_nbuf_get_reserve_data(ll_reserve);
+ frag = net_nbuf_get_reserve_data(ll_reserve, timeout);
if (!frag) {
goto error;
}
@@ -1230,7 +1268,8 @@ error:
static inline bool insert_data(struct net_buf *buf, struct net_buf *frag,
struct net_buf *temp, uint16_t offset,
- uint16_t len, uint8_t *data)
+ uint16_t len, uint8_t *data,
+ int32_t timeout)
{
struct net_buf *insert;
@@ -1262,7 +1301,8 @@ static inline bool insert_data(struct net_buf *buf, struct net_buf *frag,
data += count;
offset = 0;
- insert = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ insert = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf),
+ timeout);
if (!insert) {
return false;
}
@@ -1314,7 +1354,8 @@ static inline struct net_buf *adjust_insert_offset(struct net_buf *buf,
}
bool net_nbuf_insert(struct net_buf *buf, struct net_buf *frag,
- uint16_t offset, uint16_t len, uint8_t *data)
+ uint16_t offset, uint16_t len, uint8_t *data,
+ int32_t timeout)
{
struct net_buf *temp = NULL;
uint16_t bytes;
@@ -1333,7 +1374,8 @@ bool net_nbuf_insert(struct net_buf *buf, struct net_buf *frag,
*/
bytes = frag->len - offset;
if (bytes) {
- temp = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ temp = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf),
+ timeout);
if (!temp) {
return false;
}
@@ -1344,7 +1386,7 @@ bool net_nbuf_insert(struct net_buf *buf, struct net_buf *frag,
}
/* Insert data into current(frag) fragment from "offset". */
- return insert_data(buf, frag, temp, offset, len, data);
+ return insert_data(buf, frag, temp, offset, len, data, timeout);
}
void net_nbuf_get_info(size_t *tx_size, size_t *rx_size, size_t *data_size,
diff --git a/subsys/net/ip/rpl.c b/subsys/net/ip/rpl.c
index dcf2ad1f0..a7c7c4dc1 100644
--- a/subsys/net/ip/rpl.c
+++ b/subsys/net/ip/rpl.c
@@ -445,7 +445,7 @@ int net_rpl_dio_send(struct net_if *iface,
uint16_t value;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
@@ -482,7 +482,8 @@ int net_rpl_dio_send(struct net_if *iface,
/* Flags and reserved are set to 0 */
net_nbuf_append_be16(buf, 0);
- net_nbuf_append(buf, sizeof(struct in6_addr), dag->dag_id.s6_addr);
+ net_nbuf_append(buf, sizeof(struct in6_addr), dag->dag_id.s6_addr,
+ K_FOREVER);
if (instance->mc.type != NET_RPL_MC_NONE) {
net_rpl_of_update_mc(instance);
@@ -542,7 +543,8 @@ int net_rpl_dio_send(struct net_if *iface,
net_nbuf_append_be32(buf, 0); /* reserved */
net_nbuf_append(buf, sizeof(struct in6_addr),
- dag->prefix_info.prefix.s6_addr);
+ dag->prefix_info.prefix.s6_addr,
+ K_FOREVER);
NET_DBG("Sending prefix info in DIO for %s",
net_sprint_ipv6_addr(&dag->prefix_info.prefix));
@@ -719,7 +721,7 @@ int net_rpl_dis_send(struct in6_addr *dst, struct net_if *iface)
return 0;
}
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
@@ -2964,7 +2966,7 @@ int net_rpl_dao_send(struct net_if *iface,
return -EINVAL;
}
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
@@ -2993,7 +2995,8 @@ int net_rpl_dao_send(struct net_if *iface,
net_nbuf_append_u8(buf, rpl_dao_sequence);
#if defined(CONFIG_NET_RPL_DAO_SPECIFY_DAG)
- net_nbuf_append(buf, sizeof(dag->dag_id), dag->dag_id.s6_addr);
+ net_nbuf_append(buf, sizeof(dag->dag_id), dag->dag_id.s6_addr,
+ K_FOREVER);
#endif
prefixlen = sizeof(*prefix) * CHAR_BIT;
@@ -3003,7 +3006,7 @@ int net_rpl_dao_send(struct net_if *iface,
net_nbuf_append_u8(buf, 2 + prefix_bytes);
net_nbuf_append_u8(buf, 0); /* reserved */
net_nbuf_append_u8(buf, prefixlen);
- net_nbuf_append(buf, prefix_bytes, prefix->s6_addr);
+ net_nbuf_append(buf, prefix_bytes, prefix->s6_addr, K_FOREVER);
net_nbuf_append_u8(buf, NET_RPL_OPTION_TRANSIT);
net_nbuf_append_u8(buf, 4); /* length */
@@ -3051,7 +3054,7 @@ static inline int dao_forward(struct net_if *iface,
struct net_buf *buf;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
@@ -3089,7 +3092,7 @@ static int dao_ack_send(struct net_buf *orig,
NET_DBG("Sending a DAO ACK with sequence number %d to %s",
sequence, net_sprint_ipv6_addr(dst));
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
diff --git a/subsys/net/ip/tcp.c b/subsys/net/ip/tcp.c
index 2909e89f5..4e401a7fe 100644
--- a/subsys/net/ip/tcp.c
+++ b/subsys/net/ip/tcp.c
@@ -245,7 +245,7 @@ static struct net_buf *prepare_segment(struct net_tcp *tcp,
tail = buf->frags;
buf->frags = NULL;
} else {
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
}
#if defined(CONFIG_NET_IPV4)
@@ -274,7 +274,7 @@ static struct net_buf *prepare_segment(struct net_tcp *tcp,
goto proto_err;
}
- header = net_nbuf_get_data(context);
+ header = net_nbuf_get_data(context, K_FOREVER);
net_buf_frag_add(buf, header);
tcphdr = (struct net_tcp_hdr *)net_buf_add(header, NET_TCPH_LEN);
diff --git a/subsys/net/lib/dns/dns_client.c b/subsys/net/lib/dns/dns_client.c
index 85430297b..1254e8a59 100644
--- a/subsys/net/lib/dns/dns_client.c
+++ b/subsys/net/lib/dns/dns_client.c
@@ -162,13 +162,13 @@ int dns_write(struct dns_context *ctx, struct net_buf *dns_data,
goto exit_write;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, K_FOREVER);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_write;
}
- rc = net_nbuf_append(tx, dns_data->len, dns_data->data);
+ rc = net_nbuf_append(tx, dns_data->len, dns_data->data, K_FOREVER);
if (rc != true) {
rc = -ENOMEM;
goto exit_write;
diff --git a/subsys/net/lib/mqtt/mqtt.c b/subsys/net/lib/mqtt/mqtt.c
index 87bf5cace..9b57c8cf4 100644
--- a/subsys/net/lib/mqtt/mqtt.c
+++ b/subsys/net/lib/mqtt/mqtt.c
@@ -43,7 +43,7 @@ int mqtt_tx_connect(struct mqtt_ctx *ctx, struct mqtt_connect_msg *msg)
goto exit_connect;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_connect;
@@ -81,13 +81,13 @@ int mqtt_tx_disconnect(struct mqtt_ctx *ctx)
goto exit_disconnect;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_disconnect;
}
- rc = net_nbuf_append(tx, len, msg);
+ rc = net_nbuf_append(tx, len, msg, ctx->net_timeout);
if (rc != true) {
rc = -ENOMEM;
goto exit_disconnect;
@@ -154,13 +154,13 @@ int mqtt_tx_pub_msgs(struct mqtt_ctx *ctx, uint16_t id,
return -EINVAL;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_send;
}
- rc = net_nbuf_append(tx, len, msg);
+ rc = net_nbuf_append(tx, len, msg, ctx->net_timeout);
if (rc != true) {
rc = -ENOMEM;
goto exit_send;
@@ -218,7 +218,7 @@ int mqtt_tx_publish(struct mqtt_ctx *ctx, struct mqtt_publish_msg *msg)
goto exit_publish;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_publish;
@@ -255,13 +255,13 @@ int mqtt_tx_pingreq(struct mqtt_ctx *ctx)
goto exit_pingreq;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_pingreq;
}
- rc = net_nbuf_append(tx, len, msg);
+ rc = net_nbuf_append(tx, len, msg, ctx->net_timeout);
if (rc != true) {
rc = -ENOMEM;
goto exit_pingreq;
@@ -302,7 +302,7 @@ int mqtt_tx_subscribe(struct mqtt_ctx *ctx, uint16_t pkt_id, uint8_t items,
goto exit_subs;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_subs;
@@ -346,7 +346,7 @@ int mqtt_tx_unsubscribe(struct mqtt_ctx *ctx, uint16_t pkt_id, uint8_t items,
goto exit_unsub;
}
- tx = net_nbuf_get_tx(ctx->net_ctx);
+ tx = net_nbuf_get_tx(ctx->net_ctx, ctx->net_timeout);
if (tx == NULL) {
rc = -ENOMEM;
goto exit_unsub;
diff --git a/subsys/net/lib/zoap/zoap_link_format.c b/subsys/net/lib/zoap/zoap_link_format.c
index db896111f..c98874be8 100644
--- a/subsys/net/lib/zoap/zoap_link_format.c
+++ b/subsys/net/lib/zoap/zoap_link_format.c
@@ -246,12 +246,12 @@ int _zoap_well_known_core_get(struct zoap_resource *resource,
context = net_nbuf_context(request->buf);
- buf = net_nbuf_get_tx(context);
+ buf = net_nbuf_get_tx(context, K_FOREVER);
if (!buf) {
return -ENOMEM;
}
- frag = net_nbuf_get_data(context);
+ frag = net_nbuf_get_data(context, K_FOREVER);
if (!frag) {
net_nbuf_unref(buf);
return -ENOMEM;
diff --git a/tests/net/6lo/src/main.c b/tests/net/6lo/src/main.c
index b666326a1..0f59a8745 100644
--- a/tests/net/6lo/src/main.c
+++ b/tests/net/6lo/src/main.c
@@ -308,7 +308,7 @@ static struct net_buf *create_buf(struct net_6lo_data *data)
uint16_t len;
int remaining;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return NULL;
}
@@ -322,7 +322,7 @@ static struct net_buf *create_buf(struct net_6lo_data *data)
net_nbuf_ll_dst(buf)->addr = dst_mac;
net_nbuf_ll_dst(buf)->len = 8;
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
if (!frag) {
net_nbuf_unref(buf);
return NULL;
@@ -384,7 +384,7 @@ static struct net_buf *create_buf(struct net_6lo_data *data)
net_buf_frag_add(buf, frag);
if (remaining > 0) {
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
}
}
diff --git a/tests/net/arp/src/main.c b/tests/net/arp/src/main.c
index 8c43d8a7a..084c7c842 100644
--- a/tests/net/arp/src/main.c
+++ b/tests/net/arp/src/main.c
@@ -169,12 +169,12 @@ static inline struct net_buf *prepare_arp_reply(struct net_if *iface,
struct net_arp_hdr *hdr;
struct net_eth_hdr *eth;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
goto fail;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr), K_FOREVER);
if (!frag) {
goto fail;
}
@@ -223,12 +223,13 @@ static inline struct net_buf *prepare_arp_request(struct net_if *iface,
struct net_arp_hdr *hdr, *req_hdr;
struct net_eth_hdr *eth, *eth_req;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!buf) {
goto fail;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
goto fail;
}
@@ -333,13 +334,14 @@ static bool run_tests(void)
ifaddr->addr_state = NET_ADDR_PREFERRED;
/* Application data for testing */
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
printk("Out of mem TX\n");
return false;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
printk("Out of mem DATA\n");
return false;
@@ -559,14 +561,15 @@ static bool run_tests(void)
/* The arp request packet is now verified, create an arp reply.
* The previous value of buf is stored in arp table and is not lost.
*/
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!buf) {
printk("Out of mem RX reply\n");
return false;
}
printk("%d buf %p\n", __LINE__, buf);
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
printk("Out of mem DATA reply\n");
return false;
@@ -615,13 +618,14 @@ static bool run_tests(void)
net_nbuf_unref(buf);
/* Then feed in ARP request */
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!buf) {
printk("Out of mem RX request\n");
return false;
}
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
if (!frag) {
printk("Out of mem DATA request\n");
return false;
diff --git a/tests/net/context/src/main.c b/tests/net/context/src/main.c
index 560e9a287..4b3e1a3f4 100644
--- a/tests/net/context/src/main.c
+++ b/tests/net/context/src/main.c
@@ -499,8 +499,8 @@ static bool net_ctx_send_v6(void)
int ret, len;
struct net_buf *buf, *frag;
- buf = net_nbuf_get_tx(udp_v6_ctx);
- frag = net_nbuf_get_data(udp_v6_ctx);
+ buf = net_nbuf_get_tx(udp_v6_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v6_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -527,8 +527,8 @@ static bool net_ctx_send_v4(void)
int ret, len;
struct net_buf *buf, *frag;
- buf = net_nbuf_get_tx(udp_v4_ctx);
- frag = net_nbuf_get_data(udp_v4_ctx);
+ buf = net_nbuf_get_tx(udp_v4_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v4_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -561,8 +561,8 @@ static bool net_ctx_sendto_v6(void)
0, 0, 0, 0, 0, 0, 0, 0x2 } } },
};
- buf = net_nbuf_get_tx(udp_v6_ctx);
- frag = net_nbuf_get_data(udp_v6_ctx);
+ buf = net_nbuf_get_tx(udp_v6_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v6_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -597,8 +597,8 @@ static bool net_ctx_sendto_v4(void)
.sin_addr = { { { 192, 0, 2, 2 } } },
};
- buf = net_nbuf_get_tx(udp_v4_ctx);
- frag = net_nbuf_get_data(udp_v4_ctx);
+ buf = net_nbuf_get_tx(udp_v4_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v4_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -695,8 +695,8 @@ static bool net_ctx_sendto_v6_wrong_src(void)
0, 0, 0, 0, 0, 0, 0, 0x3 } } },
};
- buf = net_nbuf_get_tx(udp_v6_ctx);
- frag = net_nbuf_get_data(udp_v6_ctx);
+ buf = net_nbuf_get_tx(udp_v6_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v6_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -752,8 +752,8 @@ static bool net_ctx_sendto_v4_wrong_src(void)
.sin_addr = { { { 192, 0, 2, 3 } } },
};
- buf = net_nbuf_get_tx(udp_v4_ctx);
- frag = net_nbuf_get_data(udp_v4_ctx);
+ buf = net_nbuf_get_tx(udp_v4_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_v4_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
diff --git a/tests/net/dhcpv4/src/main.c b/tests/net/dhcpv4/src/main.c
index 84a4733c5..a5b1cb842 100644
--- a/tests/net/dhcpv4/src/main.c
+++ b/tests/net/dhcpv4/src/main.c
@@ -206,7 +206,8 @@ static struct net_buf *nbuf_get_data(struct net_if *iface)
struct net_buf *buf;
struct net_eth_hdr *hdr;
- buf = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, NULL));
+ buf = net_nbuf_get_reserve_data(net_if_get_ll_reserve(iface, NULL),
+ K_FOREVER);
if (!buf) {
return NULL;
}
@@ -265,7 +266,7 @@ struct net_buf *prepare_dhcp_offer(struct net_if *iface, uint32_t xid)
int bytes, remaining = sizeof(offer), pos = 0;
uint16_t offset;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!buf) {
return NULL;
}
@@ -334,7 +335,7 @@ struct net_buf *prepare_dhcp_ack(struct net_if *iface, uint32_t xid)
int bytes, remaining = sizeof(ack), pos = 0;
uint16_t offset;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!buf) {
return NULL;
}
diff --git a/tests/net/ieee802154/fragment/src/main.c b/tests/net/ieee802154/fragment/src/main.c
index 76106e5d1..e9328707c 100644
--- a/tests/net/ieee802154/fragment/src/main.c
+++ b/tests/net/ieee802154/fragment/src/main.c
@@ -221,7 +221,7 @@ static struct net_buf *create_buf(struct net_fragment_data *data)
uint16_t len;
int remaining;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
if (!buf) {
return NULL;
}
@@ -230,7 +230,7 @@ static struct net_buf *create_buf(struct net_fragment_data *data)
net_nbuf_set_iface(buf, net_if_get_default());
net_nbuf_set_ip_hdr_len(buf, NET_IPV6H_LEN);
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
if (!frag) {
net_nbuf_unref(buf);
return NULL;
@@ -271,7 +271,7 @@ static struct net_buf *create_buf(struct net_fragment_data *data)
net_buf_frag_add(buf, frag);
if (remaining > 0) {
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
}
}
@@ -446,14 +446,14 @@ static int test_fragment(struct net_fragment_data *data)
frag = buf->frags;
while (frag) {
- rxbuf = net_nbuf_get_reserve_rx(0);
+ rxbuf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!rxbuf) {
goto end;
}
net_nbuf_set_ll_reserve(rxbuf, 0);
- dfrag = net_nbuf_get_reserve_data(0);
+ dfrag = net_nbuf_get_reserve_data(0, K_FOREVER);
if (!dfrag) {
goto end;
}
diff --git a/tests/net/ieee802154/l2/src/ieee802154_test.c b/tests/net/ieee802154/l2/src/ieee802154_test.c
index 2457c3a8a..8bbdd4859 100644
--- a/tests/net/ieee802154/l2/src/ieee802154_test.c
+++ b/tests/net/ieee802154/l2/src/ieee802154_test.c
@@ -192,8 +192,8 @@ static inline int test_ack_reply(struct ieee802154_pkt_test *t)
TC_PRINT("- Sending ACK reply to a data packet\n");
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_rx(0, K_FOREVER);
memcpy(frag->data, data_pkt, sizeof(data_pkt));
frag->len = sizeof(data_pkt);
@@ -236,7 +236,7 @@ static inline int initialize_test_environment(void)
k_sem_init(&driver_lock, 0, UINT_MAX);
- current_buf = net_nbuf_get_reserve_rx(0);
+ current_buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
if (!current_buf) {
TC_ERROR("*** No buffer to allocate\n");
return TC_FAIL;
diff --git a/tests/net/iface/src/main.c b/tests/net/iface/src/main.c
index 5a175ef9d..684934158 100644
--- a/tests/net/iface/src/main.c
+++ b/tests/net/iface/src/main.c
@@ -283,10 +283,10 @@ static bool send_iface(struct net_if *iface, int val, bool expect_fail)
struct net_buf *buf;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
net_nbuf_set_iface(buf, iface);
- net_nbuf_append(buf, sizeof(data), data);
+ net_nbuf_append(buf, sizeof(data), data, K_FOREVER);
ret = net_send_data(buf);
if (!expect_fail && ret < 0) {
diff --git a/tests/net/ipv6/src/main.c b/tests/net/ipv6/src/main.c
index 5fb277f44..cb0319a57 100644
--- a/tests/net/ipv6/src/main.c
+++ b/tests/net/ipv6/src/main.c
@@ -168,7 +168,7 @@ static struct net_buf *prepare_ra_message(void)
struct net_if *iface;
uint16_t reserve;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of RX buffers");
@@ -176,7 +176,7 @@ static struct net_buf *prepare_ra_message(void)
reserve = net_if_get_ll_reserve(iface, NULL);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -413,7 +413,7 @@ static bool net_test_send_ns_extra_options(void)
struct net_if *iface;
uint16_t reserve;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
@@ -421,7 +421,7 @@ static bool net_test_send_ns_extra_options(void)
reserve = net_if_get_ll_reserve(iface, NULL);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -449,7 +449,7 @@ static bool net_test_send_ns_no_options(void)
struct net_if *iface;
uint16_t reserve;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
@@ -457,7 +457,7 @@ static bool net_test_send_ns_no_options(void)
reserve = net_if_get_ll_reserve(iface, NULL);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -569,7 +569,7 @@ static bool net_test_hbho_message(void)
struct net_if *iface;
uint16_t reserve;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
@@ -577,7 +577,7 @@ static bool net_test_hbho_message(void)
reserve = net_if_get_ll_reserve(iface, NULL);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -614,7 +614,7 @@ static bool net_test_change_ll_addr(void)
net_ipv6_addr_create(&dst, 0xff02, 0, 0, 0, 0, 0, 0, 1);
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
@@ -622,7 +622,7 @@ static bool net_test_change_ll_addr(void)
reserve = net_if_get_ll_reserve(iface, NULL);
- frag = net_nbuf_get_reserve_data(reserve);
+ frag = net_nbuf_get_reserve_data(reserve, K_FOREVER);
net_buf_frag_add(buf, frag);
diff --git a/tests/net/nbuf/src/main.c b/tests/net/nbuf/src/main.c
index afde9aa29..f333834f2 100644
--- a/tests/net/nbuf/src/main.c
+++ b/tests/net/nbuf/src/main.c
@@ -62,8 +62,8 @@ static int test_ipv6_multi_frags(void)
int bytes, remaining = strlen(example_data), pos = 0;
/* Example of multi fragment scenario with IPv6 */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE, K_FOREVER);
/* Place the IP + UDP header in the first fragment */
if (!net_buf_tailroom(frag)) {
@@ -91,7 +91,7 @@ static int test_ipv6_multi_frags(void)
net_buf_frag_add(buf, frag);
/* Put some data to rest of the fragments */
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE, K_FOREVER);
if (net_buf_tailroom(frag) -
(CONFIG_NET_NBUF_DATA_SIZE - LL_RESERVE)) {
printk("Invalid number of bytes available in the buf, "
@@ -130,7 +130,8 @@ static int test_ipv6_multi_frags(void)
net_buf_frag_add(buf, frag);
if (remaining > 0) {
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE,
+ K_FOREVER);
}
}
@@ -184,8 +185,8 @@ static int test_fragment_copy(void)
size_t orig_len;
int pos;
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE, K_FOREVER);
/* Place the IP + UDP header in the first fragment */
if (net_buf_tailroom(frag)) {
@@ -224,13 +225,13 @@ static int test_fragment_copy(void)
/* Then copy a fragment list to a new fragment list */
new_frag = net_nbuf_copy_all(buf->frags, sizeof(struct ipv6_hdr) +
- sizeof(struct icmp_hdr));
+ sizeof(struct icmp_hdr), K_FOREVER);
if (!new_frag) {
printk("Cannot copy fragment list.\n");
return -EINVAL;
}
- new_buf = net_nbuf_get_reserve_tx(0);
+ new_buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
net_buf_frag_add(new_buf, new_frag);
printk("Total new data len %zd\n", net_buf_frags_len(new_buf));
@@ -311,11 +312,11 @@ static int test_fragment_push(void)
uint8_t *ptr;
int i, bytes;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
frag = NULL;
for (i = 0; i < FRAG_COUNT; i++) {
- frags[i] = net_nbuf_get_reserve_data(12);
+ frags[i] = net_nbuf_get_reserve_data(12, K_FOREVER);
if (frag) {
net_buf_frag_add(frag, frags[i]);
@@ -367,7 +368,7 @@ static int test_fragment_push(void)
return -1;
}
- buf = net_nbuf_push(buf, buf->frags, sizeof(empty_data));
+ buf = net_nbuf_push(buf, buf->frags, sizeof(empty_data), K_FOREVER);
if (!buf) {
printk("push test failed, even with fragment pointer\n");
return -1;
@@ -462,11 +463,11 @@ static int test_fragment_pull(void)
struct net_buf *buf, *newbuf, *frags[FRAG_COUNT], *frag;
int i, bytes_before, bytes_after, amount = 10, bytes_before2;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
frag = NULL;
for (i = 0; i < FRAG_COUNT; i++) {
- frags[i] = net_nbuf_get_reserve_data(12);
+ frags[i] = net_nbuf_get_reserve_data(12, K_FOREVER);
if (frag) {
net_buf_frag_add(frag, frags[i]);
@@ -518,13 +519,13 @@ static int test_fragment_pull(void)
net_nbuf_unref(buf);
/* Trying without TX or RX buf as a first element */
- frags[0] = net_nbuf_get_reserve_data(12);
+ frags[0] = net_nbuf_get_reserve_data(12, K_FOREVER);
frag = frags[0];
memcpy(net_buf_add(frags[0], sizeof(test_data)),
test_data, sizeof(test_data));
for (i = 1; i < FRAG_COUNT; i++) {
- frags[i] = net_nbuf_get_reserve_data(12);
+ frags[i] = net_nbuf_get_reserve_data(12, K_FOREVER);
if (frag) {
net_buf_frag_add(frag, frags[i]);
@@ -621,8 +622,8 @@ static int test_nbuf_read_append(void)
uint16_t fail_pos;
/* Example of multi fragment read, append and skip APS's */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE, K_FOREVER);
/* Place the IP + UDP header in the first fragment */
if (!net_buf_tailroom(frag)) {
@@ -650,7 +651,7 @@ static int test_nbuf_read_append(void)
net_buf_frag_add(buf, frag);
/* Put some data to rest of the fragments */
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE, K_FOREVER);
if (net_buf_tailroom(frag) -
(CONFIG_NET_NBUF_DATA_SIZE - LL_RESERVE)) {
printk("Invalid number of bytes available in the buf, "
@@ -689,7 +690,8 @@ static int test_nbuf_read_append(void)
net_buf_frag_add(buf, frag);
if (remaining > 0) {
- frag = net_nbuf_get_reserve_data(LL_RESERVE);
+ frag = net_nbuf_get_reserve_data(LL_RESERVE,
+ K_FOREVER);
}
}
@@ -765,12 +767,14 @@ static int test_nbuf_read_append(void)
tfrag = net_buf_frag_last(buf->frags);
off = tfrag->len;
- if (!net_nbuf_append(buf, sizeof(test_rw_short), test_rw_short)) {
+ if (!net_nbuf_append(buf, sizeof(test_rw_short), test_rw_short,
+ K_FOREVER)) {
printk("net_nbuf_append failed\n");
return -EINVAL;
}
- if (!net_nbuf_append(buf, sizeof(test_rw_short), test_rw_short)) {
+ if (!net_nbuf_append(buf, sizeof(test_rw_short), test_rw_short,
+ K_FOREVER)) {
printk("net_nbuf_append failed\n");
return -EINVAL;
}
@@ -799,12 +803,14 @@ static int test_nbuf_read_append(void)
tfrag = net_buf_frag_last(buf->frags);
off = tfrag->len;
- if (!net_nbuf_append(buf, sizeof(test_rw_long), test_rw_long)) {
+ if (!net_nbuf_append(buf, sizeof(test_rw_long), test_rw_long,
+ K_FOREVER)) {
printk("net_nbuf_append failed\n");
return -EINVAL;
}
- if (!net_nbuf_append(buf, sizeof(test_rw_long), test_rw_long)) {
+ if (!net_nbuf_append(buf, sizeof(test_rw_long), test_rw_long,
+ K_FOREVER)) {
printk("net_nbuf_append failed\n");
return -EINVAL;
}
@@ -812,7 +818,8 @@ static int test_nbuf_read_append(void)
/* Try to pass fragment to net_nbuf_append(), this should fail
* as we always need to pass the first buf into it.
*/
- if (net_nbuf_append(buf->frags, sizeof(test_rw_short), test_rw_short)) {
+ if (net_nbuf_append(buf->frags, sizeof(test_rw_short), test_rw_short,
+ K_FOREVER)) {
printk("net_nbuf_append succeed but should have failed\n");
return -EINVAL;
}
@@ -847,10 +854,10 @@ static int test_nbuf_read_write_insert(void)
uint16_t pos;
/* Example of multi fragment read, append and skip APS's */
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
/* 1) Offset is with in input fragment.
@@ -859,7 +866,7 @@ static int test_nbuf_read_write_insert(void)
* and write data).
*/
frag = net_nbuf_write(buf, frag, NET_IPV6UDPH_LEN, &pos, 10,
- (uint8_t *)sample_data);
+ (uint8_t *)sample_data, K_FOREVER);
if (!frag || pos != 58) {
printk("Usecase 1: Write failed\n");
return -EINVAL;
@@ -882,7 +889,7 @@ static int test_nbuf_read_write_insert(void)
* there shouldn't be any length change).
*/
frag = net_nbuf_write(buf, frag, 0, &pos, NET_IPV6UDPH_LEN,
- (uint8_t *)sample_data);
+ (uint8_t *)sample_data, K_FOREVER);
if (!frag || pos != 48) {
printk("Usecase 2: Write failed\n");
return -EINVAL;
@@ -903,7 +910,7 @@ static int test_nbuf_read_write_insert(void)
/* Unref */
net_nbuf_unref(buf);
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
/* 3) Offset is in next to next fragment.
@@ -911,7 +918,7 @@ static int test_nbuf_read_write_insert(void)
* create empty fragments(space) till offset and write data).
*/
frag = net_nbuf_write(buf, buf->frags, 200, &pos, 10,
- (uint8_t *)sample_data + 10);
+ (uint8_t *)sample_data + 10, K_FOREVER);
if (!frag) {
printk("Usecase 3: Write failed");
}
@@ -934,7 +941,7 @@ static int test_nbuf_read_write_insert(void)
* the existing data.
*/
frag = net_nbuf_write(buf, buf->frags, 190, &pos, 10,
- (uint8_t *)sample_data);
+ (uint8_t *)sample_data, K_FOREVER);
if (!frag) {
printk("Usecase 4: Write failed\n");
return -EINVAL;
@@ -959,16 +966,17 @@ static int test_nbuf_read_write_insert(void)
* API should overwrite on first 10 bytes and create extra 10 bytes
* and write there.
*/
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
/* Create 10 bytes space. */
net_buf_add(frag, 10);
- frag = net_nbuf_write(buf, frag, 0, &pos, 20, (uint8_t *)sample_data);
+ frag = net_nbuf_write(buf, frag, 0, &pos, 20, (uint8_t *)sample_data,
+ K_FOREVER);
if (!frag && pos != 20) {
printk("Usecase 5: Write failed\n");
return -EINVAL;
@@ -996,18 +1004,18 @@ static int test_nbuf_read_write_insert(void)
* bytes and write data. Third fragment 5 bytes overwritten and space
* for 5 bytes created.
*/
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
/* First fragment make it fully occupied. */
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
len = net_buf_tailroom(frag);
net_buf_add(frag, len);
/* 2nd fragment last 10 bytes tailroom, rest occupied */
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
len = net_buf_tailroom(frag);
@@ -1017,12 +1025,12 @@ static int test_nbuf_read_write_insert(void)
read_pos = frag->len - 10;
/* 3rd fragment, only 5 bytes occupied */
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
net_buf_add(frag, 5);
temp_frag = net_nbuf_write(buf, temp_frag, temp_frag->len - 10, &pos,
- 30, (uint8_t *) sample_data);
+ 30, (uint8_t *) sample_data, K_FOREVER);
if (!temp_frag) {
printk("Use case 6: Write failed\n");
return -EINVAL;
@@ -1050,15 +1058,15 @@ static int test_nbuf_read_write_insert(void)
* before first set of app data.
*/
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
/* First fragment make it fully occupied. */
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
frag = net_nbuf_write(buf, frag, NET_IPV6UDPH_LEN, &pos, 10,
- (uint8_t *)sample_data + 10);
+ (uint8_t *)sample_data + 10, K_FOREVER);
if (!frag || pos != 58) {
printk("Usecase 7: Write failed\n");
return -EINVAL;
@@ -1077,7 +1085,7 @@ static int test_nbuf_read_write_insert(void)
}
if (!net_nbuf_insert(buf, frag, NET_IPV6UDPH_LEN, 10,
- (uint8_t *)sample_data)) {
+ (uint8_t *)sample_data, K_FOREVER)) {
printk("Usecase 7: Insert failed\n");
return -EINVAL;
}
@@ -1095,7 +1103,8 @@ static int test_nbuf_read_write_insert(void)
}
/* Insert data outside input fragment length, error case. */
- if (net_nbuf_insert(buf, frag, 70, 10, (uint8_t *)sample_data)) {
+ if (net_nbuf_insert(buf, frag, 70, 10, (uint8_t *)sample_data,
+ K_FOREVER)) {
printk("Usecase 7: False insert failed\n");
return -EINVAL;
}
@@ -1110,15 +1119,15 @@ static int test_nbuf_read_write_insert(void)
* before first set of app data. Insertion data is long which will
* take two fragments.
*/
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
net_nbuf_set_ll_reserve(buf, LL_RESERVE);
/* First fragment make it fully occupied. */
- frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf));
+ frag = net_nbuf_get_reserve_data(net_nbuf_ll_reserve(buf), K_FOREVER);
net_buf_frag_add(buf, frag);
frag = net_nbuf_write(buf, frag, NET_IPV6UDPH_LEN, &pos, 10,
- (uint8_t *)sample_data + 60);
+ (uint8_t *)sample_data + 60, K_FOREVER);
if (!frag || pos != 58) {
printk("Usecase 8: Write failed\n");
return -EINVAL;
@@ -1137,7 +1146,7 @@ static int test_nbuf_read_write_insert(void)
}
if (!net_nbuf_insert(buf, frag, NET_IPV6UDPH_LEN, 60,
- (uint8_t *)sample_data)) {
+ (uint8_t *)sample_data, K_FOREVER)) {
printk("Usecase 8: Insert failed\n");
return -EINVAL;
}
@@ -1177,11 +1186,11 @@ static int test_fragment_compact(void)
struct net_buf *buf, *frags[FRAG_COUNT], *frag;
int i, bytes, total, count;
- buf = net_nbuf_get_reserve_rx(0);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
frag = NULL;
for (i = 0, total = 0; i < FRAG_COUNT; i++) {
- frags[i] = net_nbuf_get_reserve_data(12);
+ frags[i] = net_nbuf_get_reserve_data(12, K_FOREVER);
if (frag) {
net_buf_frag_add(frag, frags[i]);
@@ -1246,7 +1255,7 @@ static int test_fragment_compact(void)
/* Add empty fragment at the end and compact, the last fragment
* should be removed.
*/
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -1271,11 +1280,11 @@ static int test_fragment_compact(void)
/* Add two empty fragments at the end and compact, the last two
* fragment should be removed.
*/
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
@@ -1300,11 +1309,11 @@ static int test_fragment_compact(void)
/* Add empty fragment at the beginning and at the end, and then
* compact, the two fragment should be removed.
*/
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_insert(buf, frag);
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
diff --git a/tests/net/route/src/main.c b/tests/net/route/src/main.c
index aefe2e18e..7995185f5 100644
--- a/tests/net/route/src/main.c
+++ b/tests/net/route/src/main.c
@@ -357,14 +357,14 @@ static bool net_test_send_na(struct net_if *iface,
struct net_buf *buf, *frag;
uint8_t llao_len;
- buf = net_nbuf_get_reserve_tx(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
NET_ASSERT_INFO(buf, "Out of TX buffers");
buf = net_ipv6_create_raw(buf, net_if_get_ll_reserve(iface, dst),
addr, dst, iface, IPPROTO_ICMPV6);
- frag = net_nbuf_get_reserve_data(0);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
NET_ASSERT_INFO(frag, "Out of DATA buffers");
diff --git a/tests/net/rpl/src/main.c b/tests/net/rpl/src/main.c
index 0c9beba21..bd6a78246 100644
--- a/tests/net/rpl/src/main.c
+++ b/tests/net/rpl/src/main.c
@@ -316,8 +316,8 @@ static bool test_dio_dummy_input(void)
struct net_buf *buf, *frag;
int ret;
- buf = net_nbuf_get_tx(udp_ctx);
- frag = net_nbuf_get_data(udp_ctx);
+ buf = net_nbuf_get_tx(udp_ctx, K_FOREVER);
+ frag = net_nbuf_get_data(udp_ctx, K_FOREVER);
net_buf_frag_add(buf, frag);
diff --git a/tests/net/tcp/src/main.c b/tests/net/tcp/src/main.c
index 442e1efb7..554993ddb 100644
--- a/tests/net/tcp/src/main.c
+++ b/tests/net/tcp/src/main.c
@@ -325,8 +325,8 @@ static bool send_ipv6_tcp_msg(struct net_if *iface,
struct net_buf *frag;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
- frag = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_iface(buf, iface);
@@ -373,8 +373,8 @@ static bool send_ipv4_tcp_msg(struct net_if *iface,
struct net_buf *frag;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
- frag = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_iface(buf, iface);
diff --git a/tests/net/udp/src/main.c b/tests/net/udp/src/main.c
index 2884de09a..05ff5e336 100644
--- a/tests/net/udp/src/main.c
+++ b/tests/net/udp/src/main.c
@@ -242,8 +242,8 @@ static bool send_ipv6_udp_msg(struct net_if *iface,
struct net_buf *frag;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
- frag = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_iface(buf, iface);
@@ -290,8 +290,8 @@ static bool send_ipv4_udp_msg(struct net_if *iface,
struct net_buf *frag;
int ret;
- buf = net_nbuf_get_reserve_tx(0);
- frag = net_nbuf_get_reserve_data(0);
+ buf = net_nbuf_get_reserve_tx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(0, K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_iface(buf, iface);
diff --git a/tests/net/utils/src/main.c b/tests/net/utils/src/main.c
index 48172a5ef..30d30daae 100644
--- a/tests/net/utils/src/main.c
+++ b/tests/net/utils/src/main.c
@@ -154,8 +154,8 @@ static bool run_tests(void)
int hdr_len, i, chunk, datalen, total = 0;
/* Packet fits to one fragment */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(10);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(pkt1)), pkt1, sizeof(pkt1));
@@ -184,8 +184,8 @@ static bool run_tests(void)
net_nbuf_unref(buf);
/* Then a case where there will be two fragments */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(10);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(pkt2) / 2), pkt2, sizeof(pkt2) / 2);
@@ -198,7 +198,7 @@ static bool run_tests(void)
frag->data[hdr_len + 2] = 0;
frag->data[hdr_len + 3] = 0;
- frag = net_nbuf_get_reserve_data(10);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(pkt2) - sizeof(pkt2) / 2),
pkt2 + sizeof(pkt2) / 2, sizeof(pkt2) - sizeof(pkt2) / 2);
@@ -212,8 +212,8 @@ static bool run_tests(void)
net_nbuf_unref(buf);
/* Then a case where there will be two fragments but odd data size */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(10);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(pkt3) / 2), pkt3, sizeof(pkt3) / 2);
printk("First fragment will have %zd bytes\n", sizeof(pkt3) / 2);
@@ -227,7 +227,7 @@ static bool run_tests(void)
frag->data[hdr_len + 2] = 0;
frag->data[hdr_len + 3] = 0;
- frag = net_nbuf_get_reserve_data(10);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(pkt3) - sizeof(pkt3) / 2),
pkt3 + sizeof(pkt3) / 2, sizeof(pkt3) - sizeof(pkt3) / 2);
@@ -243,8 +243,8 @@ static bool run_tests(void)
net_nbuf_unref(buf);
/* Then a case where there will be several fragments */
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(10);
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, sizeof(struct net_ipv6_hdr)), pkt3,
sizeof(struct net_ipv6_hdr));
@@ -259,7 +259,7 @@ static bool run_tests(void)
for (i = 0; i < datalen/chunk; i++) {
/* Next fragments will contain the data in odd sizes */
- frag = net_nbuf_get_reserve_data(10);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, chunk),
pkt3 + sizeof(struct net_ipv6_hdr) + i * chunk, chunk);
@@ -278,7 +278,7 @@ static bool run_tests(void)
}
}
if ((datalen - total) > 0) {
- frag = net_nbuf_get_reserve_data(10);
+ frag = net_nbuf_get_reserve_data(10, K_FOREVER);
net_buf_frag_add(buf, frag);
memcpy(net_buf_add(frag, datalen - total),
pkt3 + sizeof(struct net_ipv6_hdr) + i * chunk,
@@ -309,8 +309,9 @@ static bool run_tests(void)
/* Another packet that fits to one fragment.
* This one has ethernet header before IPv4 data.
*/
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr));
@@ -337,8 +338,9 @@ static bool run_tests(void)
/* Another packet that fits to one fragment and which has correct
* checksum. This one has ethernet header before IPv4 data.
*/
- buf = net_nbuf_get_reserve_rx(0);
- frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr));
+ buf = net_nbuf_get_reserve_rx(0, K_FOREVER);
+ frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr),
+ K_FOREVER);
net_buf_frag_add(buf, frag);
net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr));