From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 582A745BF5; Sun, 27 Oct 2024 18:11:59 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E763E40652; Sun, 27 Oct 2024 18:11:50 +0100 (CET) Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by mails.dpdk.org (Postfix) with ESMTP id E14614064C for ; Sun, 27 Oct 2024 18:11:46 +0100 (CET) Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-71e5a1c9071so2660628b3a.0 for ; Sun, 27 Oct 2024 10:11:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1730049105; x=1730653905; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=44olhYEdhVx+M+JkKc6/T6XqBFp3DIhfqyjypoFKN1o=; b=OD0z5dNvkZLJIiH/rO5+n2URg5bsFMQZrn3NF/T/PEtkXGY5OVMx7IUJKhQ/qwlmMK W2ZVibkngPSi0ZuTnQdtCC16nzS7mCVU9rgXfC2IWYV22gvZvKGJieeejNMttUnMwpFL ZVqQmLQ31VG4McntIU+kTHO7NUTnSz13ps0uI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730049105; x=1730653905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=44olhYEdhVx+M+JkKc6/T6XqBFp3DIhfqyjypoFKN1o=; b=ZLx7hwyJEYIPUmYH1JNLQDygbGZz1HGAnEiJeuZ1VU9W8ypRbO3OP4vjTslRai3RIU 3qqZ6I3hJmWoMV2L8SrfLFBY5aOkpw0hjlQ/BkM3buoMLPBpaQNoIU6wib1UrW8NDsU4 0upx+tobyQzVrScYgfggeyz7+qvtyN4ywwZWmvcRZaC00hwBq75XM8GYAF3D7/mZHDvh KI3X7phl+kkqxGZZrpdPngkYFqmic7GehAN5YALOY89DjLqS+Ho+m1rb7UcZqqc7dTHY oAwYrFFHj+sVdhKLiI2z46hMdQmD6NdTUPaGiEEJ+5l5IpuV2zs+O1AZjXWgKZoQrgiF xe9w== X-Gm-Message-State: AOJu0YzNPcuD7e139LQjwax/uLWFSjc5xrOZYgGGTnxy3971/p3yCkJ+ 5wlxftPBFaRys6NNk9eC6DTBVDgwQP1nCySm0nqRtiFiTwQKIXQlv5Wj448MBJTWQp7jIBk3wA+ bRuNGsjcGmkIpOAVsrBP49+SdUbt1djnwoSz7k6RZUQ8oOdYH5LXVSAtvHeIFZPhNZ3lvUMKcNo Hf+9AlRnj5lRgwIcF/yL1yI80tZka2Uk8= X-Google-Smtp-Source: AGHT+IFaLkINKow/ewBUYBV1hwIK9ygxV1dncj8aWDpo3PO2Txp1yY5hoODyeCgYJHpSwO0SCrBazw== X-Received: by 2002:a05:6a20:db0d:b0:1d9:97c3:da60 with SMTP id adf61e73a8af0-1d9a842cf4amr7473482637.11.1730049105351; Sun, 27 Oct 2024 10:11:45 -0700 (PDT) Received: from localhost.localdomain ([136.52.21.78]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72057a21ccesm4269158b3a.167.2024.10.27.10.11.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Oct 2024 10:11:44 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , Somnath Kotur Subject: [PATCH v2 03/13] net/bnxt: add check to validate TSO segment size Date: Sun, 27 Oct 2024 10:11:18 -0700 Message-Id: <20241027171128.50221-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20241027171128.50221-1-ajit.khaparde@broadcom.com> References: <20241027171128.50221-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Kalesh AP Currently driver has a check to validate TSO seg_size for 0 which is to detect corrupted packet. But user can set any value as the TSO seg_size. Adding a check to validate the minimum TSO seg_size in the driver. Driver will drop a packet with TSO seg_size less than 4 when TSO is requested in the MBUF flags. Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_txr.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c index c82b11e733..6d7e9962ce 100644 --- a/drivers/net/bnxt/bnxt_txr.c +++ b/drivers/net/bnxt/bnxt_txr.c @@ -129,23 +129,26 @@ bnxt_xmit_need_long_bd(struct rte_mbuf *tx_pkt, struct bnxt_tx_queue *txq) * segments or fragments in those cases. */ static bool -bnxt_zero_data_len_tso_segsz(struct rte_mbuf *tx_pkt, uint8_t data_len_chk) +bnxt_zero_data_len_tso_segsz(struct rte_mbuf *tx_pkt, bool data_len_chk, bool tso_segsz_check) { - const char *type_str = "Data len"; - uint16_t len_to_check = tx_pkt->data_len; + const char *type_str; - if (data_len_chk == 0) { - type_str = "TSO Seg size"; - len_to_check = tx_pkt->tso_segsz; + /* Minimum TSO seg_size should be 4 */ + if (tso_segsz_check && tx_pkt->tso_segsz < 4) { + type_str = "Unsupported TSO Seg size"; + goto dump_pkt; } - if (len_to_check == 0) { - PMD_DRV_LOG_LINE(ERR, "Error! Tx pkt %s == 0", type_str); - rte_pktmbuf_dump(stdout, tx_pkt, 64); - rte_dump_stack(); - return true; + if (data_len_chk && tx_pkt->data_len == 0) { + type_str = "Data len == 0"; + goto dump_pkt; } return false; +dump_pkt: + PMD_DRV_LOG_LINE(ERR, "Error! Tx pkt %s == 0", type_str); + rte_pktmbuf_dump(stdout, tx_pkt, 64); + rte_dump_stack(); + return true; } static bool @@ -248,7 +251,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, } /* Check non zero data_len */ - if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, 1))) + if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, true, false))) return -EIO; if (unlikely(txq->bp->ptp_cfg != NULL && txq->bp->ptp_all_rx_tstamp == 1)) @@ -338,7 +341,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, */ txbd1->kid_or_ts_low_hdr_size = hdr_size >> 1; txbd1->kid_or_ts_high_mss = tx_pkt->tso_segsz; - if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, 0))) + if (unlikely(bnxt_zero_data_len_tso_segsz(tx_pkt, false, true))) return -EIO; } else if ((tx_pkt->ol_flags & PKT_TX_OIP_IIP_TCP_UDP_CKSUM) == @@ -413,7 +416,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, m_seg = tx_pkt->next; while (m_seg) { /* Check non zero data_len */ - if (unlikely(bnxt_zero_data_len_tso_segsz(m_seg, 1))) + if (unlikely(bnxt_zero_data_len_tso_segsz(m_seg, true, false))) return -EIO; txr->tx_raw_prod = RING_NEXT(txr->tx_raw_prod); -- 2.39.5 (Apple Git-154)