Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband

+31 -26
+1 -1
drivers/infiniband/core/user_mad.c
··· 312 312 int ret, length, hdr_len, copy_offset; 313 313 int rmpp_active = 0; 314 314 315 - if (count < sizeof (struct ib_user_mad)) 315 + if (count < sizeof (struct ib_user_mad) + IB_MGMT_RMPP_HDR) 316 316 return -EINVAL; 317 317 318 318 length = count - sizeof (struct ib_user_mad);
+18 -19
drivers/infiniband/hw/mthca/mthca_qp.c
··· 730 730 } 731 731 732 732 if (attr_mask & IB_QP_ACCESS_FLAGS) { 733 + qp_context->params2 |= 734 + cpu_to_be32(attr->qp_access_flags & IB_ACCESS_REMOTE_WRITE ? 735 + MTHCA_QP_BIT_RWE : 0); 736 + 733 737 /* 734 - * Only enable RDMA/atomics if we have responder 735 - * resources set to a non-zero value. 738 + * Only enable RDMA reads and atomics if we have 739 + * responder resources set to a non-zero value. 736 740 */ 737 741 if (qp->resp_depth) { 738 - qp_context->params2 |= 739 - cpu_to_be32(attr->qp_access_flags & IB_ACCESS_REMOTE_WRITE ? 740 - MTHCA_QP_BIT_RWE : 0); 741 742 qp_context->params2 |= 742 743 cpu_to_be32(attr->qp_access_flags & IB_ACCESS_REMOTE_READ ? 743 744 MTHCA_QP_BIT_RRE : 0); ··· 760 759 if (qp->resp_depth && !attr->max_dest_rd_atomic) { 761 760 /* 762 761 * Lowering our responder resources to zero. 763 - * Turn off RDMA/atomics as responder. 764 - * (RWE/RRE/RAE in params2 already zero) 762 + * Turn off reads RDMA and atomics as responder. 763 + * (RRE/RAE in params2 already zero) 765 764 */ 766 - qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_RWE | 767 - MTHCA_QP_OPTPAR_RRE | 765 + qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_RRE | 768 766 MTHCA_QP_OPTPAR_RAE); 769 767 } 770 768 771 769 if (!qp->resp_depth && attr->max_dest_rd_atomic) { 772 770 /* 773 771 * Increasing our responder resources from 774 - * zero. Turn on RDMA/atomics as appropriate. 772 + * zero. Turn on RDMA reads and atomics as 773 + * appropriate. 775 774 */ 776 - qp_context->params2 |= 777 - cpu_to_be32(qp->atomic_rd_en & IB_ACCESS_REMOTE_WRITE ? 778 - MTHCA_QP_BIT_RWE : 0); 779 775 qp_context->params2 |= 780 776 cpu_to_be32(qp->atomic_rd_en & IB_ACCESS_REMOTE_READ ? 781 777 MTHCA_QP_BIT_RRE : 0); ··· 780 782 cpu_to_be32(qp->atomic_rd_en & IB_ACCESS_REMOTE_ATOMIC ? 781 783 MTHCA_QP_BIT_RAE : 0); 782 784 783 - qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_RWE | 784 - MTHCA_QP_OPTPAR_RRE | 785 + qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_RRE | 785 786 MTHCA_QP_OPTPAR_RAE); 786 787 } 787 788 ··· 918 921 else 919 922 qp->max_inline_data = max_data_size - MTHCA_INLINE_HEADER_SIZE; 920 923 921 - qp->sq.max_gs = max_data_size / sizeof (struct mthca_data_seg); 922 - qp->rq.max_gs = (min(dev->limits.max_desc_sz, 1 << qp->rq.wqe_shift) - 923 - sizeof (struct mthca_next_seg)) / 924 - sizeof (struct mthca_data_seg); 924 + qp->sq.max_gs = min_t(int, dev->limits.max_sg, 925 + max_data_size / sizeof (struct mthca_data_seg)); 926 + qp->rq.max_gs = min_t(int, dev->limits.max_sg, 927 + (min(dev->limits.max_desc_sz, 1 << qp->rq.wqe_shift) - 928 + sizeof (struct mthca_next_seg)) / 929 + sizeof (struct mthca_data_seg)); 925 930 } 926 931 927 932 /*
+11 -6
drivers/infiniband/ulp/srp/ib_srp.c
··· 802 802 803 803 /* 804 804 * Must be called with target->scsi_host->host_lock held to protect 805 - * req_lim and tx_head. 805 + * req_lim and tx_head. Lock cannot be dropped between call here and 806 + * call to __srp_post_send(). 806 807 */ 807 808 static struct srp_iu *__srp_get_tx_iu(struct srp_target_port *target) 808 809 { 809 810 if (target->tx_head - target->tx_tail >= SRP_SQ_SIZE) 810 811 return NULL; 812 + 813 + if (unlikely(target->req_lim < 1)) { 814 + if (printk_ratelimit()) 815 + printk(KERN_DEBUG PFX "Target has req_lim %d\n", 816 + target->req_lim); 817 + return NULL; 818 + } 811 819 812 820 return target->tx_ring[target->tx_head & SRP_SQ_SIZE]; 813 821 } ··· 830 822 struct ib_sge list; 831 823 struct ib_send_wr wr, *bad_wr; 832 824 int ret = 0; 833 - 834 - if (target->req_lim < 1) { 835 - printk(KERN_ERR PFX "Target has req_lim %d\n", target->req_lim); 836 - return -EAGAIN; 837 - } 838 825 839 826 list.addr = iu->dma; 840 827 list.length = len; ··· 1419 1416 sizeof (struct srp_target_port)); 1420 1417 if (!target_host) 1421 1418 return -ENOMEM; 1419 + 1420 + target_host->max_lun = SRP_MAX_LUN; 1422 1421 1423 1422 target = host_to_target(target_host); 1424 1423 memset(target, 0, sizeof *target);
+1
drivers/infiniband/ulp/srp/ib_srp.h
··· 54 54 SRP_PORT_REDIRECT = 1, 55 55 SRP_DLID_REDIRECT = 2, 56 56 57 + SRP_MAX_LUN = 512, 57 58 SRP_MAX_IU_LEN = 256, 58 59 59 60 SRP_RQ_SHIFT = 6,