Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02c1be3d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 8ac19f0d 3cc5ba19
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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
+15 −2
Original line number Diff line number Diff line
@@ -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;