Commit 747c19eb authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull rdma updates from Jason Gunthorpe:
 "Another small cycle. Mostly cleanups and bug fixes, quite a bit
  assisted from bots. There are a few new syzkaller splats that haven't
  been solved yet but they should get into the rcs in a few weeks, I
  think.

  Summary:

   - Update drivers to use common helpers for GUIDs, pkeys, bitmaps,
     memset_startat, and others

   - General code cleanups from bots

   - Simplify some of the rxe pool code in preparation for a larger
     rework

   - Clean out old stuff from hns, including all support for hip06
     devices

   - Fix a bug where GID table entries could be missed if the table had
     holes in it

   - Rename paths and sessions in rtrs for better understandability

   - Consolidate the roce source port selection code

   - NDR speed support in mlx5"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (83 commits)
  RDMA/irdma: Remove the redundant return
  RDMA/rxe: Use the standard method to produce udp source port
  RDMA/irdma: Make the source udp port vary
  RDMA/hns: Replace get_udp_sport with rdma_get_udp_sport
  RDMA/core: Calculate UDP source port based on flow label or lqpn/rqpn
  IB/qib: Fix typos
  RDMA/rtrs-clt: Rename rtrs_clt to rtrs_clt_sess
  RDMA/rtrs-srv: Rename rtrs_srv to rtrs_srv_sess
  RDMA/rtrs-clt: Rename rtrs_clt_sess to rtrs_clt_path
  RDMA/rtrs-srv: Rename rtrs_srv_sess to rtrs_srv_path
  RDMA/rtrs: Rename rtrs_sess to rtrs_path
  RDMA/hns: Modify the hop num of HIP09 EQ to 1
  IB/iser: Align coding style across driver
  IB/iser: Remove un-needed casting to/from void pointer
  IB/iser: Don't suppress send completions
  IB/iser: Rename ib_ret local variable
  IB/iser: Fix RNR errors
  IB/iser: Remove deprecated pi_guard module param
  IB/mlx5: Expose NDR speed through MAD
  RDMA/cxgb4: Set queue pair state when being queried
  ...
parents feb7a43d c0fe82ba
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -433,7 +433,7 @@ static void msg_conf(void *priv, int errno)
	schedule_work(&iu->work);
}

static int send_usr_msg(struct rtrs_clt *rtrs, int dir,
static int send_usr_msg(struct rtrs_clt_sess *rtrs, int dir,
			struct rnbd_iu *iu, struct kvec *vec,
			size_t len, struct scatterlist *sg, unsigned int sg_len,
			void (*conf)(struct work_struct *work),
@@ -1010,7 +1010,7 @@ static int rnbd_client_xfer_request(struct rnbd_clt_dev *dev,
				     struct request *rq,
				     struct rnbd_iu *iu)
{
	struct rtrs_clt *rtrs = dev->sess->rtrs;
	struct rtrs_clt_sess *rtrs = dev->sess->rtrs;
	struct rtrs_permit *permit = iu->permit;
	struct rnbd_msg_io msg;
	struct rtrs_clt_req_ops req_ops;
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ struct rnbd_cpu_qlist {

struct rnbd_clt_session {
	struct list_head        list;
	struct rtrs_clt        *rtrs;
	struct rtrs_clt_sess        *rtrs;
	wait_queue_head_t       rtrs_waitq;
	bool                    rtrs_ready;
	struct rnbd_cpu_qlist	__percpu
+8 −8
Original line number Diff line number Diff line
@@ -263,15 +263,15 @@ static void destroy_sess(struct rnbd_srv_session *srv_sess)
	kfree(srv_sess);
}

static int create_sess(struct rtrs_srv *rtrs)
static int create_sess(struct rtrs_srv_sess *rtrs)
{
	struct rnbd_srv_session *srv_sess;
	char sessname[NAME_MAX];
	char pathname[NAME_MAX];
	int err;

	err = rtrs_srv_get_sess_name(rtrs, sessname, sizeof(sessname));
	err = rtrs_srv_get_path_name(rtrs, pathname, sizeof(pathname));
	if (err) {
		pr_err("rtrs_srv_get_sess_name(%s): %d\n", sessname, err);
		pr_err("rtrs_srv_get_path_name(%s): %d\n", pathname, err);

		return err;
	}
@@ -284,8 +284,8 @@ static int create_sess(struct rtrs_srv *rtrs)
			  offsetof(struct rnbd_dev_blk_io, bio),
			  BIOSET_NEED_BVECS);
	if (err) {
		pr_err("Allocating srv_session for session %s failed\n",
		       sessname);
		pr_err("Allocating srv_session for path %s failed\n",
		       pathname);
		kfree(srv_sess);
		return err;
	}
@@ -298,14 +298,14 @@ static int create_sess(struct rtrs_srv *rtrs)
	mutex_unlock(&sess_lock);

	srv_sess->rtrs = rtrs;
	strscpy(srv_sess->sessname, sessname, sizeof(srv_sess->sessname));
	strscpy(srv_sess->sessname, pathname, sizeof(srv_sess->sessname));

	rtrs_srv_set_sess_priv(rtrs, srv_sess);

	return 0;
}

static int rnbd_srv_link_ev(struct rtrs_srv *rtrs,
static int rnbd_srv_link_ev(struct rtrs_srv_sess *rtrs,
			     enum rtrs_srv_link_ev ev, void *priv)
{
	struct rnbd_srv_session *srv_sess = priv;
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
struct rnbd_srv_session {
	/* Entry inside global sess_list */
	struct list_head        list;
	struct rtrs_srv		*rtrs;
	struct rtrs_srv_sess	*rtrs;
	char			sessname[NAME_MAX];
	int			queue_depth;
	struct bio_set		sess_bio_set;
+9 −3
Original line number Diff line number Diff line
@@ -956,7 +956,7 @@ int rdma_query_gid(struct ib_device *device, u32 port_num,
{
	struct ib_gid_table *table;
	unsigned long flags;
	int res = -EINVAL;
	int res;

	if (!rdma_is_port_valid(device, port_num))
		return -EINVAL;
@@ -964,9 +964,15 @@ int rdma_query_gid(struct ib_device *device, u32 port_num,
	table = rdma_gid_table(device, port_num);
	read_lock_irqsave(&table->rwlock, flags);

	if (index < 0 || index >= table->sz ||
	    !is_gid_entry_valid(table->data_vec[index]))
	if (index < 0 || index >= table->sz) {
		res = -EINVAL;
		goto done;
	}

	if (!is_gid_entry_valid(table->data_vec[index])) {
		res = -ENOENT;
		goto done;
	}

	memcpy(gid, &table->data_vec[index]->attr.gid, sizeof(*gid));
	res = 0;
Loading