igc: Check if hardware TX timestamping is enabled earlier
authorVinicius Costa Gomes <vinicius.gomes@intel.com>
Wed, 7 Jun 2023 21:32:30 +0000 (14:32 -0700)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Thu, 22 Jun 2023 15:22:35 +0000 (08:22 -0700)
commitce58c7cc8b9910f2bc1d038d7ba60c3f011b2cb2
tree5a0b6e861d899068d33ac23435160f0e28e5c662
parent9c50e2b150c8ee0eee5f8154e2ad168cdd748877
igc: Check if hardware TX timestamping is enabled earlier

Before requesting a packet transmission to be hardware timestamped,
check if the user has TX timestamping enabled. Fixes an issue that if
a packet was internally forwarded to the NIC, and it had the
SKBTX_HW_TSTAMP flag set, the driver would mark that timestamp as
skipped.

In reality, that timestamp was "not for us", as TX timestamp could
never be enabled in the NIC.

Checking if the TX timestamping is enabled earlier has a secondary
effect that when TX timestamping is disabled, there's no need to check
for timestamp timeouts.

We should only take care to free any pending timestamp when TX
timestamping is disabled, as that skb would never be released
otherwise.

Fixes: 2c344ae24501 ("igc: Add support for TX timestamping")
Suggested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
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.h
drivers/net/ethernet/intel/igc/igc_main.c
drivers/net/ethernet/intel/igc/igc_ptp.c