only break out the continuous send if IP stack has no data to send to avoid
tx being constantly interrupted by RX
Signed-off-by: chao.an <anchao@xiaomi.com>
Use high priority queue if the bcmf daemon task has a higher priority
than HPWORK, which will bring better performance especially on devices
that focus on real-time of network.
Signed-off-by: chao.an <anchao@xiaomi.com>
1. Wake up tx if there is data alreay to sent after rx update
2. Try tx queue again after every data frame sent
iperf test:
```
TCP RX 4M->16M
TCP TX 2M->14M
UDP RX 18M->26M
UDP TX 2M->18M
```
Signed-off-by: chao.an <anchao@xiaomi.com>
on bcmf_netdev_notify_tx_done events
that provoked massive TCP spurious retransmissions;
bcm43xxx: fixed an issue with sporadic stalls of TX poll timer.
Several licenses were missed in the initial work
David Sidrane has submitted the ICLA and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
to save the preserved space(1KB) and also avoid the heap overhead
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I694073f68e1bd63960cedeea1ddec441437be025
* Simplify EINTR/ECANCEL error handling
1. Add semaphore uninterruptible wait function
2 .Replace semaphore wait loop with a single uninterruptible wait
3. Replace all sem_xxx to nxsem_xxx
* Unify the void cast usage
1. Remove void cast for function because many place ignore the returned value witout cast
2. Replace void cast for variable with UNUSED macro
Squashed commit of the following:
Author: Gregory Nutt <gnutt@nuttx.org>
Ran nxstyle against many of the affected files. But this job was too big for today. Many of the network drivers under arch are highly non-compiant and generate many, many faults from nxstyle. Those will have to be visited again another day.
Author: Xiang Xiao <xiaoxiang@xiaomi.com>
This effects all network drivers as well as timing related portions of net/: devif_poll_tcp_timer shouldn't be skipped in the multiple card case. devif_timer will be called multiple time in one period if the multiple card exist, the elapsed time calculated for the first callback is right, but the flowing callback in the same period is wrong(very short) because the global variable g_polltimer is used in the calculation. So let's pass the delay time to devif_timer and remove g_polltimer.