On Mon, Feb 10, 2025 at 02:02:03AM -0500, Faizal Rahim wrote: ... > diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.c b/drivers/net/ethernet/intel/igc/igc_tsn.c ... > +bool igc_fpe_transmitted_smd_v(union igc_adv_tx_desc *tx_desc) > +{ > + u8 smd = FIELD_GET(IGC_TXD_POPTS_SMD_MASK, tx_desc->read.olinfo_status); olininfo_status is little-endian, so I think it needs to be converted to host byte order when used as an argument to FIELD_GET(). Flagged by Sparse. > + > + return smd == SMD_V; > +} ... > diff --git a/drivers/net/ethernet/intel/igc/igc_tsn.h b/drivers/net/ethernet/intel/igc/igc_tsn.h ... > +static inline void igc_fpe_lp_event_status(union igc_adv_rx_desc *rx_desc, > + struct ethtool_mmsv *mmsv) > +{ > + __le32 status_error = le32_to_cpu(rx_desc->wb.upper.status_error); It looks like the type of status_error should be a host byte order integer, such as u32. Also flagged by Sparse. > + int smd; > + > + smd = FIELD_GET(IGC_RXDADV_STAT_SMD_TYPE_MASK, status_error); > + > + if (smd == IGC_RXD_STAT_SMD_TYPE_V) > + ethtool_mmsv_event_handle(mmsv, ETHTOOL_MMSV_LP_SENT_VERIFY_MPACKET); > + else if (smd == IGC_RXD_STAT_SMD_TYPE_R) > + ethtool_mmsv_event_handle(mmsv, ETHTOOL_MMSV_LP_SENT_RESPONSE_MPACKET); > +} > + > +static inline bool igc_fpe_is_verify_or_response(union igc_adv_rx_desc *rx_desc, > + unsigned int size) > +{ > + __le32 status_error = le32_to_cpu(rx_desc->wb.upper.status_error); Ditto. > + int smd; > + > + smd = FIELD_GET(IGC_RXDADV_STAT_SMD_TYPE_MASK, status_error); > + > + return ((smd == IGC_RXD_STAT_SMD_TYPE_V || smd == IGC_RXD_STAT_SMD_TYPE_R) && > + size == SMD_FRAME_SIZE); > +} > + > #endif /* _IGC_BASE_H */ > -- > 2.34.1 >