• Faicker Mo's avatar
    net/net_failover: fix txq exceeding warning · e3cbdcb0
    Faicker Mo authored
    The failover txq is inited as 16 queues.
    when a packet is transmitted from the failover device firstly,
    the failover device will select the queue which is returned from
    the primary device if the primary device is UP and running.
    If the primary device txq is bigger than the default 16,
    it can lead to the following warning:
    eth0 selects TX queue 18, but real number of TX queues is 16
    
    The warning backtrace is:
    [   32.146376] CPU: 18 PID: 9134 Comm: chronyd Tainted: G            E      6.2.8-1.el7.centos.x86_64 #1
    [   32.147175] Hardware name: Red Hat KVM, BIOS 1.10.2-3.el7_4.1 04/01/2014
    [   32.147730] Call Trace:
    [   32.147971]  <TASK>
    [   32.148183]  dump_stack_lvl+0x48/0x70
    [   32.148514]  dump_stack+0x10/0x20
    [   32.148820]  netdev_core_pick_tx+0xb1/0xe0
    [   32.149180]  __dev_queue_xmit+0x529/0xcf0
    [   32.149533]  ? __check_object_size.part.0+0x21c/0x2c0
    [   32.149967]  ip_finish_output2+0x278/0x560
    [   32.150327]  __ip_finish_output+0x1fe/0x2f0
    [   32.150690]  ip_finish_output+0x2a/0xd0
    [   32.151032]  ip_output+0x7a/0x110
    [   32.151337]  ? __pfx_ip_finish_output+0x10/0x10
    [   32.151733]  ip_local_out+0x5e/0x70
    [   32.152054]  ip_send_skb+0x19/0x50
    [   32.152366]  udp_send_skb.isra.0+0x163/0x3a0
    [   32.152736]  udp_sendmsg+0xba8/0xec0
    [   32.153060]  ? __folio_memcg_unlock+0x25/0x60
    [   32.153445]  ? __pfx_ip_generic_getfrag+0x10/0x10
    [   32.153854]  ? sock_has_perm+0x85/0xa0
    [   32.154190]  inet_sendmsg+0x6d/0x80
    [   32.154508]  ? inet_sendmsg+0x6d/0x80
    [   32.154838]  sock_sendmsg+0x62/0x70
    [   32.155152]  ____sys_sendmsg+0x134/0x290
    [   32.155499]  ___sys_sendmsg+0x81/0xc0
    [   32.155828]  ? _get_random_bytes.part.0+0x79/0x1a0
    [   32.156240]  ? ip4_datagram_release_cb+0x5f/0x1e0
    [   32.156649]  ? get_random_u16+0x69/0xf0
    [   32.156989]  ? __fget_light+0xcf/0x110
    [   32.157326]  __sys_sendmmsg+0xc4/0x210
    [   32.157657]  ? __sys_connect+0xb7/0xe0
    [   32.157995]  ? __audit_syscall_entry+0xce/0x140
    [   32.158388]  ? syscall_trace_enter.isra.0+0x12c/0x1a0
    [   32.158820]  __x64_sys_sendmmsg+0x24/0x30
    [   32.159171]  do_syscall_64+0x38/0x90
    [   32.159493]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
    
    Fix that by reducing txq number as the non-existent primary-dev does.
    
    Fixes: cfc80d9a ("net: Introduce net_failover driver")
    Signed-off-by: default avatarFaicker Mo <faicker.mo@ucloud.cn>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e3cbdcb0
net_failover.c 23.1 KB