net/hinic: fix Tx mbuf length problem
Checks
Commit Message
From: Junjie Lin <linjunjie6@huawei.com>
The Tx mbuf needs to be ignored if the pkt_len member is zero.
Fixes: 54faba2295bd ("net/hinic:adds Tx queue xstats members")
Cc: stable@dpdk.org
Signed-off-by: Junjie Lin <linjunjie6@huawei.com>
---
drivers/net/hinic/hinic_pmd_tx.c | 6 ++++++
1 file changed, 6 insertions(+)
Comments
On Mon, 7 Mar 2022 22:12:20 +0800
Junjie Lin <277600718@qq.com> wrote:
> From: Junjie Lin <linjunjie6@huawei.com>
>
> The Tx mbuf needs to be ignored if the pkt_len member is zero.
>
> Fixes: 54faba2295bd ("net/hinic:adds Tx queue xstats members")
> Cc: stable@dpdk.org
>
> Signed-off-by: Junjie Lin <linjunjie6@huawei.com>
Not all drivers do this. It looks like you have a buggy application
if it tries to send 0 length packets.
On 3/7/2022 4:06 PM, Stephen Hemminger wrote:
> On Mon, 7 Mar 2022 22:12:20 +0800
> Junjie Lin <277600718@qq.com> wrote:
>
>> From: Junjie Lin <linjunjie6@huawei.com>
>>
>> The Tx mbuf needs to be ignored if the pkt_len member is zero.
>>
>> Fixes: 54faba2295bd ("net/hinic:adds Tx queue xstats members")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Junjie Lin <linjunjie6@huawei.com>
>
> Not all drivers do this. It looks like you have a buggy application
> if it tries to send 0 length packets.
Agree, not sure if invalid packet check should be done in driver level.
Junjie, in which use case you are observing this problem?
Or in the past, I remember some PMD FW was crashing for similar
case, and check was added to protect device, do you have similar
problem?
@@ -1144,6 +1144,12 @@ u16 hinic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, u16 nb_pkts)
mbuf_pkt = *tx_pkts++;
queue_info = 0;
+ if (unlikely(mbuf_pkt->pkt_len == 0)) {
+ rte_pktmbuf_free(mbuf_pkt);
+ txq->txq_stats.off_errs++;
+ continue;
+ }
+
/* 1. parse sge and tx offload info from mbuf */
if (unlikely(!hinic_get_sge_txoff_info(mbuf_pkt,
&sqe_info, &off_info))) {