igc: Fix launchtime before start of cycle
authorFlorian Kauer <florian.kauer@linutronix.de>
Wed, 14 Jun 2023 14:07:13 +0000 (16:07 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 10 Jul 2023 15:59:08 +0000 (08:59 -0700)
commitc1bca9ac0bcb355be11354c2e68bc7bf31f5ac5a
treee9c69533421f909cbaa83e0063ff4dcbb06d041e
parent8b86f10ab64eca0287ea8f7c94e9ad8b2e101c01
igc: Fix launchtime before start of cycle

It is possible (verified on a running system) that frames are processed
by igc_tx_launchtime with a txtime before the start of the cycle
(baset_est).

However, the result of txtime - baset_est is written into a u32,
leading to a wrap around to a positive number. The following
launchtime > 0 check will only branch to executing launchtime = 0
if launchtime is already 0.

Fix it by using a s32 before checking launchtime > 0.

Fixes: db0b124f02ba ("igc: Enhance Qbv scheduling by using first flag bit")
Signed-off-by: Florian Kauer <florian.kauer@linutronix.de>
Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igc/igc_main.c