mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
NTB driver fixes for queue spread and buffer alignment. Also, update to
MAINTAINERS to reflect new e-mail address. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUFR7/AAoJEG5mS6x6i9Ij/84P/RniNXGFS4Kh+YuS5E6KdZ+C 6rzpxlUkeEWkL+1Oy8xpLSJdWsCYajOmteP2V3ubQNlqzd0H/zN5W52/i4tIhVc1 W7SXexh1tr18BeeiQZ0sX5IlBGzixJ9QDzsuf0cg5keX9RphVBNbm16d8DvW/Le3 fj2LXyN+K82vy0GPZE0awi9TWfgj1oZobsKswjBp6Kz/z4gq11/rKQBeBvJbxSF/ WttgvDWONHiuUyHuKYJq53KQ+B7Q6ANwtKfIvd2CpFb8dWlsYYMnr1eRmz4ZC5OM NDj2T4Dn5VrxqivmFJ+6d4EZK1agZXYXly+mkW21N2sMqL2/fq7b6CgbKzy76PLz sDc1e5WUTJu0AjfrtTQBKG/ZbxXxvpMsarO3rI3C2Oos9DUPnDG8eHsHeOSoZQXi tyUyIu4IyH4x7BWO//srU7l82YXWrrGN8+YU+GcLsMGDfsOaR4DDURUu9iYNX3cA RoGfhmb+H41X+zOnzgnioyGMcK6mwVvsPxIzZ4CwsSa64aWlud6vbxoJr+q6K2ap KEGxT78gy32Jw9wsfYUJKQpa5By7FdpGUDFk/rTt4ZYVU8TR1e+ShCz2l7Ny5Ioh u13/vZ/VGVG3+MFjZ5In02egYx3fPnbilbavGCNRQM31/GJxHSc5p8xnoPxLmg70 tVREVtRX23KREqt38CBf =uhqP -----END PGP SIGNATURE----- Merge tag 'ntb-3.17' of git://github.com/jonmason/ntb Pull ntb driver bugfixes from Jon Mason: "NTB driver fixes for queue spread and buffer alignment. Also, update to MAINTAINERS to reflect new e-mail address" * tag 'ntb-3.17' of git://github.com/jonmason/ntb: ntb: Add alignment check to meet hardware requirement MAINTAINERS: update NTB info NTB: correct the spread of queues over mw's
This commit is contained in:
commit
02c1be3d0c
@ -6424,7 +6424,8 @@ F: Documentation/scsi/NinjaSCSI.txt
|
||||
F: drivers/scsi/nsp32*
|
||||
|
||||
NTB DRIVER
|
||||
M: Jon Mason <jon.mason@intel.com>
|
||||
M: Jon Mason <jdmason@kudzu.us>
|
||||
M: Dave Jiang <dave.jiang@intel.com>
|
||||
S: Supported
|
||||
W: https://github.com/jonmason/ntb/wiki
|
||||
T: git git://github.com/jonmason/ntb.git
|
||||
|
@ -510,7 +510,7 @@ static void ntb_transport_setup_qp_mw(struct ntb_transport *nt,
|
||||
|
||||
WARN_ON(nt->mw[mw_num].virt_addr == NULL);
|
||||
|
||||
if (nt->max_qps % mw_max && mw_num < nt->max_qps % mw_max)
|
||||
if (nt->max_qps % mw_max && mw_num + 1 < nt->max_qps / mw_max)
|
||||
num_qps_mw = nt->max_qps / mw_max + 1;
|
||||
else
|
||||
num_qps_mw = nt->max_qps / mw_max;
|
||||
@ -576,6 +576,19 @@ static int ntb_set_mw(struct ntb_transport *nt, int num_mw, unsigned int size)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/*
|
||||
* we must ensure that the memory address allocated is BAR size
|
||||
* aligned in order for the XLAT register to take the value. This
|
||||
* is a requirement of the hardware. It is recommended to setup CMA
|
||||
* for BAR sizes equal or greater than 4MB.
|
||||
*/
|
||||
if (!IS_ALIGNED(mw->dma_addr, mw->size)) {
|
||||
dev_err(&pdev->dev, "DMA memory %pad not aligned to BAR size\n",
|
||||
&mw->dma_addr);
|
||||
ntb_free_mw(nt, num_mw);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Notify HW the memory location of the receive buffer */
|
||||
ntb_set_mw_addr(nt->ndev, num_mw, mw->dma_addr);
|
||||
|
||||
@ -856,7 +869,7 @@ static int ntb_transport_init_queue(struct ntb_transport *nt,
|
||||
qp->client_ready = NTB_LINK_DOWN;
|
||||
qp->event_handler = NULL;
|
||||
|
||||
if (nt->max_qps % mw_max && mw_num < nt->max_qps % mw_max)
|
||||
if (nt->max_qps % mw_max && mw_num + 1 < nt->max_qps / mw_max)
|
||||
num_qps_mw = nt->max_qps / mw_max + 1;
|
||||
else
|
||||
num_qps_mw = nt->max_qps / mw_max;
|
||||
|
Loading…
Reference in New Issue
Block a user