]> git.baikalelectronics.ru Git - kernel.git/commit
net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to private...
authorVadim Lomovtsev <vlomovtsev@marvell.com>
Wed, 20 Feb 2019 11:02:43 +0000 (11:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Feb 2019 19:43:44 +0000 (11:43 -0800)
commit671bae11c0c622831bf698dcd2bdf68ef2eafba9
treebef3411a1e1ffb00811d7c498f0090286b80a59d
parentf1fc35077f9d03acead1f5e25dad47f24167a29c
net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to private for each of them.

Having one work queue for receive mode configuration ndo_set_rx_mode()
call for all VFs results in making each of them wait till the
set_rx_mode() call completes for another VF if any of close, set
receive mode and change flags calls being already invoked. Potentially
this could cause device state change before appropriate call of receive
mode configuration completes, so the call itself became meaningless,
corrupt data or break configuration sequence.

We don't need any delays in NIC VF configuration sequence so having delayed
work call with 0 delay has no sense.

This commit is to implement one work queue for each NIC VF for set_rx_mode
task and to let them work independently and replacing delayed_work
with work_struct.

Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/thunder/nic.h
drivers/net/ethernet/cavium/thunder/nicvf_main.c