linux/drivers/net/ethernet
Jacob Keller bbc4e7d273 i40e: fix race condition with PTP_TX_IN_PROGRESS bits
Hardware related to the i40e driver has a limitation on Tx PTP packets.
This requires us to limit the driver to timestamping a single packet at
once. This is done using a state bitlock which enforces that only one
timestamp request is honored at a time.

Unfortunately this suffers from a race condition. The bit lock is not
cleared until after skb_tstamp_tx() is called notifying applications of
a new Tx timestamp. Even a well behaved application sending only one
packet at a time and waiting for a response can wake up and send a new
timestamped packet request before the bit lock is cleared. This results
in needlessly dropping some Tx timestamp requests.

We can fix this by unlocking the state bit as soon as we read the
Timestamp register, as this is the first point at which it is safe to
timestamp another packet.

To avoid issues with the skb pointer, we'll use a copy of the pointer
and set the global variable in the driver structure to NULL first. This
ensures that the next timestamp request does not modify our local copy
of the skb pointer.

Now, a well behaved application which has at most one outstanding
timestamp request will not accidentally race with the driver unlock bit.
Obviously an application attempting to timestamp faster than one request
at a time will have some timestamp requests skipped. Unfortunately there
is nothing we can do about that.

Reported-by: David Mirabito <davidm@metamako.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-05-31 03:03:33 -07:00
..
3com Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
8390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
adaptec
adi net: bfin_mac: Remove unused stats member from struct bfin_mac_local 2017-03-27 16:01:59 -07:00
aeroflex net: greth: Utilize of_get_mac_address() 2017-03-22 12:00:39 -07:00
agere
alacritech
allwinner
alteon
altera
amazon net/ena: switch to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
amd net: ethernet: update drivers to make both SW and HW TX timestamps 2017-05-21 13:37:32 -04:00
apm xgene: Check all RGMII phy mode variants 2017-05-19 19:41:43 -04:00
apple
aquantia sk_buff: remove support for csum_bad in sk_buff 2017-05-19 19:21:29 -04:00
arc net: arc_emac: switch to phy_start()/phy_stop() 2017-04-21 15:23:52 -04:00
atheros net: atheros: atl2: don't return zero on failure path in atl2_probe() 2017-05-22 12:05:01 -04:00
aurora
broadcom bnxt_en: Fix xmit_more with BQL. 2017-05-30 22:37:06 -04:00
brocade bna: ethtool: Avoid reading past end of buffer 2017-05-08 14:41:42 -04:00
cadence net: macb: fix phy interrupt parsing 2017-04-30 22:21:49 -04:00
calxeda
cavium liquidio: fix inaccurate count of napi-processed rx packets reported to Octeon 2017-05-26 14:41:48 -04:00
chelsio cxgb4: Fix netdev_features flag 2017-05-30 14:16:34 -04:00
cirrus Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
cisco enic: unmask intr only when napi is complete 2017-05-23 11:05:45 -04:00
davicom
dec Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
dlink net: dl2k: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
emulex Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
ezchip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
faraday net: ethernet: faraday: To support device tree usage. 2017-05-18 10:10:44 -04:00
freescale net: fec: add post PHY reset delay DT property 2017-05-24 15:25:22 -04:00
fujitsu
hisilicon format-security: move static strings to const 2017-05-08 17:15:14 -07:00
hp Annotate hardware config module parameters in drivers/net/ethernet/ 2017-04-20 12:02:32 +01:00
i825xx
ibm ibmvnic: Reset sub-crqs during driver reset 2017-05-26 15:32:47 -04:00
intel i40e: fix race condition with PTP_TX_IN_PROGRESS bits 2017-05-31 03:03:33 -07:00
marvell sky2: Use seq_puts() in sky2_debug_show() 2017-04-18 13:55:11 -04:00
mediatek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-20 10:35:33 -04:00
mellanox Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
micrel
microchip
moxa net: moxa: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
myricom
natsemi format-security: move static strings to const 2017-05-08 17:15:14 -07:00
neterion net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
netronome nfp: don't keep count for free buffers delayed kick 2017-05-30 11:27:08 -04:00
nuvoton net: nuvoton: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
nvidia forcedeth: remove unnecessary carrier status check 2017-05-04 10:57:41 -04:00
nxp
oki-semi
packetengines
pasemi
qlogic qed: Cache alignemnt padding to match host 2017-05-30 12:07:04 -04:00
qualcomm net: qualcomm: add QCA7000 UART driver 2017-05-30 13:57:32 -04:00
rdc
realtek Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
renesas sh_eth: Do not print an error message for probe deferral 2017-05-18 11:21:07 -04:00
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
samsung net: ethernet: update drivers to make both SW and HW TX timestamps 2017-05-21 13:37:32 -04:00
seeq
sfc net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
sgi
silan
sis
smsc Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
stmicro net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
sun ldmvsw: stop the clean timer at beginning of remove 2017-05-15 15:36:08 -04:00
synopsys net: dwc-xlgmac: add the initial ethtool support 2017-04-13 13:46:38 -04:00
tehuti net: tehuti: use new api ethtool_{get|set}_link_ksettings 2017-03-27 16:00:07 -07:00
ti net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
tile net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
toshiba format-security: move static strings to const 2017-05-08 17:15:14 -07:00
tundra
via
wiznet net: ethernet: wiznet: avoid format string exposure 2017-04-06 13:38:11 -07:00
xilinx
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c
fealnx.c
jme.c net: jme: Remove unused functions 2017-05-25 12:58:45 -04:00
jme.h
Kconfig
korina.c
lantiq_etop.c
Makefile
netx-eth.c