bianbu-linux-6.6/drivers/net/ethernet
Michal Schmidt bf15bb38ec ice: make writes to /dev/gnssX synchronous
The current ice driver's GNSS write implementation buffers writes and
works through them asynchronously in a kthread. That's bad because:
 - The GNSS write_raw operation is supposed to be synchronous[1][2].
 - There is no upper bound on the number of pending writes.
   Userspace can submit writes much faster than the driver can process,
   consuming unlimited amounts of kernel memory.

A patch that's currently on review[3] ("[v3,net] ice: Write all GNSS
buffers instead of first one") would add one more problem:
 - The possibility of waiting for a very long time to flush the write
   work when doing rmmod, softlockups.

To fix these issues, simplify the implementation: Drop the buffering,
the write_work, and make the writes synchronous.

I tested this with gpsd and ubxtool.

[1] https://events19.linuxfoundation.org/wp-content/uploads/2017/12/The-GNSS-Subsystem-Johan-Hovold-Hovold-Consulting-AB.pdf
    "User interface" slide.
[2] A comment in drivers/gnss/core.c:gnss_write():
        /* Ignoring O_NONBLOCK, write_raw() is synchronous. */
[3] https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20230217120541.16745-1-karol.kolacinski@intel.com/

Fixes: d6b98c8d24 ("ice: add write functionality for GNSS TTY")
Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-06-07 10:51:58 +01:00
..
3com 3c589_cs: Fix an error handling path in tc589_probe() 2023-05-22 19:17:58 -07:00
8390 net: isa: include net/Space.h 2023-05-17 21:27:30 -07:00
actions
adaptec
adi net: Replace all spi->chip_select and spi->cs_gpiod references with function call 2023-03-11 12:34:02 +00:00
aeroflex
agere
alacritech
allwinner
alteon net: alteon: remove unused len variable 2023-04-02 13:43:43 +01:00
altera
amazon net: ena: removed unused tx_bytes variable 2023-03-29 21:39:35 -07:00
amd pds_core: Fix FW recovery detection 2023-06-06 21:10:01 -07:00
apm
apple
aquantia Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2023-05-05 13:35:45 -07:00
arc
asix net: Replace all spi->chip_select and spi->cs_gpiod references with function call 2023-03-11 12:34:02 +00:00
atheros net: atheros: atl1c: remove unused atl1c_irq_reset function 2023-03-21 21:18:54 -07:00
broadcom net: systemport: Replace platform_get_irq with platform_get_irq_optional 2023-06-02 09:56:23 +01:00
brocade
cadence net: macb: Optimize reading HW timestamp 2023-04-13 22:16:09 -07:00
calxeda
cavium net: liquidio: Remove redundant pci_clear_master 2023-03-24 09:09:27 +00:00
chelsio Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
cirrus net: isa: include net/Space.h 2023-05-17 21:27:30 -07:00
cisco
cortina
davicom spi: Updates for v6.4 2023-04-27 11:02:26 -07:00
dec
dlink
emulex net: vlan: introduce skb_vlan_eth_hdr() 2023-04-23 14:16:44 +01:00
engleder tsnep: Add XDP socket zero-copy TX support 2023-04-24 18:22:38 -07:00
ezchip
faraday
freescale net: enetc: correct rx_bytes statistics of XDP 2023-06-04 15:43:45 +01:00
fujitsu
fungible net/fungible: Remove redundant pci_clear_master 2023-03-24 09:09:27 +00:00
google gve: Remove the code of clearing PBA bit 2023-05-10 10:30:46 +01:00
hisilicon net: hns3: fix reset timeout when enable full VF 2023-05-13 17:12:23 +01:00
huawei
i825xx i825xx: sni_82596: use eth_hw_addr_set() 2023-03-16 17:35:21 -07:00
ibm mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
intel ice: make writes to /dev/gnssX synchronous 2023-06-07 10:51:58 +01:00
litex
marvell octeontx2-pf: Fix TSOv6 offload 2023-05-19 08:57:47 +01:00
mediatek net: ethernet: mtk_eth_soc: fix QoS on DSA MAC on non MTK_NETSYS_V2 SoCs 2023-05-24 08:04:41 +01:00
mellanox net/mlx5: Read embedded cpu after init bit cleared 2023-05-31 20:08:37 -07:00
micrel ksz884x: Remove unused functions 2023-04-12 09:38:19 +01:00
microchip lan966x: Fix unloading/loading of the driver 2023-05-23 13:01:06 +02:00
microsoft net: mana: Fix perf regression: remove rx_cqes, tx_cqes counters 2023-05-30 12:05:22 +02:00
moxa
mscc net: mscc: ocelot: fix stat counter register values 2023-05-10 12:11:18 +01:00
myricom
natsemi net/sonic: use dma_mapping_error() for error check 2023-03-21 21:29:34 -07:00
neterion
netronome nfp: fix NFP_NET_MAX_DSCP definition error 2023-05-12 08:55:47 +01:00
ni net: ni: drop of_match_ptr for ID table 2023-03-15 08:02:45 +00:00
nvidia forcedeth: Fix an error handling path in nv_probe() 2023-05-22 19:17:28 -07:00
nxp
oki-semi
packetengines
pasemi net: pasemi: Fix return type of pasemi_mac_start_tx() 2023-03-21 13:48:35 +01:00
pensando ionic: catch failure from devlink_alloc 2023-05-03 09:14:47 +01:00
qlogic qed/qede: Fix scheduling while atomic 2023-06-06 13:56:18 +02:00
qualcomm spi: Updates for v6.4 2023-04-27 11:02:26 -07:00
rdc
realtek r8169: Use a raw_spinlock_t for the register locks. 2023-05-23 20:38:12 -07:00
renesas net: renesas: rswitch: Fix return value in error path of xmit 2023-06-01 09:57:08 -07:00
rocker
samsung net: samsung: sxgbe: drop of_match_ptr for ID table 2023-03-15 08:02:45 +00:00
seeq
sfc sfc: fix error unwinds in TC offload 2023-05-31 22:30:27 -07:00
sgi
silan
sis
smsc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-03-30 14:43:03 -07:00
socionext
stmicro net: stmmac: dwmac-qcom-ethqos: fix a regression on EMAC < 3 2023-06-05 11:38:49 +01:00
sun cassini: Fix a memory leak in the error handling path of cas_init_one() 2023-05-17 09:06:44 +01:00
sunplus ethernet: remove superfluous clearing of phydev 2023-03-22 20:47:27 -07:00
synopsys
tehuti
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-04-13 16:04:28 -07:00
toshiba net/ps3_gelic_net: Use dma_mapping_error 2023-03-20 10:20:40 +00:00
tundra
vertexcom
via net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
wangxun net: libwx: fix memory leak in wx_setup_rx_resources 2023-04-20 15:39:15 +02:00
wiznet
xilinx net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
xircom xirc2ps_cs: Fix use after free bug in xirc2ps_detach 2023-03-19 10:42:02 +00:00
xscale
dnet.c
dnet.h
ec_bhf.c ethernet: ec_bhf: Remove redundant pci_clear_master 2023-03-24 09:09:28 +00:00
ethoc.c
fealnx.c eth: fealnx: bring back this old driver 2023-03-08 23:22:04 -08:00
jme.c
jme.h
Kconfig net: restore alpha order to Ethernet devices in config 2023-03-09 23:36:28 -08:00
korina.c
lantiq_etop.c
lantiq_xrx200.c
Makefile eth: fealnx: bring back this old driver 2023-03-08 23:22:04 -08:00