igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp()
[ Upstream commit a2df8463e15c10a8a882090f3d7a760fdb7b189d ]
clang static analysis reports
drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of
'+' is a garbage value [core.UndefinedBinaryOperatorResult]
ktime_add_ns(shhwtstamps.hwtstamp, adjust);
^ ~~~~~~~~~~~~~~~~~~~~
igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp
if the mac type is unknown. This should be treated as an error.
Fixes: 81b055205e
("igc: Add support for RX timestamping")
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Sasha Neftin <sasha.neftin@intel.com>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20230131215437.1528994-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
98c93a0160
commit
6362b86170
@@ -134,10 +134,12 @@ static int igc_ptp_feature_enable_i225(struct ptp_clock_info *ptp,
|
|||||||
*
|
*
|
||||||
* We need to convert the system time value stored in the RX/TXSTMP registers
|
* We need to convert the system time value stored in the RX/TXSTMP registers
|
||||||
* into a hwtstamp which can be used by the upper level timestamping functions.
|
* into a hwtstamp which can be used by the upper level timestamping functions.
|
||||||
|
*
|
||||||
|
* Returns 0 on success.
|
||||||
**/
|
**/
|
||||||
static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
|
static int igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
|
||||||
struct skb_shared_hwtstamps *hwtstamps,
|
struct skb_shared_hwtstamps *hwtstamps,
|
||||||
u64 systim)
|
u64 systim)
|
||||||
{
|
{
|
||||||
switch (adapter->hw.mac.type) {
|
switch (adapter->hw.mac.type) {
|
||||||
case igc_i225:
|
case igc_i225:
|
||||||
@@ -147,8 +149,9 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter,
|
|||||||
systim & 0xFFFFFFFF);
|
systim & 0xFFFFFFFF);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -372,7 +375,8 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter)
|
|||||||
|
|
||||||
regval = rd32(IGC_TXSTMPL);
|
regval = rd32(IGC_TXSTMPL);
|
||||||
regval |= (u64)rd32(IGC_TXSTMPH) << 32;
|
regval |= (u64)rd32(IGC_TXSTMPH) << 32;
|
||||||
igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval);
|
if (igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval))
|
||||||
|
return;
|
||||||
|
|
||||||
switch (adapter->link_speed) {
|
switch (adapter->link_speed) {
|
||||||
case SPEED_10:
|
case SPEED_10:
|
||||||
|
Reference in New Issue
Block a user