Re: [PATCH] Add Multiple TX/RX Queues Support for WWAN Network Device
flat view
From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-12-09 01:53:40
Also in:
lkml
On Wed, 8 Dec 2021 12:04:14 +0800 xiayu.zhang@mediatek.com wrote:
From: Xiayu Zhang <redacted>
This patch adds 2 callback functions get_num_tx_queues() and
get_num_rx_queues() to let WWAN network device driver customize its own
TX and RX queue numbers. It gives WWAN driver a chance to implement its
own software strategies, such as TX Qos.
Currently, if WWAN device driver creates default bearer interface when
calling wwan_register_ops(), there will be only 1 TX queue and 1 RX queue
for the WWAN network device. In this case, driver is not able to enlarge
the queue numbers by calling netif_set_real_num_tx_queues() or
netif_set_real_num_rx_queues() to take advantage of the network device's
capability of supporting multiple TX/RX queues.
As for additional interfaces of secondary bearers, if userspace service
doesn't specify the num_tx_queues or num_rx_queues in netlink message or
iproute2 command, there also will be only 1 TX queue and 1 RX queue for
each additional interface. If userspace service specifies the num_tx_queues
and num_rx_queues, however, these numbers could be not able to match the
capabilities of network device.
Besides, userspace service is hard to learn every WWAN network device's
TX/RX queue numbers.
In order to let WWAN driver determine the queue numbers, this patch adds
below callback functions in wwan_ops:
struct wwan_ops {
unsigned int priv_size;
...
unsigned int (*get_num_tx_queues)(unsigned int hint_num);
unsigned int (*get_num_rx_queues)(unsigned int hint_num);
};
WWAN subsystem uses the input parameters num_tx_queues and num_rx_queues of
wwan_rtnl_alloc() as hint values, and passes the 2 values to the two
callback functions. WWAN device driver should determine the actual numbers
of network device's TX and RX queues according to the hint value and
device's capabilities.
I'll mark it as an RFC in patchwork, there needs to be an in-tree user
for this code to be merged.