Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Nov 2017 06:45:33 +0000 (UTC)
From:      Wojciech Macek <wma@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r325840 - head/sys/dev/cxgbe
Message-ID:  <201711150645.vAF6jXdS096877@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: wma
Date: Wed Nov 15 06:45:33 2017
New Revision: 325840
URL: https://svnweb.freebsd.org/changeset/base/325840

Log:
  CXGBE: fix big-endian behaviour
  
  The setbit/clearbit pair casts the bitfield pointer
  to uint8_t* which effectively treats its contents as
  little-endian variable. The ffs() function accepts int as
  the parameter, which is big-endian. Use uint8_t here to
  avoid mismatch, as we have only 4 doorbells.
  
  Submitted by:          Wojciech Macek <wma@freebsd.org>
  Reviewed by:           np
  Obtained from:         Semihalf
  Sponsored by:          QCM Technologies
  Differential revision: https://reviews.freebsd.org/D13084

Modified:
  head/sys/dev/cxgbe/adapter.h

Modified: head/sys/dev/cxgbe/adapter.h
==============================================================================
--- head/sys/dev/cxgbe/adapter.h	Wed Nov 15 03:46:59 2017	(r325839)
+++ head/sys/dev/cxgbe/adapter.h	Wed Nov 15 06:45:33 2017	(r325840)
@@ -424,7 +424,7 @@ struct sge_eq {
 	struct mtx eq_lock;
 
 	struct tx_desc *desc;	/* KVA of descriptor ring */
-	uint16_t doorbells;
+	uint8_t doorbells;
 	volatile uint32_t *udb;	/* KVA of doorbell (lies within BAR2) */
 	u_int udb_qid;		/* relative qid within the doorbell page */
 	uint16_t sidx;		/* index of the entry with the status page */
@@ -695,7 +695,7 @@ struct sge_nm_txq {
 	uint16_t equiqidx;	/* EQUIQ last requested at this pidx */
 	uint16_t equeqidx;	/* EQUEQ last requested at this pidx */
 	uint16_t dbidx;		/* pidx of the most recent doorbell */
-	uint16_t doorbells;
+	uint8_t doorbells;
 	volatile uint32_t *udb;
 	u_int udb_qid;
 	u_int cntxt_id;
@@ -807,7 +807,7 @@ struct adapter {
 	struct l2t_data *l2t;	/* L2 table */
 	struct tid_info tids;
 
-	uint16_t doorbells;
+	uint8_t doorbells;
 	int offload_map;	/* ports with IFCAP_TOE enabled */
 	int active_ulds;	/* ULDs activated on this adapter */
 	int flags;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711150645.vAF6jXdS096877>