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

Commit 694d7902 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'qed-iWARP'



Michal Kalderon says:

====================
qed: iWARP - fix some syn related issues.

This series fixes two bugs related to iWARP syn processing flow.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 8e29d23e 8be3dadf
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -1688,6 +1688,15 @@ qed_iwarp_parse_rx_pkt(struct qed_hwfn *p_hwfn,

	eth_hlen = ETH_HLEN + (vlan_valid ? sizeof(u32) : 0);

	if (!ether_addr_equal(ethh->h_dest,
			      p_hwfn->p_rdma_info->iwarp.mac_addr)) {
		DP_VERBOSE(p_hwfn,
			   QED_MSG_RDMA,
			   "Got unexpected mac %pM instead of %pM\n",
			   ethh->h_dest, p_hwfn->p_rdma_info->iwarp.mac_addr);
		return -EINVAL;
	}

	ether_addr_copy(remote_mac_addr, ethh->h_source);
	ether_addr_copy(local_mac_addr, ethh->h_dest);

@@ -2605,7 +2614,7 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,
	struct qed_iwarp_info *iwarp_info;
	struct qed_ll2_acquire_data data;
	struct qed_ll2_cbs cbs;
	u32 mpa_buff_size;
	u32 buff_size;
	u16 n_ooo_bufs;
	int rc = 0;
	int i;
@@ -2632,7 +2641,7 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,

	memset(&data, 0, sizeof(data));
	data.input.conn_type = QED_LL2_TYPE_IWARP;
	data.input.mtu = QED_IWARP_MAX_SYN_PKT_SIZE;
	data.input.mtu = params->max_mtu;
	data.input.rx_num_desc = QED_IWARP_LL2_SYN_RX_SIZE;
	data.input.tx_num_desc = QED_IWARP_LL2_SYN_TX_SIZE;
	data.input.tx_max_bds_per_packet = 1;	/* will never be fragmented */
@@ -2654,9 +2663,10 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,
		goto err;
	}

	buff_size = QED_IWARP_MAX_BUF_SIZE(params->max_mtu);
	rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
					 QED_IWARP_LL2_SYN_RX_SIZE,
					 QED_IWARP_MAX_SYN_PKT_SIZE,
					 buff_size,
					 iwarp_info->ll2_syn_handle);
	if (rc)
		goto err;
@@ -2710,10 +2720,9 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,
	if (rc)
		goto err;

	mpa_buff_size = QED_IWARP_MAX_BUF_SIZE(params->max_mtu);
	rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
					 data.input.rx_num_desc,
					 mpa_buff_size,
					 buff_size,
					 iwarp_info->ll2_mpa_handle);
	if (rc)
		goto err;
@@ -2726,7 +2735,7 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,

	iwarp_info->max_num_partial_fpdus = (u16)p_hwfn->p_rdma_info->num_qps;

	iwarp_info->mpa_intermediate_buf = kzalloc(mpa_buff_size, GFP_KERNEL);
	iwarp_info->mpa_intermediate_buf = kzalloc(buff_size, GFP_KERNEL);
	if (!iwarp_info->mpa_intermediate_buf)
		goto err;

+0 −1
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ enum qed_iwarp_qp_state qed_roce2iwarp_state(enum qed_roce_qp_state state);

#define QED_IWARP_LL2_SYN_TX_SIZE       (128)
#define QED_IWARP_LL2_SYN_RX_SIZE       (256)
#define QED_IWARP_MAX_SYN_PKT_SIZE      (128)

#define QED_IWARP_LL2_OOO_DEF_TX_SIZE   (256)
#define QED_IWARP_MAX_OOO		(16)