diff options
author | Zhu Yi <yi.zhu5@cn.bosch.com> | 2018-06-13 16:37:17 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2018-07-27 10:40:16 +0200 |
commit | 038709071328ff68a936c6b8c33a24a805eea3c5 (patch) | |
tree | 2ce62a90ee995c7355f6a6e045d90507fac089d5 /lib/test_overflow.c | |
parent | can: dev: use skb_put_zero to simplfy code (diff) | |
download | linux-dev-038709071328ff68a936c6b8c33a24a805eea3c5.tar.xz linux-dev-038709071328ff68a936c6b8c33a24a805eea3c5.zip |
can: dev: enable multi-queue for SocketCAN devices
The existing SocketCAN implementation provides alloc_candev() to
allocate a CAN device using a single Tx and Rx queue. This can lead to
priority inversion in case the single Tx queue is already full with low
priority messages and a high priority message needs to be sent while the
bus is fully loaded with medium priority messages.
This problem can be solved by using the existing multi-queue support of
the network subsytem. The commit makes it possible to use multi-queue in
the CAN subsystem in the same way it is used in the Ethernet subsystem
by adding an alloc_candev_mqs() call and accompanying macros. With this
support a CAN device can use multi-queue qdisc (e.g. mqprio) to avoid
the aforementioned priority inversion.
The exisiting functionality of alloc_candev() is the same as before.
CAN devices need to have prioritized multiple hardware queues or are
able to abort waiting for arbitration to make sensible use of
multi-queues.
Signed-off-by: Zhu Yi <yi.zhu5@cn.bosch.com>
Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'lib/test_overflow.c')
0 files changed, 0 insertions, 0 deletions