PelionIoT / sal-nanostack-driver-k64f-eth

Other
1 stars 6 forks source link

After startup without connection, get an error "TX buf descriptors full. Can't queue packet" #13

Closed EricRemmerswaal closed 8 years ago

EricRemmerswaal commented 8 years ago

I have a wired setup using ipv6. When starting the mbed network stack without ethernet connected I get an "[ERR ][ethDrv]: TX buf descriptors full. Can't queue packet" error. After re-connecting the ethernet this error remains. No recovery. After reset the error is gone.

My mbed module versions: | mbed-client 1.12.4 | | mbed-client-c 2.7.3 yottamodules\mbed-client-c | | nanostack-libservice 3.5.3 yottamodules\nanostack-libservice | | mbed-trace 1.2.1 yottamodules\mbed-trace | | mbed-client-mbed-os 3.0.0 yottamodules\mbed-client-mbed-os | | | mbed-drivers 1.5.0 yottamodules\mbed-drivers | | | | cmsis-core 1.2.0 yottamodules\cmsis-core | | | | cmsis-core-freescale 1.1.0 yottamodules\cmsis-core-freescale | | | | cmsis-core-k64f 1.1.0 yottamodules\cmsis-core-k64f | | | | ualloc 1.3.0 yottamodules\ualloc | | | | dlmalloc 1.1.0 yottamodules\dlmalloc | | | | minar 1.3.0 yottamodules\minar | | | | minar-platform 1.1.0 yottamodules\minar-platform | | | | minar-platform-mbed 1.3.0 yottamodules\minar-platform-mbed | | | | core-util 1.8.0 yottamodules\core-util | | | | compiler-polyfill 1.3.0 yottamodules\compiler-polyfill | | | greentea-client 1.1.0 yottamodules\greentea-client | | sockets 1.3.0 yottamodules\sockets | | sal 1.3.1 yottamodules\sal | | sal-stack-lwip 1.4.1 yottamodules\sal-stack-lwip | | | sal-driver-lwip-k64f-eth 1.1.0 yottamodules\sal-driver-lwip-k64f-eth | | sal-iface-eth 1.1.0 yottamodules\sal-iface-eth | mbed-client-mbedtls 3.0.0 yottamodules\mbed-client-mbedtls | mbedtls 2.3.0 yottamodules\mbedtls | mbed-mesh-api 2.3.0 | _ sal-iface-6lowpan 2.1.1 yottamodules\sal-iface-6lowpan | sal-stack-nanostack 4.1.0 yottamodules\sal-stack-nanostack | | sal-stack-nanostack-eventloop 1.1.0 yottamodules\sal-stack-nanostack-eventloop | | mbed-6lowpan-eventloop-adaptor 1.2.4 yottamodules\mbed-6lowpan-eventloop-adaptor | | nanostack-randlib 1.1.0 yottamodules\nanostack-randlib | coap-service 2.2.0 yottamodules\coap-service | sal-nanostack-driver-k64f-eth 1.1.2

ciarmcom commented 8 years ago

ARM Internal Ref: ONME-2707

hasnainvirk commented 8 years ago

@ericremmerswaal

Hi Eric, Is there a particular reason that you are using an older version of of the driver and sal-stack-nanostack ? The stable version of the driver is 2.0.0 which complies with sal-stack-nanostack 5.0.0. Can you please update your setup and try again ?

EricRemmerswaal commented 8 years ago

Hi, I am working on openAIS. I do not see that we limit the version of sal-stack-nanostack to 4.1.0. I do not get version 5.0.0 with the yotta update.

Because of API changes Devaraj (@devran01) set our "sal-nanostack-driver-k64f-eth" version to "^1.0.0". Building with "sal-nanostack-driver-k64f-eth" for the latest version result in errors for now.

EricRemmerswaal commented 8 years ago

Now running on latest modules but problem is still there.

