UDP packet pool starvation with NetX_Duo

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Using SDK 3.5.2 and 3.7.0 I'm able to trigger a packet pool starvation by send 2 or more consecutive packets to the same destination ip and port. Example below:

void application_start(void) {

  wiced_init();

  if (wiced_network_up(WICED_STA_INTERFACE, WICED_USE_EXTERNAL_DHCP_SERVER, NULL) != WICED_SUCCESS) {

    printf("Unable to bring up network\n");

    while(1);

  }

  wiced_udp_socket_t s;

if (wiced_udp_create_socket(&s, 12345, WICED_STA_INTERFACE) != WICED_SUCCESS) {

    printf("Unable to create UDP socket\n");

    while(1);

  }

  wiced_ip_address_t address;

  if (wiced_ip_get_ipv4_address(WICED_STA_INTERFACE, &address) != WICED_SUCCESS) {

    printf("Unable to get local IPv4 address\n");

    while(1);

  }

  const char *payload = "hello world!";

  size_t size = strlen(payload);

  // random range, ignoring netmask.

  for (int i = 0; i < 100; i++) {

    char *data;

    uint16_t available_data_length;

    printf("sending packet %d\n", i);

    wiced_packet_t *packet;

    if (wiced_packet_create_udp(&s, size, &packet, (uint8_t **)&data, &available_data_length) != WICED_SUCCESS) {

      printf("UDP tx packet creation failed\n");

      continue;

    }

    memcpy(data, payload, size);

    wiced_packet_set_data_end(packet, (uint8_t *)data + size);

    // send 2 packets back to back to same dst ip, port.

    wiced_ip_address_t dst = {

      .version = WICED_IPV4,

      .ip.v4   = (address.ip.v4 & 0xFFFFFF00) | (((i >> 1) + 1) & 0xFF)

    };

    if (wiced_udp_send(&s, &dst, 34567, packet) != WICED_SUCCESS) {

      printf("UDP packet send failed\n");

      wiced_packet_delete(packet);

    }  

  }

Logs:

Starting WICED v3.5.2

Platform EMW3165 initialised

Started ThreadX v5.6

Initialising NetX_Duo v5.7_sp2

Creating Packet pools

WWD SDIO interface initialised

WLAN MAC Address : D0:BA:E4:00:E8:4A

WLAN Firmware    : wl0: Oct 22 2015 15:05:09 version 5.90.230.15 FWID 01-ffee4f57

Joining : TestAP

Successfully joined : TestAP

Obtaining IPv4 address via DHCP

DHCP CLIENT hostname WICED IP

IPv4 network ready IP: 10.0.0.208

sending packet 0

sending packet 1

sending packet 2

sending packet 3

sending packet 4

sending packet 5

sending packet 6

sending packet 7

sending packet 8

sending packet 9

UDP tx packet creation failed

sending packet 10

UDP tx packet creation failed

sending packet 11

UDP tx packet creation failed

sending packet 12

0 Likes
8 Replies
Anonymous
Not applicable

Any Cypress / WICED team members out here that could help with this ? I'm working on a late stage prototype and this seems to be a roadblock.

Thanks

/cc gangimwf_mmfae

0 Likes

Hi,

Yes, your observation is correct. If there are no buffers available to queue messages to be sent to destination, application has to wait queued message to be sent. Once the previously queued message is sent it will be marked as available for application to use.

As you see on the .../apps/snip/udp_transmit snip application, the udp data is sent out every second to allow queued data to be actually sent.

Seyhan

Anonymous
Not applicable

I think you misunderstood or perhaps I did not make it clear.

1. Sending multiple UDP packets to multiple destination IPs results in a state where the packet pool is never free'd up after transmit - ALL future attempts to send will fail.

2. Sending multiple UDP packets to single destination IP works fine - even WITHOUT the one second delay (I understand your comment re. buffers being full), if it were buffer exhaustion then it should happen in this case too.

0 Likes
Anonymous
Not applicable

seyhan

To further clarify, changing lines 40-43 to the following works fine, with or without a delay.

// send 2 packets back to back to same dst ip, port.

    wiced_ip_address_t dst = {

      .version = WICED_IPV4,

      .ip.v4 = (address.ip.v4 & 0xFFFFFF00) | (i & 0xFF),

    };

This is definitely a bug in WICED or NetX_Duo. I'm not a total novice, I have built successful commercial products using WICED

If you send multiple packet to multiple IP address (in local network as your example).

The UDP packet only could send out to AIR if ARP resolved get response from the destination IP address!

If there are no destination device could response the ARP request, the ARP request used packet buffer will be freed until time out!

That is why the packet send to single destination or broadcast address work fine! But multiple destination IP address !

I don't think that is bug of NetX_Due!

PS. ARP cache also will be clear in 5 or 10 min.

Anonymous
Not applicable

Thanks Jone, that makes sense. But as I have pointed out, sending 100 or even UDP datagrams to unresolved addresses DOES NOT result in the packet pool starvation IF you avoid sending multiple datagrams back to back to same destination IP.

I'll do this one more time, perhaps I'm bad at explaining:

1. Sending multiple datagrams to same destination IP and doing this for more than say 5 or 6 different IPs results in a state where you cannot create any more UDP packets.

2. Sending datagrams to multiple destination IPs  (even if ARP does not resolve) works fine.

If you run my test case, you'll see what I'm talking about. I can consistently reproduce it. We can keep debating on the logical WHYs, but the test case clearly demonstrates that it's a bug since the stack does not recover even after 5 to 10 mins.

0 Likes

I used the post  test example, add 50ms delay between each send ! and modified to show timing and packet buffer pool when failed!

below is log, which could run through all 100 send

=======================================================

Starting WICED v3.7.0

Platform XXXXXX  initialised

Started ThreadX v5.6

Initialising NetX_Duo v5.7_sp2

Creating Packet pools

WWD SDIO interface initialised

WLAN MAC Address : 40:2C:F4:E8:CF:4A

WLAN Firmware    : wl0: Oct 22 2015 15:05:09 version 5.90.230.15 FWID 01-722ff8f

Joining : YOUR_AP_SSID

Successfully joined : YOUR_AP_SSID

Obtaining IPv4 address via DHCP

DHCP CLIENT hostname WICED IP

IPv4 network ready IP: 192.168.1.53

Setting IPv6 link-local address

IPv6 network ready IP: FE80:0000:0000:0000:422C:F4FF:FEE8:CF4A

tick: 7696 sending packet 0

tick: 7698 UDP send to 192.168.1.1

tick: 7751 sending packet 1

tick: 7753 UDP send to 192.168.1.1

tick: 7806 sending packet 2

tick: 7808 UDP send to 192.168.1.2

tick: 7861 sending packet 3

tick: 7863 UDP send to 192.168.1.2

tick: 7916 sending packet 4

tick: 7918 UDP send to 192.168.1.3

tick: 7971 sending packet 5

tick: 7973 UDP send to 192.168.1.3

tick: 8026 sending packet 6

tick: 8028 UDP send to 192.168.1.4

tick: 8081 sending packet 7

tick: 8083 UDP send to 192.168.1.4

tick: 8136 sending packet 8

tick: 8138 UDP send to 192.168.1.5

tick: 8191 sending packet 9

tick: 10193 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 12254 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 14315 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 16376 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 18437 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 20498 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 22559 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 24620 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26540 UDP send to 192.168.1.5

tick: 26593 sending packet 10

tick: 26595 UDP send to 192.168.1.6

tick: 26599 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26659 sending packet 11

tick: 26661 UDP send to 192.168.1.6

tick: 26665 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26725 sending packet 12

tick: 26727 UDP send to 192.168.1.7

tick: 26731 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26791 sending packet 13

tick: 26793 UDP send to 192.168.1.7

tick: 26797 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26857 sending packet 14

tick: 26859 UDP send to 192.168.1.8

tick: 26863 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26923 sending packet 15

tick: 26925 UDP send to 192.168.1.8

tick: 26929 UDP packet send failed r=9

TX pool: t:7 f:6:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 26989 sending packet 16

tick: 26992 UDP send to 192.168.1.9

tick: 27045 sending packet 17

tick: 27047 UDP send to 192.168.1.9

tick: 27101 sending packet 18

tick: 27103 UDP send to 192.168.1.10

tick: 27157 sending packet 19

tick: 27159 UDP send to 192.168.1.10

tick: 27213 sending packet 20

tick: 27215 UDP send to 192.168.1.11

tick: 27269 sending packet 21

tick: 27271 UDP send to 192.168.1.11

tick: 27325 sending packet 22

tick: 27327 UDP send to 192.168.1.12

tick: 27381 sending packet 23

tick: 27383 UDP send to 192.168.1.12

tick: 27437 sending packet 24

tick: 27439 UDP send to 192.168.1.13

tick: 27493 sending packet 25

tick: 29495 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 31556 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 33617 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 35678 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 37739 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 39800 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 41861 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 43922 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 45540 UDP send to 192.168.1.13

tick: 45593 sending packet 26

tick: 45595 UDP send to 192.168.1.14

tick: 45649 sending packet 27

tick: 45651 UDP send to 192.168.1.14

tick: 45705 sending packet 28

tick: 45707 UDP send to 192.168.1.15

tick: 45761 sending packet 29

tick: 45763 UDP send to 192.168.1.15

tick: 45817 sending packet 30

tick: 46540 UDP send to 192.168.1.16

tick: 46593 sending packet 31

tick: 46595 UDP send to 192.168.1.16

tick: 46649 sending packet 32

tick: 48651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 50712 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 52773 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 54834 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 56895 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 58956 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 61017 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 63078 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 64540 UDP send to 192.168.1.17

tick: 64593 sending packet 33

tick: 64595 UDP send to 192.168.1.17

tick: 64649 sending packet 34

tick: 64651 UDP send to 192.168.1.18

tick: 64705 sending packet 35

tick: 64707 UDP send to 192.168.1.18

tick: 64761 sending packet 36

tick: 65540 UDP send to 192.168.1.19

tick: 65593 sending packet 37

tick: 65595 UDP send to 192.168.1.19

tick: 65649 sending packet 38

tick: 66540 UDP send to 192.168.1.20

tick: 66593 sending packet 39

tick: 68595 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 70656 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 72717 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 74778 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 76839 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 78900 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 80961 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 82540 UDP send to 192.168.1.20

tick: 82593 sending packet 40

tick: 82595 UDP send to 192.168.1.21

tick: 82649 sending packet 41

tick: 84540 UDP send to 192.168.1.21

tick: 84593 sending packet 42

tick: 84595 UDP send to 192.168.1.22

tick: 84649 sending packet 43

tick: 84651 UDP send to 192.168.1.22

tick: 84705 sending packet 44

tick: 84707 UDP send to 192.168.1.23

tick: 84761 sending packet 45

tick: 85540 UDP send to 192.168.1.23

tick: 85593 sending packet 46

tick: 85595 UDP send to 192.168.1.24

tick: 85649 sending packet 47

tick: 87651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 89712 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 91773 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 93834 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 95895 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 97956 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 100017 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 100540 UDP send to 192.168.1.24

tick: 100593 sending packet 48

tick: 100595 UDP send to 192.168.1.25

tick: 100649 sending packet 49

tick: 102651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 103540 UDP send to 192.168.1.25

tick: 103593 sending packet 50

tick: 103595 UDP send to 192.168.1.26

tick: 103649 sending packet 51

tick: 104540 UDP send to 192.168.1.26

tick: 104593 sending packet 52

tick: 104595 UDP send to 192.168.1.27

tick: 104649 sending packet 53

tick: 105540 UDP send to 192.168.1.27

tick: 105593 sending packet 54

tick: 105595 UDP send to 192.168.1.28

tick: 105649 sending packet 55

tick: 107651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 109712 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 111773 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 113834 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 115895 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 117956 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 118540 UDP send to 192.168.1.28

tick: 118593 sending packet 56

tick: 118595 UDP send to 192.168.1.29

tick: 118649 sending packet 57

tick: 120651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 121540 UDP send to 192.168.1.29

tick: 121593 sending packet 58

tick: 121595 UDP send to 192.168.1.30

tick: 121649 sending packet 59

tick: 123540 UDP send to 192.168.1.30

tick: 123593 sending packet 60

tick: 123595 UDP send to 192.168.1.31

tick: 123649 sending packet 61

tick: 124540 UDP send to 192.168.1.31

tick: 124593 sending packet 62

tick: 124595 UDP send to 192.168.1.32

tick: 124649 sending packet 63

tick: 126651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 128712 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 130773 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 132834 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 134895 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 136956 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 137540 UDP send to 192.168.1.32

tick: 137593 sending packet 64

tick: 137595 UDP send to 192.168.1.33

tick: 137649 sending packet 65

tick: 139651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 140540 UDP send to 192.168.1.33

tick: 140593 sending packet 66

tick: 140595 UDP send to 192.168.1.34

tick: 140649 sending packet 67

tick: 142540 UDP send to 192.168.1.34

tick: 142593 sending packet 68

tick: 142595 UDP send to 192.168.1.35

tick: 142649 sending packet 69

tick: 143540 UDP send to 192.168.1.35

tick: 143593 sending packet 70

tick: 143595 UDP send to 192.168.1.36

tick: 143649 sending packet 71

tick: 145651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 147712 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 149773 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 151834 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 153895 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 155956 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 156540 UDP send to 192.168.1.36

tick: 156593 sending packet 72

tick: 156595 UDP send to 192.168.1.37

tick: 156649 sending packet 73

tick: 158651 UDP tx packet creation failed r=2

TX pool: t:7 f:0:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 159540 UDP send to 192.168.1.37

tick: 159593 sending packet 74

tick: 159595 UDP send to 192.168.1.38

tick: 159649 sending packet 75

tick: 159651 UDP send to 192.168.1.38

tick: 159705 sending packet 76

tick: 159707 UDP send to 192.168.1.39

tick: 159761 sending packet 77

tick: 159763 UDP send to 192.168.1.39

tick: 159817 sending packet 78

tick: 159819 UDP send to 192.168.1.40

tick: 159873 sending packet 79

tick: 159875 UDP send to 192.168.1.40

tick: 159929 sending packet 80

tick: 159931 UDP send to 192.168.1.41

tick: 159985 sending packet 81

tick: 159987 UDP send to 192.168.1.41

tick: 160041 sending packet 82

tick: 160043 UDP send to 192.168.1.42

tick: 160097 sending packet 83

tick: 160099 UDP send to 192.168.1.42

tick: 160153 sending packet 84

tick: 160155 UDP send to 192.168.1.43

tick: 160209 sending packet 85

tick: 160211 UDP send to 192.168.1.43

tick: 160265 sending packet 86

tick: 160267 UDP send to 192.168.1.44

tick: 160321 sending packet 87

tick: 160323 UDP send to 192.168.1.44

tick: 160377 sending packet 88

tick: 160379 UDP send to 192.168.1.45

tick: 160433 sending packet 89

tick: 160435 UDP send to 192.168.1.45

tick: 160489 sending packet 90

tick: 160491 UDP send to 192.168.1.46

tick: 160545 sending packet 91

tick: 160548 UDP send to 192.168.1.46

tick: 160551 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160612 sending packet 92

tick: 160614 UDP send to 192.168.1.47

tick: 160618 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160678 sending packet 93

tick: 160680 UDP send to 192.168.1.47

tick: 160684 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160744 sending packet 94

tick: 160746 UDP send to 192.168.1.48

tick: 160750 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160810 sending packet 95

tick: 160812 UDP send to 192.168.1.48

tick: 160816 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160876 sending packet 96

tick: 160878 UDP send to 192.168.1.49

tick: 160882 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 160942 sending packet 97

tick: 160944 UDP send to 192.168.1.49

tick: 160948 UDP packet send failed r=9

TX pool: t:7 f:1:0 req:0 sus:0 inv:0

RX pool: t:7 f:7:7 req:0 sus:0 inv:0

tick: 161008 sending packet 98

tick: 161010 UDP send to 192.168.1.50

tick: 161064 sending packet 99

tick: 161066 UDP send to 192.168.1.50

Anonymous
Not applicable

Thanks a lot for running the test case Jone.

I can see you are getting intermittent successes with the send between the failures whereas I was not able to send a packet after the 8th or 9th transmit even with a 1-2s delay between sends.

The question still stands, why does this work with multiple unicasts to different hosts but has failures with multiple back to back packets to same host ?

I'll test this again with SDK 3.7 to check if I'm getting the same behavior on my side.

I'd be very interested to see if you get any errors without back-to-back transmit (see my message, Re: UDP packet pool starvation with NetX_Duo)

Thanks again!

0 Likes