mirror_ubuntu-kernels/drivers/net/ethernet/ti
Sebastian Andrzej Siewior beca92820d net: tlan: Replace in_irq() usage
The driver uses in_irq() to determine if the tlan_priv::lock has to be
acquired in tlan_mii_read_reg() and tlan_mii_write_reg().

The interrupt handler acquires the lock outside of these functions so the
in_irq() check is meant to prevent a lock recursion deadlock. But this
check is incorrect when interrupt force threading is enabled because then
the handler runs in thread context and in_irq() correctly returns false.

The usage of in_*() in drivers is phased out and Linus clearly requested
that code which changes behaviour depending on context should either be
seperated or the context be conveyed in an argument passed by the caller,
which usually knows the context.

tlan_set_timer() has this conditional as well, but this function is only
invoked from task context or the timer callback itself. So it always has to
lock and the check can be removed.

tlan_mii_read_reg(), tlan_mii_write_reg() and tlan_phy_print() are invoked
from interrupt and other contexts.

Split out the actual function body into helper variants which are called
from interrupt context and make the original functions wrappers which
acquire tlan_priv::lock unconditionally.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Samuel Chessman <chessman@tux.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2020-10-31 09:55:38 -07:00
..
am65-cpsw-ethtool.c net: ethernet: ti: ale: add cpsw_ale_get_num_entries api 2020-09-11 17:34:39 -07:00
am65-cpsw-nuss.c net: ethernet: ti: am65-cpsw: enable hw auto ageing 2020-09-11 17:34:39 -07:00
am65-cpsw-nuss.h net: ethernet: ti: am65-cpsw: enable hw auto ageing 2020-09-11 17:34:39 -07:00
am65-cpsw-qos.c ethernet: ti: am65-cpsw-qos: Use struct_size() in devm_kzalloc() 2020-06-19 13:42:08 -07:00
am65-cpsw-qos.h ethernet: ti: am65-cpsw-qos: add TAPRIO offload support 2020-05-14 17:33:30 -07:00
am65-cpts.c net: ethernet: ti: am65-cpts: fix i2083 genf (and estf) Reconfiguration Issue 2020-08-31 12:29:52 -07:00
am65-cpts.h ethernet: ti: am65-cpts: Add missing inline qualifier to stub functions 2020-05-15 16:32:27 -07:00
cpmac.c net: cpmac: Fix use correct return type for ndo_start_xmit() 2020-05-06 14:24:06 -07:00
cpsw_ale.c net: ethernet: ti: ale: add support for multi port k3 cpsw versions 2020-09-11 17:34:39 -07:00
cpsw_ale.h net: ethernet: ti: ale: switch to use tables for vlan entry description 2020-09-11 17:34:39 -07:00
cpsw_ethtool.c net: ethernet: ti: ale: add cpsw_ale_get_num_entries api 2020-09-11 17:34:39 -07:00
cpsw_new.c drivers/net/ethernet: clean up unused assignments 2020-09-25 16:29:00 -07:00
cpsw_priv.c net: ethernet: ti: cpsw: use dev_id for ale configuration 2020-09-11 17:34:39 -07:00
cpsw_priv.h net: ethernet: ti: cpsw: use dev_id for ale configuration 2020-09-11 17:34:39 -07:00
cpsw_sl.c net: ethernet: ti: cpsw: introduce mac sl module api 2019-04-27 17:11:49 -04:00
cpsw_sl.h net: ethernet: ti: cpsw: introduce mac sl module api 2019-04-27 17:11:49 -04:00
cpsw_switchdev.c net: ethernet: ti: introduce cpsw switchdev based driver part 2 - switch 2019-11-20 11:25:24 -08:00
cpsw_switchdev.h net: ethernet: ti: introduce cpsw switchdev based driver part 2 - switch 2019-11-20 11:25:24 -08:00
cpsw-common.c net: ethernet: ti: convert to SPDX license identifiers 2019-04-27 17:11:48 -04:00
cpsw-phy-sel.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
cpsw.c net: ethernet: ti: cpsw: use true,false for bool variables 2020-09-19 14:23:14 -07:00
cpsw.h net: ethernet: ti: convert to SPDX license identifiers 2019-04-27 17:11:48 -04:00
cpts.c ethernet: ti: cpts: Use generic helper function 2020-08-19 16:09:19 -07:00
cpts.h net: ethernet: ti: cpts: add support for HW_TS_PUSH events 2020-04-23 12:50:21 -07:00
davinci_cpdma.c drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
davinci_cpdma.h net: ethernet: ti: davinci_cpdma: allow desc split while down 2019-07-08 14:58:04 -07:00
davinci_emac.c drivers/net/ethernet: clean up mis-targeted comments 2020-09-25 16:29:00 -07:00
davinci_mdio.c drivers: net: davinci_mdio: fix potential NULL dereference in davinci_mdio_probe() 2020-05-01 15:27:09 -07:00
k3-cppi-desc-pool.c net: ethernet: ti: fix return value check in k3_cppi_desc_pool_create_name() 2020-04-27 13:27:59 -07:00
k3-cppi-desc-pool.h net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver 2020-03-26 20:01:14 -07:00
Kconfig docs: networking: reorganize driver documentation again 2020-06-26 16:08:44 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
netcp_core.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
netcp_ethss.c net: netcp: ethss: use dev_id for ale configuration 2020-09-11 17:34:39 -07:00
netcp_sgmii.c net: ethernet: ti: convert to SPDX license identifiers 2019-04-27 17:11:48 -04:00
netcp_xgbepcsr.c net: ethernet: ti: convert to SPDX license identifiers 2019-04-27 17:11:48 -04:00
netcp.h net: ethernet: ti: convert to SPDX license identifiers 2019-04-27 17:11:48 -04:00
tlan.c net: tlan: Replace in_irq() usage 2020-10-31 09:55:38 -07:00
tlan.h