From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtprelay0215.hostedemail.com ([216.40.44.215]:47193 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751302AbeCNNCt (ORCPT ); Wed, 14 Mar 2018 09:02:49 -0400 Message-ID: <1521032565.2049.68.camel@perches.com> Subject: Re: [PATCH net 2/2] qed: Fix non TCP packets should be dropped on iWARP ll2 connection From: Joe Perches To: Michal Kalderon , davem@davemloft.net Cc: netdev@vger.kernel.org, dledford@redhat.com, jgg@mellanox.com, linux-rdma@vger.kernel.org, Ariel Elior Date: Wed, 14 Mar 2018 06:02:45 -0700 In-Reply-To: <1521031768-19131-3-git-send-email-Michal.Kalderon@cavium.com> References: <1521031768-19131-1-git-send-email-Michal.Kalderon@cavium.com> <1521031768-19131-3-git-send-email-Michal.Kalderon@cavium.com> Content-Type: text/plain; charset="ISO-8859-1" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org List-ID: On Wed, 2018-03-14 at 14:49 +0200, Michal Kalderon wrote: > FW workaround. The iWARP LL2 connection did not expect TCP packets > to arrive on it's connection. The fix drops any non-tcp packets [] > diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c [] > @@ -1703,6 +1703,13 @@ qed_iwarp_parse_rx_pkt(struct qed_hwfn *p_hwfn, > iph = (struct iphdr *)((u8 *)(ethh) + eth_hlen); > > if (eth_type == ETH_P_IP) { > + if (iph->protocol != IPPROTO_TCP) { > + DP_NOTICE(p_hwfn, > + "Unexpected ip protocol on ll2 %x\n", > + iph->protocol); > + return -EINVAL; > + } Perhaps this should be ratelimited. > + > cm_info->local_ip[0] = ntohl(iph->daddr); > cm_info->remote_ip[0] = ntohl(iph->saddr); > cm_info->ip_version = TCP_IPV4; > @@ -1711,6 +1718,14 @@ qed_iwarp_parse_rx_pkt(struct qed_hwfn *p_hwfn, > *payload_len = ntohs(iph->tot_len) - ip_hlen; > } else if (eth_type == ETH_P_IPV6) { > ip6h = (struct ipv6hdr *)iph; > + > + if (ip6h->nexthdr != IPPROTO_TCP) { > + DP_NOTICE(p_hwfn, > + "Unexpected ip protocol on ll2 %x\n", > + iph->protocol); > + return -EINVAL; here too > + } > + > for (i = 0; i < 4; i++) { > cm_info->local_ip[i] = > ntohl(ip6h->daddr.in6_u.u6_addr32[i]);