mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
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: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
694d79027e
@ -1688,6 +1688,15 @@ qed_iwarp_parse_rx_pkt(struct qed_hwfn *p_hwfn,
|
|||||||
|
|
||||||
eth_hlen = ETH_HLEN + (vlan_valid ? sizeof(u32) : 0);
|
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(remote_mac_addr, ethh->h_source);
|
||||||
ether_addr_copy(local_mac_addr, ethh->h_dest);
|
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_iwarp_info *iwarp_info;
|
||||||
struct qed_ll2_acquire_data data;
|
struct qed_ll2_acquire_data data;
|
||||||
struct qed_ll2_cbs cbs;
|
struct qed_ll2_cbs cbs;
|
||||||
u32 mpa_buff_size;
|
u32 buff_size;
|
||||||
u16 n_ooo_bufs;
|
u16 n_ooo_bufs;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -2632,7 +2641,7 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,
|
|||||||
|
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
data.input.conn_type = QED_LL2_TYPE_IWARP;
|
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.rx_num_desc = QED_IWARP_LL2_SYN_RX_SIZE;
|
||||||
data.input.tx_num_desc = QED_IWARP_LL2_SYN_TX_SIZE;
|
data.input.tx_num_desc = QED_IWARP_LL2_SYN_TX_SIZE;
|
||||||
data.input.tx_max_bds_per_packet = 1; /* will never be fragmented */
|
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;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buff_size = QED_IWARP_MAX_BUF_SIZE(params->max_mtu);
|
||||||
rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
|
rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
|
||||||
QED_IWARP_LL2_SYN_RX_SIZE,
|
QED_IWARP_LL2_SYN_RX_SIZE,
|
||||||
QED_IWARP_MAX_SYN_PKT_SIZE,
|
buff_size,
|
||||||
iwarp_info->ll2_syn_handle);
|
iwarp_info->ll2_syn_handle);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err;
|
goto err;
|
||||||
@ -2710,10 +2720,9 @@ qed_iwarp_ll2_start(struct qed_hwfn *p_hwfn,
|
|||||||
if (rc)
|
if (rc)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
mpa_buff_size = QED_IWARP_MAX_BUF_SIZE(params->max_mtu);
|
|
||||||
rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
|
rc = qed_iwarp_ll2_alloc_buffers(p_hwfn,
|
||||||
data.input.rx_num_desc,
|
data.input.rx_num_desc,
|
||||||
mpa_buff_size,
|
buff_size,
|
||||||
iwarp_info->ll2_mpa_handle);
|
iwarp_info->ll2_mpa_handle);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err;
|
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->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)
|
if (!iwarp_info->mpa_intermediate_buf)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
@ -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_TX_SIZE (128)
|
||||||
#define QED_IWARP_LL2_SYN_RX_SIZE (256)
|
#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_LL2_OOO_DEF_TX_SIZE (256)
|
||||||
#define QED_IWARP_MAX_OOO (16)
|
#define QED_IWARP_MAX_OOO (16)
|
||||||
|
Loading…
Reference in New Issue
Block a user