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
> 

Reply via email to