|
@@ -490,11 +490,12 @@ static void ntb_transport_setup_qp_mw(struct ntb_transport *nt,
|
|
|
rx_size -= sizeof(struct ntb_rx_info);
|
|
|
|
|
|
qp->rx_buff = qp->remote_rx_info + 1;
|
|
|
- qp->rx_max_frame = min(transport_mtu, rx_size);
|
|
|
+ /* Due to housekeeping, there must be atleast 2 buffs */
|
|
|
+ qp->rx_max_frame = min(transport_mtu, rx_size / 2);
|
|
|
qp->rx_max_entry = rx_size / qp->rx_max_frame;
|
|
|
qp->rx_index = 0;
|
|
|
|
|
|
- qp->remote_rx_info->entry = qp->rx_max_entry;
|
|
|
+ qp->remote_rx_info->entry = qp->rx_max_entry - 1;
|
|
|
|
|
|
/* setup the hdr offsets with 0's */
|
|
|
for (i = 0; i < qp->rx_max_entry; i++) {
|
|
@@ -818,7 +819,8 @@ static void ntb_transport_init_queue(struct ntb_transport *nt,
|
|
|
tx_size -= sizeof(struct ntb_rx_info);
|
|
|
|
|
|
qp->tx_mw = qp->rx_info + 1;
|
|
|
- qp->tx_max_frame = min(transport_mtu, tx_size);
|
|
|
+ /* Due to housekeeping, there must be atleast 2 buffs */
|
|
|
+ qp->tx_max_frame = min(transport_mtu, tx_size / 2);
|
|
|
qp->tx_max_entry = tx_size / qp->tx_max_frame;
|
|
|
|
|
|
if (nt->debugfs_dir) {
|