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 5964245BCB; Fri, 25 Oct 2024 19:58:05 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 32A2740673; Fri, 25 Oct 2024 19:57:53 +0200 (CEST) Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mails.dpdk.org (Postfix) with ESMTP id 04FD24065D for ; Fri, 25 Oct 2024 19:57:48 +0200 (CEST) Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-20c7ee8fe6bso19795665ad.2 for ; Fri, 25 Oct 2024 10:57:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1729879067; x=1730483867; 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=JA/esxyZgVGcADQMXYWD1zUOWY097AdQGWSy8FjGX2tA5bNlxyrpIwNHaAilzjgHyf ypKm8xtJXKHLviaMoYFH85hOrkmpliArWZ0U/szW++BLk0j55/ibCOF83/hR4HcGQlpn 4JyXFsolISsXVgfa0D8UgHZh4MgnB+tkwIGBw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729879067; x=1730483867; 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=tFMWLDZaARUeXYIUKuVGfM0Kgol3pf6xEP9fmmpheg0o+Db30Mke6jkaG68ps9nqWB ZVVrq1ax+IU+RWGuAZRPfs/8KHkuk7x13tSGYDM6jzVZi55evkaGafMDIkZhlJPPofo2 UE/9JPRwtFh1XGiS5QSRX+IUGkgzXZR3TDgtzkxOVsIbzEaJ8PAxbWCtbGAsZFvA0ULE 1zU3Y+vZqYn+hInUv67s8lhfLtgMqAKDsB7SX+KB367ZQTJ4m+iOxKV5zR2yA/kUcMwi ddW0WlbB4++GVUbnIzwdQE6+d3reGAFZ8d3zqyt3gZKKAIUCd8iDamHKLdo/wGOZHABw h0Xg== X-Gm-Message-State: AOJu0YzE/YjG0ZKg94AlvYVdTA966UxfA9i/QTbOuAsMDJBGFIlJNRbB t289hLSPwUxGJR6O63lf3/nxT5oL2IZEY6UShZrISB+9WH5UA3CUHwUakqcufsy7JdwypL0eTaN Ff5CsJptUtT6k1teLZohdpuI2ZlKpAfq7sKpN5hbwemM0vXEI5PN0XbFHrz0BjYc1ARv8/A28TC pHQngXvwjVFoXp+TWpxeYDQgti/iDvdGs= X-Google-Smtp-Source: AGHT+IEGsUOlV9bdauIWJreal7YZXHCfmkxuLeh/tQ9qpDZCNrCwoesa0/dT01IyKkCG4zQuipDwdA== X-Received: by 2002:a17:902:d2ca:b0:20c:6bff:fcc2 with SMTP id d9443c01a7336-20fb9b33443mr98412615ad.56.1729879066617; Fri, 25 Oct 2024 10:57:46 -0700 (PDT) Received: from C02GC2QQMD6T.wifi.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-210bc02ebd8sm11924335ad.210.2024.10.25.10.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Oct 2024 10:57:45 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , Somnath Kotur Subject: [PATCH 03/13] net/bnxt: add check to validate TSO segment size Date: Fri, 25 Oct 2024 10:57:28 -0700 Message-Id: <20241025175738.99564-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20241025175738.99564-1-ajit.khaparde@broadcom.com> References: <20241025175738.99564-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)