From: Paolo Abeni <pabeni@redhat.com>
To: Justin Lai <justinlai0215@realtek.com>, kuba@kernel.org
Cc: davem@davemloft.net, edumazet@google.com,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
andrew@lunn.ch, jiri@resnulli.us, horms@kernel.org,
rkannoth@marvell.com, jdamato@fastly.com, pkshih@realtek.com,
larry.chiu@realtek.com
Subject: Re: [PATCH net-next v28 07/13] rtase: Implement a function to receive packets
Date: Tue, 27 Aug 2024 11:53:56 +0200 [thread overview]
Message-ID: <c38c1482-1574-4cc9-9ebf-aa5ad30d627a@redhat.com> (raw)
In-Reply-To: <20240822093754.17117-8-justinlai0215@realtek.com>
Hi,
On 8/22/24 11:37, Justin Lai wrote:
> +static int rx_handler(struct rtase_ring *ring, int budget)
> +{
> + union rtase_rx_desc *desc_base = ring->desc;
> + u32 pkt_size, cur_rx, delta, entry, status;
> + struct rtase_private *tp = ring->ivec->tp;
> + struct net_device *dev = tp->dev;
> + union rtase_rx_desc *desc;
> + struct sk_buff *skb;
> + int workdone = 0;
> +
> + cur_rx = ring->cur_idx;
> + entry = cur_rx % RTASE_NUM_DESC;
> + desc = &desc_base[entry];
> +
> + do {
> + status = le32_to_cpu(desc->desc_status.opts1);
> +
> + if (status & RTASE_DESC_OWN)
> + break;
> +
> + /* This barrier is needed to keep us from reading
> + * any other fields out of the rx descriptor until
> + * we know the status of RTASE_DESC_OWN
> + */
> + dma_rmb();
> +
> + if (unlikely(status & RTASE_RX_RES)) {
> + if (net_ratelimit())
> + netdev_warn(dev, "Rx ERROR. status = %08x\n",
> + status);
> +
> + tp->stats.rx_errors++;
> +
> + if (status & (RTASE_RX_RWT | RTASE_RX_RUNT))
> + tp->stats.rx_length_errors++;
> +
> + if (status & RTASE_RX_CRC)
> + tp->stats.rx_crc_errors++;
> +
> + if (dev->features & NETIF_F_RXALL)
> + goto process_pkt;
> +
> + rtase_mark_to_asic(desc, tp->rx_buf_sz);
> + goto skip_process_pkt;
> + }
> +
> +process_pkt:
> + pkt_size = status & RTASE_RX_PKT_SIZE_MASK;
> + if (likely(!(dev->features & NETIF_F_RXFCS)))
> + pkt_size -= ETH_FCS_LEN;
> +
> + /* The driver does not support incoming fragmented frames.
> + * They are seen as a symptom of over-mtu sized frames.
> + */
> + if (unlikely(rtase_fragmented_frame(status))) {
> + tp->stats.rx_dropped++;
> + tp->stats.rx_length_errors++;
> + rtase_mark_to_asic(desc, tp->rx_buf_sz);
> + goto skip_process_pkt;
> + }
> +
> + dma_sync_single_for_cpu(&tp->pdev->dev,
> + ring->mis.data_phy_addr[entry],
> + tp->rx_buf_sz, DMA_FROM_DEVICE);
> +
> + skb = build_skb(ring->data_buf[entry], PAGE_SIZE);
> + if (!skb) {
> + netdev_err(dev, "skb build failed\n");
I'm sorry for this late feedback, but the above message should be
dropped, too.
As pointed out by Jakub in the previous revision, this allocation can
fail, and the counter increase below will give exactly the same amount
of information, without potentially filling the dmseg buffer.
FWIW, I think the above is the last item pending.
Thanks,
Paolo
next prev parent reply other threads:[~2024-08-27 9:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-22 9:37 [PATCH net-next v28 00/13] Add Realtek automotive PCIe driver Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 01/13] rtase: Add support for a pci table in this module Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 02/13] rtase: Implement the .ndo_open function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 03/13] rtase: Implement the rtase_down function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 04/13] rtase: Implement the interrupt routine and rtase_poll Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 05/13] rtase: Implement hardware configuration function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 06/13] rtase: Implement .ndo_start_xmit function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 07/13] rtase: Implement a function to receive packets Justin Lai
2024-08-27 9:53 ` Paolo Abeni [this message]
2024-08-27 10:46 ` Larry Chiu
2024-08-22 9:37 ` [PATCH net-next v28 08/13] rtase: Implement net_device_ops Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 09/13] rtase: Implement pci_driver suspend and resume function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 10/13] rtase: Implement ethtool function Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 11/13] rtase: Add a Makefile in the rtase folder Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 12/13] realtek: Update the Makefile and Kconfig in the realtek folder Justin Lai
2024-08-22 9:37 ` [PATCH net-next v28 13/13] MAINTAINERS: Add the rtase ethernet driver entry Justin Lai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c38c1482-1574-4cc9-9ebf-aa5ad30d627a@redhat.com \
--to=pabeni@redhat.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jdamato@fastly.com \
--cc=jiri@resnulli.us \
--cc=justinlai0215@realtek.com \
--cc=kuba@kernel.org \
--cc=larry.chiu@realtek.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pkshih@realtek.com \
--cc=rkannoth@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox