linux-yocto/drivers
Armen Ratner 66d25bb8ab net/mlx5e: Preserve shared buffer capacity during headroom updates
[ Upstream commit 8b0587a885fdb34fd6090a3f8625cb7ac1444826 ]

When port buffer headroom changes, port_update_shared_buffer()
recalculates the shared buffer size and splits it in a 3:1 ratio
(lossy:lossless) - Currently, the calculation is:
lossless = shared / 4;
lossy = (shared / 4) * 3;

Meaning, the calculation dropped the remainder of shared % 4 due to
integer division, unintentionally reducing the total shared buffer
by up to three cells on each update. Over time, this could shrink
the buffer below usable size.

Fix it by changing the calculation to:
lossless = shared / 4;
lossy = shared - lossless;

This retains all buffer cells while still approximating the
intended 3:1 split, preventing capacity loss over time.

While at it, perform headroom calculations in units of cells rather than
in bytes for more accurate calculations avoiding extra divisions.

Fixes: a440030d89 ("net/mlx5e: Update shared buffer along with device buffer changes")
Signed-off-by: Armen Ratner <armeng@nvidia.com>
Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Alexei Lazar <alazar@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Link: https://patch.msgid.link/20250820133209.389065-9-mbloch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-08-28 16:31:16 +02:00
..
accel accel/habanalabs/gaudi2: Use kvfree() for memory allocated with kvcalloc() 2025-08-28 16:31:06 +02:00
accessibility
acpi ACPI: pfr_update: Fix the driver update version check 2025-08-28 16:31:03 +02:00
amba
android
ata ata: libata-scsi: Return aborted command when missing sense and result TF 2025-08-28 16:31:04 +02:00
atm atm: idt77252: Add missing dma_map_error() 2025-07-17 18:37:20 +02:00
auxdisplay
base PM: runtime: Take active children into account in pm_runtime_get_if_in_use() 2025-08-28 16:30:53 +02:00
bcma
block drbd: add missing kref_get in handle_write_conflicts 2025-08-20 18:30:20 +02:00
bluetooth Bluetooth: btmtk: Fix wait_on_bit_timeout interruption during shutdown 2025-08-28 16:31:13 +02:00
bus bus: mhi: host: Detect events pointing to unexpected TREs 2025-08-28 16:30:54 +02:00
cache
cdrom
cdx cdx: Fix off-by-one error in cdx_rpmsg_probe() 2025-08-28 16:31:09 +02:00
char ipmi: Fix strcpy source and destination the same 2025-08-20 18:30:48 +02:00
clk clk: qcom: gcc-ipq8074: fix broken freq table for nss_port6_tx_clk_src 2025-08-20 18:30:51 +02:00
clocksource clocksource: mips-gic-timer: Enable counter when CPUs start 2025-05-29 11:02:41 +02:00
comedi comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl() 2025-08-28 16:31:09 +02:00
connector
counter counter: interrupt-cnt: Protect enable/disable OPs with mutex 2025-06-19 15:32:12 +02:00
cpufreq cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table() 2025-08-28 16:30:53 +02:00
cpuidle cpuidle: governors: menu: Avoid selecting states with too much latency 2025-08-28 16:31:08 +02:00
crypto crypto: octeontx2 - Fix address alignment on CN10KB and CN10KA-B0 2025-08-28 16:30:55 +02:00
cxl cxl/region: Add a dev_err() on missing target list entries 2025-07-06 11:01:32 +02:00
dax
dca
devfreq PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() 2025-08-20 18:30:23 +02:00
dio
dma dmaengine: stm32-dma: configure next sg only if there are more than 2 sgs 2025-08-20 18:30:43 +02:00
dma-buf dma-buf: fix timeout handling in dma_resv_wait_timeout v2 2025-07-10 16:05:12 +02:00
dpll
edac EDAC/synopsys: Clear the ECC counters on init 2025-08-20 18:30:23 +02:00
eisa
extcon
firewire
firmware firmware: arm_scmi: Convert to SYSTEM_SLEEP_PM_OPS 2025-08-20 18:30:58 +02:00
fpga fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable() 2025-08-28 16:31:08 +02:00
fsi
gnss
gpio gpio: tps65912: check the return value of regmap_update_bits() 2025-08-20 18:30:24 +02:00
gpu drm/amd/display: Don't print errors for nonexistent connectors 2025-08-28 16:31:14 +02:00
greybus
hid HID: apple: avoid setting up battery timer for devices without battery 2025-08-20 18:30:56 +02:00
hsi
hte
hv Drivers: hv: Make the sysfs node size for the ring buffer dynamic 2025-08-01 09:48:47 +01:00
hwmon hwmon: (gsc-hwmon) fix fan pwm setpoint show functions 2025-08-28 16:30:58 +02:00
hwspinlock
hwtracing coresight: Only check bottom two claim bits 2025-07-06 11:01:34 +02:00
i2c i2c: Force DLL0945 touchpad i2c freq to 100khz 2025-08-20 18:30:47 +02:00
i3c i3c: master: Initialize ret in i3c_i2c_notifier_call() 2025-08-20 18:30:46 +02:00
idle intel_idle: Allow loading ACPI tables for any family 2025-08-20 18:30:18 +02:00
iio iio: imu: inv_icm42600: change invalid data error to -EBUSY 2025-08-28 16:31:11 +02:00
infiniband RDMA/hns: Fix dip entries leak on devices newer than hip09 2025-08-28 16:31:12 +02:00
input Input: gpio-keys - fix a sleep while atomic with PREEMPT_RT 2025-08-01 09:48:39 +01:00
interconnect interconnect: qcom: sc8180x: specify num_nodes 2025-08-15 12:13:38 +02:00
iommu iommu/amd: Avoid stack buffer overflow from kernel cmdline 2025-08-28 16:31:13 +02:00
ipack
irqchip irqchip: Build IMX_MU_MSI only on ARM 2025-08-15 12:14:07 +02:00
isdn
leds leds: leds-lp50xx: Handle reg to get correct multi_index 2025-08-20 18:30:43 +02:00
macintosh
mailbox mailbox: Not protect module_put with spin_lock_irqsave 2025-07-06 11:01:32 +02:00
mcb
md dm: Check for forbidden splitting of zone write operations 2025-08-28 16:30:53 +02:00
media media: venus: venc: Clamp param smaller than 1fps and bigger than 240 2025-08-28 16:31:01 +02:00
memory
memstick memstick: Fix deadlock by moving removing flag earlier 2025-08-28 16:31:05 +02:00
message
mfd mfd: cros_ec: Separate charge-control probing from USB-PD 2025-08-20 18:30:56 +02:00
misc misc: rtsx: usb: Ensure mmc child device is active when card is present 2025-08-20 18:30:52 +02:00
mmc mmc: sdhci_am654: Disable HS400 for AM62P SR1.0 and SR1.1 2025-08-28 16:31:08 +02:00
most most: core: Drop device reference after usage in get_channel() 2025-08-28 16:31:09 +02:00
mtd mtd: rawnand: renesas: Add missing check after DMA map 2025-08-28 16:30:58 +02:00
mux
net net/mlx5e: Preserve shared buffer capacity during headroom updates 2025-08-28 16:31:16 +02:00
nfc
ntb
nubus
nvdimm
nvme nvme-tcp: log TLS handshake failures at error level 2025-08-20 18:30:19 +02:00
nvmem nvmem: layouts: u-boot-env: remove crc32 endianness conversion 2025-07-24 08:56:21 +02:00
of of: unittest: Unlock on error in unittest_data_add() 2025-06-19 15:31:48 +02:00
opp
parisc
parport
pci PCI: rockchip: Set Target Link Speed to 5.0 GT/s before retraining 2025-08-28 16:31:07 +02:00
pcmcia
peci
perf perf/arm: Add missing .suppress_bind_attrs 2025-08-20 18:30:33 +02:00
phy phy: qcom: phy-qcom-m31: Update IPQ5332 M31 USB phy initialization sequence 2025-08-28 16:30:59 +02:00
pinctrl pinctrl: stm32: Manage irq affinity settings 2025-08-20 18:30:44 +02:00
platform platform/x86/intel-uncore-freq: Check write blocked for ELC 2025-08-28 16:31:06 +02:00
pmdomain imx8m-blk-ctrl: set ISI panic write hurry level 2025-08-20 18:30:27 +02:00
pnp
power power: supply: qcom_battmgr: Add lithium-polymer entry 2025-08-20 18:30:44 +02:00
powercap powercap: dtpm_cpu: Fix NULL pointer dereference in get_pd_power_uw() 2025-08-15 12:13:36 +02:00
pps pps: clients: gpio: fix interrupt handling order in remove path 2025-08-20 18:30:25 +02:00
ps3
ptp ptp: Use ratelimite for freerun error message 2025-08-20 18:30:38 +02:00
pwm pwm: mediatek: Fix duty and period setting 2025-08-28 16:30:58 +02:00
rapidio drivers/rapidio/rio_cm.c: prevent possible heap overwrite 2025-06-27 11:11:36 +01:00
ras
regulator regulator: core: fix NULL dereference on unbind due to stale coupling data 2025-08-01 09:48:39 +01:00
remoteproc remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU 2025-08-20 18:30:22 +02:00
reset reset: brcmstb: Enable reset drivers for ARCH_BCM2835 2025-08-20 18:30:25 +02:00
rpmsg rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() 2025-06-19 15:32:06 +02:00
rtc rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe 2025-08-20 18:30:50 +02:00
s390 s390/sclp: Fix SCCB present check 2025-08-28 16:31:06 +02:00
sbus
scsi scsi: qla4xxx: Prevent a potential error pointer dereference 2025-08-28 16:31:13 +02:00
sh
siox
slimbus
soc soc: qcom: mdt_loader: Fix error return values in mdt_header_valid() 2025-08-28 16:31:07 +02:00
soundwire soundwire: Move handle_nested_irq outside of sdw_dev_lock 2025-08-20 18:30:46 +02:00
spi spi: spi-fsl-lpspi: Clamp too high speed_hz 2025-08-28 16:31:11 +02:00
spmi
ssb
staging media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init() 2025-08-28 16:31:00 +02:00
target scsi: target: core: Generate correct identifiers for PR OUT transport IDs 2025-08-20 18:30:48 +02:00
tc
tee optee: ffa: fix sleep in atomic context 2025-07-10 16:05:12 +02:00
thermal thermal: sysfs: Return ENODATA instead of EAGAIN for reads 2025-08-20 18:30:24 +02:00
thunderbolt thunderbolt: Fix copy+paste error in match_service_id() 2025-08-20 18:30:52 +02:00
tty vt: defkeymap: Map keycodes above 127 to K_HOLE 2025-08-28 16:30:54 +02:00
ufs scsi: ufs: ufs-pci: Fix default runtime and system PM levels 2025-08-28 16:30:57 +02:00
uio uio_hv_generic: Align ring size to system page 2025-06-27 11:11:25 +01:00
usb usb: dwc3: pci: add support for the Intel Wildcat Lake 2025-08-28 16:31:10 +02:00
vdpa vdpa: Fix IDR memory leak in VDUSE module exit 2025-08-15 12:13:58 +02:00
vfio vfio/mlx5: fix possible overflow in tracking max message size 2025-08-20 18:30:48 +02:00
vhost vhost/vsock: Avoid allocating arbitrarily-sized SKBs 2025-08-28 16:30:59 +02:00
video Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()" 2025-08-28 16:30:55 +02:00
virt fix locking in efi_secret_unlink() 2025-08-20 18:30:21 +02:00
virtio virtio_ring: Fix error reporting in virtqueue_resize 2025-08-01 09:48:39 +01:00
w1
watchdog watchdog: iTCO_wdt: Report error if timeout configuration fails 2025-08-20 18:30:42 +02:00
xen xen/gntdev: remove struct gntdev_copy_batch from stack 2025-08-15 12:13:43 +02:00
zorro
Kconfig
Makefile