Re: [PATCH net-next v10 1/8] hinic3: Async Event Queue interfaces
From: Simon Horman
Date: Thu Jul 31 2025 - 10:09:59 EST
On Thu, Jul 31, 2025 at 02:39:25PM +0100, Simon Horman wrote:
> On Thu, Jul 31, 2025 at 06:49:34PM +0800, Fan Gong wrote:
> > > >
> > > > So the swapped data by HW is neither BE or LE. In this case, we should use
> > > > swab32 to obtain the correct LE data because our driver currently supports LE.
> > > > This is for compensating for bad HW decisions.
> > >
> > > Let us assume that the host is reading data provided by HW.
> > >
> > > If the swab32 approach works on a little endian host
> > > to allow the host to access 32-bit values in host byte order.
> > > Then this is because it outputs a 32-bit little endian values.
> > >
> > > But, given the same input, it will not work on a big endian host.
> > > This is because the same little endian output will be produced,
> > > while the host byte order is big endian.
> > >
> > > I think you need something based on be32_to_cpu()/cpu_to_be32().
> > > This will effectively be swab32 on little endian hosts (no change!).
> > > And a no-op on big endian hosts (addressing my point above).
> > >
> > > More specifically, I think you should use be32_to_cpu_array() and
> > > cpu_to_be32_array() instead of swab32_array().
> >
> > Thanks. We'll take your suggestion.
>
> Thanks, I really appreciate that.
Sorry, I missed Gur's related email before responding.
It seems that conversation now supersedes this one.
[1]https://lore.kernel.org/netdev/20250731125839.1137083-1-gur.stavi@xxxxxxxxxx/