My mbed module versions: | mbed-client 1.12.7 | | mbed-client-c 2.7.5 yottamodules\mbed-client-c | | nanostack-libservice 3.6.0 yottamodules\nanostack-libservice | | mbed-trace 1.2.1 yottamodules\mbed-trace | | mbed-client-mbed-os 3.0.1 yottamodules\mbed-client-mbed-os | | | mbed-drivers 1.5.0 yottamodules\mbed-drivers | | | | cmsis-core 1.2.0 yottamodules\cmsis-core | | | | cmsis-core-freescale 1.1.0 yottamodules\cmsis-core-freescale | | | | cmsis-core-k64f 1.1.0 yottamodules\cmsis-core-k64f | | | | ualloc 1.3.0 yottamodules\ualloc | | | | dlmalloc 1.1.0 yottamodules\dlmalloc | | | | minar 1.3.0 yottamodules\minar | | | | minar-platform 1.1.0 yottamodules\minar-platform | | | | minar-platform-mbed 1.3.0 yottamodules\minar-platform-mbed | | | | core-util 1.8.0 yottamodules\core-util | | | | compiler-polyfill 1.3.0 yottamodules\compiler-polyfill | | | greentea-client 1.1.0 yottamodules\greentea-client | | sockets 1.3.0 yottamodules\sockets | | sal 1.3.1 yottamodules\sal | mbed-client-mbedtls 3.0.1 yottamodules\mbed-client-mbedtls | mbedtls 2.3.1 yottamodules\mbedtls | mbed-mesh-api 3.0.1 | _ sal-iface-6lowpan 2.1.1 yottamodules\sal-iface-6lowpan | sal-nanostack-driver-k64f-eth 2.0.0 | sal-stack-nanostack 5.0.3 | | sal-stack-nanostack-eventloop 1.1.0 yottamodules\sal-stack-nanostack-eventloop | | mbed-6lowpan-eventloop-adaptor 1.2.4 yottamodules\mbed-6lowpan-eventloop-adaptor | | nanostack-randlib 1.1.0 yottamodules\nanostack-randlib | coap-service 4.0.1 yottamodules\coap-service mbed-hal 1.3.0 _ mbed-hal-freescale 1.1.0 yottamodules\mbed-hal-freescale mbed-hal-ksdk-mcu 1.3.0 yottamodules\mbed-hal-ksdk-mcu | uvisor-lib 2.1.2 yottamodules\uvisor-lib mbed-hal-k64f 1.3.0 yottamodules\mbed-hal-k64f mbed-hal-frdm-k64f 1.1.1 yotta_modules\mbed-hal-frdm-k64f

EricRemmerswaal commented 8 years ago

Today updated to sal-stack-nanostack@5.0.4 and sal-nanostack-driver-k64f-eth@2.0.0 Now when running with network cable attached and removed after boot-up, and re-inserted again the network communications recover. However, when booting without network cable attached and reinserted after boot-up the network communications still fails with "[ERR ][ethDrv]: TX buf descriptors full. Can't queue packet" error.

hasnainvirk commented 8 years ago

Hi @ericremmerswaal can you please share your module.json here with me ? And if you can a config.json too ?

EricRemmerswaal commented 8 years ago

My module.json

{
  "name": "openais-mbed-philips",
  "version": "0.1.0",
  "description": "OpenAIS Philips",
  "keywords": [
    "mbed-client"
  ],
  "author": "yogesh.pande@arm.com",
  "license": "Apache-2.0",
  "extraIncludes": [],
  "dependencies": {
    "mbed-client": "*",
    "mbed-mesh-api": "^3.0.0",
    "sal-nanostack-driver-k64f-eth": "^2.0.0",
    "sal-stack-nanostack": "^5.0.0", 
    "openais-mbed-common": "openais-eu-project/openais-mbed-common",
    "openais-mbed-vendor-interface": "*",
    "openais-mbed-vendor-philips":  "*",
    "openais-driver-push-button" :  "*"
  },
  "targetDependencies":{
    "mbed": {
        "mbed-hal": "*"
    },
    "/openais/vendor/philips": {
      "openais-mbed-vendor-philips":  "~0.1.0"
    }
  },
  "bin": "./source/"
}

My config.json

{
  "mbed-os": {
    "net": {
      "stacks": {
         "lwip": false,
         "nanostack": true
      }
    }
  },
  "debug": {},
  "coap_duplication_max_msgs_count": 3,
  "coap_max_blockwise_payload_size": 512,  
  "P2P": {
    "listen_port": 5685,
    },
  "openais": {
    "listen_port": 5683,
    "lwm2m_server_uri"     : "\"coap://aabb::30:5683\""
   },  
}
hasnainvirk commented 8 years ago

It seems I am unable to recreate the issue. I am testing with Ethernet driver version 2.0.0 and Nanostack v 5.0.4. Can you talk to me on skype ?

EricRemmerswaal commented 8 years ago

I am able to recreate the problem by power-up (NOT reset) the frdm-k64 board without network cable attached. After system boot-up the "[ERR ][ethDrv]: TX buf descriptors full. Can't queue packet." is reported. Plug-in network cable, error continues and no network communications happen.

hasnainvirk commented 8 years ago

I think you are not handling backhaul_interface_ready callbacks and stack events in your application. Can we use some other channel to look and fix your code ?

EricRemmerswaal commented 8 years ago

backhaul_interface_ready callbacks and stack events sounds like nanostack implementation. If that is the case, I do not have access to the nanostack sources, only linking the lib.

hasnainvirk commented 8 years ago

No. They are application callbacks. Application needs to handle those.

EricRemmerswaal commented 8 years ago

Fixed the problem after a screen-share session: Was not a driver problem but incorrect initialization in end_node_tasklet@application_event, causing a memory-leak.

Tnx for spotting the problem.