linux/drivers/net
Jacob Keller b4fd8ffc11 fm10k: allow service task to reschedule itself
If some code path executes fm10k_service_event_schedule(), it is
guaranteed that we only queue the service task once, since we use
__FM10K_SERVICE_SCHED flag. Unfortunately this has a side effect that if
a service request occurs while we are currently running the watchdog, it
is possible that we will fail to notice the request and ignore it until
the next time the request occurs.

This can cause problems with pf/vf mailbox communication and other
service event tasks. To avoid this, introduce a FM10K_SERVICE_REQUEST
bit. When we successfully schedule (and set the _SCHED bit) the service
task, we will clear this bit. However, if we are unable to currently
schedule the service event, we just set the new SERVICE_REQUEST bit.

Finally, after the service event completes, we will re-schedule if the
request bit has been set.

This should ensure that we do not miss any service event schedules,
since we will re-schedule it once the currently running task finishes.
This means that for each request, we will always schedule the service
task to run at least once in full after the request came in.

This will avoid timing issues that can occur with the service event
scheduling. We do pay a cost in re-running many tasks, but all the
service event tasks use either flags to avoid duplicate work, or are
tolerant of being run multiple times.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-04-05 22:47:30 -07:00
..
appletalk
arcnet
bonding bonding: attempt to better support longer hw addresses 2017-04-05 18:44:54 -07:00
caif
can can: hi311x: Add Holt HI-311x CAN driver 2017-04-04 17:35:59 +02:00
cris net: cris: eth_v10: use new api ethtool_{get|set}_link_ksettings 2017-03-27 15:53:19 -07:00
dsa net: dsa: Mock-up driver 2017-04-01 12:39:32 -07:00
ethernet fm10k: allow service task to reschedule itself 2017-04-05 22:47:30 -07:00
fddi
fjes Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-03-23 16:41:27 -07:00
hamradio
hippi
hyperv netvsc: fix dereference before null check errors 2017-03-27 16:00:58 -07:00
ieee802154 net: break include loop netdevice.h, dsa.h, devlink.h 2017-03-28 22:46:04 -07:00
ipvlan
irda
phy phy/ethtool: Add missing SPEED_<foo> strings 2017-04-05 06:36:06 -07:00
plip
ppp
slip
team
usb net: usbnet: support 64bit stats 2017-04-03 19:09:40 -07:00
vmxnet3 net: vmxnet3: use new api ethtool_{get|set}_link_ksettings 2017-03-22 19:26:52 -07:00
wan ucc/hdlc: fix two little issue 2017-03-13 21:53:48 -07:00
wimax net: wimax/i2400m: fix NULL-deref at probe 2017-03-13 12:28:40 -07:00
wireless wireless-drivers fixes for 4.11 2017-04-04 10:28:38 -07:00
xen-netback xen-netback: fix race condition on XenBus disconnect 2017-03-12 23:44:43 -07:00
dummy.c Enable tx timestamping on loopback and dummy 2017-03-21 14:40:01 -07:00
eql.c
geneve.c
gtp.c gtp: support SGSN-side tunnels 2017-03-25 20:11:19 -07:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c Cleanup some warning from timestamping code. 2017-03-21 14:40:02 -07:00
macsec.c
macvlan.c
macvtap.c
Makefile net: phy: Allow building mdio-boardinfo into the kernel 2017-03-29 10:32:32 -07:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c net: net_netdev: use new api ethtool_{get|set}_link_ksettings 2017-03-13 15:25:53 -07:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-03-23 16:41:27 -07:00
veth.c net: veth: use new api ethtool_{get|set}_link_ksettings 2017-03-29 14:07:22 -07:00
virtio_net.c net: virtio_net: use new api ethtool_{get|set}_link_ksettings 2017-03-22 19:26:52 -07:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-03-23 16:41:27 -07:00
vxlan.c vxlan: fix ND proxy when skb doesn't have transport header offset 2017-04-03 18:50:42 -07:00
xen-netfront.c