CXGBE: fix get_filt to be endianness-aware
Unconditional 32-bit shift is not endianness-safe. Modify the logic to work both on LE and BE. Submitted by: Wojciech Macek <wma@freebsd.org> Reviewed by: np Obtained from: Semihalf Sponsored by: IBM, QCM Technologies Differential revision: https://reviews.freebsd.org/D13102
This commit is contained in:
parent
fb3855e0e7
commit
f078ecf642
@ -4754,13 +4754,13 @@ get_flit(struct sglist_seg *segs, int nsegs, int idx)
|
||||
|
||||
switch (idx % 3) {
|
||||
case 0: {
|
||||
__be64 rc;
|
||||
uint64_t rc;
|
||||
|
||||
rc = htobe32(segs[i].ss_len);
|
||||
rc = (uint64_t)segs[i].ss_len << 32;
|
||||
if (i + 1 < nsegs)
|
||||
rc |= (uint64_t)htobe32(segs[i + 1].ss_len) << 32;
|
||||
rc |= (uint64_t)(segs[i + 1].ss_len);
|
||||
|
||||
return (rc);
|
||||
return (htobe64(rc));
|
||||
}
|
||||
case 1:
|
||||
return (htobe64(segs[i].ss_paddr));
|
||||
|
Loading…
Reference in New Issue
Block a user