aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/fungible
diff options
context:
space:
mode:
authorDimitris Michailidis <d.michailidis@fungible.com>2022-04-01 16:24:11 -0700
committerJakub Kicinski <kuba@kernel.org>2022-04-01 21:32:30 -0700
commit31ac3bcee47b8628d676bf4080c56b238d0222d1 (patch)
treec57c4d386e903a3445a70e639aa3ee132a79ae8b /drivers/net/ethernet/fungible
parentMerge branch 'nexthop-route-deletye-warning' (diff)
downloadlinux-dev-31ac3bcee47b8628d676bf4080c56b238d0222d1.tar.xz
linux-dev-31ac3bcee47b8628d676bf4080c56b238d0222d1.zip
net/fungible: Fix reference to __udivdi3 on 32b builds
32b builds with CONFIG_PHYS_ADDR_T_64BIT=y, such as i386 PAE, raise a linker error due to a 64b division: ld: drivers/net/ethernet/fungible/funcore/fun_dev.o: in function `fun_dev_enable': (.text+0xe1a): undefined reference to `__udivdi3' The divisor in the offendinng expression is a power of 2. Change it to use an explicit right shift. Fixes: e1ffcc66818f ("net/fungible: Add service module for Fungible drivers") Reported-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Dimitris Michailidis <dmichail@fungible.com> Link: https://lore.kernel.org/r/20220401232411.313881-1-dmichail@fungible.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/fungible')
-rw-r--r--drivers/net/ethernet/fungible/funcore/fun_dev.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/fungible/funcore/fun_dev.c b/drivers/net/ethernet/fungible/funcore/fun_dev.c
index 5d7aef73df61..fb5120d90f26 100644
--- a/drivers/net/ethernet/fungible/funcore/fun_dev.c
+++ b/drivers/net/ethernet/fungible/funcore/fun_dev.c
@@ -586,8 +586,8 @@ static int fun_get_dev_limits(struct fun_dev *fdev)
/* Calculate the max QID based on SQ/CQ/doorbell counts.
* SQ/CQ doorbells alternate.
*/
- num_dbs = (pci_resource_len(pdev, 0) - NVME_REG_DBS) /
- (fdev->db_stride * 4);
+ num_dbs = (pci_resource_len(pdev, 0) - NVME_REG_DBS) >>
+ (2 + NVME_CAP_STRIDE(fdev->cap_reg));
fdev->max_qid = min3(cq_count, sq_count, num_dbs / 2) - 1;
fdev->kern_end_qid = fdev->max_qid + 1;
return 0;