mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
IB/qib: Display correct value for number of contexts
A "fix" for a bug with the number of contexts on a single-port board caused the calculation to be off by one, which causes problems with the upper layers. The same problem exists for number of free contexts, which is also fixed here. Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
4ccf28a26c
commit
6ceaadee34
2 changed files with 7 additions and 3 deletions
|
@ -102,6 +102,8 @@ void qib_set_ctxtcnt(struct qib_devdata *dd)
|
|||
dd->cfgctxts = qib_cfgctxts;
|
||||
else
|
||||
dd->cfgctxts = dd->ctxtcnt;
|
||||
dd->freectxts = (dd->first_user_ctxt > dd->cfgctxts) ? 0 :
|
||||
dd->cfgctxts - dd->first_user_ctxt;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -402,7 +404,6 @@ static void enable_chip(struct qib_devdata *dd)
|
|||
if (rcd)
|
||||
dd->f_rcvctrl(rcd->ppd, rcvmask, i);
|
||||
}
|
||||
dd->freectxts = dd->cfgctxts - dd->first_user_ctxt;
|
||||
}
|
||||
|
||||
static void verify_interrupt(unsigned long opaque)
|
||||
|
|
|
@ -503,8 +503,11 @@ static ssize_t show_nctxts(struct device *device,
|
|||
struct qib_devdata *dd = dd_from_dev(dev);
|
||||
|
||||
/* Return the number of user ports (contexts) available. */
|
||||
return scnprintf(buf, PAGE_SIZE, "%u\n", dd->cfgctxts -
|
||||
dd->first_user_ctxt);
|
||||
/* The calculation below deals with a special case where
|
||||
* cfgctxts is set to 1 on a single-port board. */
|
||||
return scnprintf(buf, PAGE_SIZE, "%u\n",
|
||||
(dd->first_user_ctxt > dd->cfgctxts) ? 0 :
|
||||
(dd->cfgctxts - dd->first_user_ctxt));
|
||||
}
|
||||
|
||||
static ssize_t show_nfreectxts(struct device *device,
|
||||
|
|
Loading…
Reference in a new issue