svn commit: r327811 - head/sys/dev/cxgbe
Wojciech Macek
wma at FreeBSD.org
Thu Jan 11 09:17:03 UTC 2018
Author: wma
Date: Thu Jan 11 09:17:02 2018
New Revision: 327811
URL: https://svnweb.freebsd.org/changeset/base/327811
Log:
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 at freebsd.org>
Reviewed by: np
Obtained from: Semihalf
Sponsored by: IBM, QCM Technologies
Differential revision: https://reviews.freebsd.org/D13102
Modified:
head/sys/dev/cxgbe/t4_sge.c
Modified: head/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- head/sys/dev/cxgbe/t4_sge.c Thu Jan 11 07:40:06 2018 (r327810)
+++ head/sys/dev/cxgbe/t4_sge.c Thu Jan 11 09:17:02 2018 (r327811)
@@ -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));
More information about the svn-src-head
mailing list