qed: iWARP - Add check for errors on a SYN packet
A SYN packet which arrives with errors from FW should be dropped. This required adding an additional field to the ll2 rx completion data. Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com> Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
471115ab98
commit
1e99c49701
|
@ -1733,6 +1733,14 @@ qed_iwarp_ll2_comp_syn_pkt(void *cxt, struct qed_ll2_comp_rx_data *data)
|
|||
|
||||
memset(&cm_info, 0, sizeof(cm_info));
|
||||
ll2_syn_handle = p_hwfn->p_rdma_info->iwarp.ll2_syn_handle;
|
||||
|
||||
/* Check if packet was received with errors... */
|
||||
if (data->err_flags) {
|
||||
DP_NOTICE(p_hwfn, "Error received on SYN packet: 0x%x\n",
|
||||
data->err_flags);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (GET_FIELD(data->parse_flags,
|
||||
PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED) &&
|
||||
GET_FIELD(data->parse_flags, PARSING_AND_ERR_FLAGS_L4CHKSMERROR)) {
|
||||
|
|
|
@ -413,6 +413,7 @@ static void qed_ll2_rxq_parse_reg(struct qed_hwfn *p_hwfn,
|
|||
struct qed_ll2_comp_rx_data *data)
|
||||
{
|
||||
data->parse_flags = le16_to_cpu(p_cqe->rx_cqe_fp.parse_flags.flags);
|
||||
data->err_flags = le16_to_cpu(p_cqe->rx_cqe_fp.err_flags.flags);
|
||||
data->length.packet_length =
|
||||
le16_to_cpu(p_cqe->rx_cqe_fp.packet_length);
|
||||
data->vlan = le16_to_cpu(p_cqe->rx_cqe_fp.vlan);
|
||||
|
|
|
@ -101,6 +101,7 @@ struct qed_ll2_comp_rx_data {
|
|||
void *cookie;
|
||||
dma_addr_t rx_buf_addr;
|
||||
u16 parse_flags;
|
||||
u16 err_flags;
|
||||
u16 vlan;
|
||||
bool b_last_packet;
|
||||
u8 connection_handle;
|
||||
|
|
Loading…
Reference in New Issue