RE: [PATCH net-next v1 1/6] lan743x: boost performance on cpu archs w/o dma cache snooping
From: <Bryan.Whitehead@microchip.com>
Date: 2021-01-30 22:12:32
Also in:
lkml
Sven, see below comments
quoted hunk ↗ jump to hunk
@@ -2148,11 +2149,18 @@ static int lan743x_rx_process_packet(structlan743x_rx *rx) descriptor = &rx->ring_cpu_ptr[first_index]; /* unmap from dma */ + packet_length = RX_DESC_DATA0_FRAME_LENGTH_GET_ + (descriptor->data0);
It appears you moved this packet_length assignment from just below the following if block, however you left out the le32_to_cpu.See next comment
if (buffer_info->dma_ptr) {
- dma_unmap_single(&rx->adapter->pdev->dev,
- buffer_info->dma_ptr,
- buffer_info->buffer_length,
- DMA_FROM_DEVICE);
+ dma_sync_single_for_cpu(&rx->adapter->pdev->dev,
+ buffer_info->dma_ptr,
+ packet_length,
+ DMA_FROM_DEVICE);
+ dma_unmap_single_attrs(&rx->adapter->pdev->dev,
+ buffer_info->dma_ptr,
+ buffer_info->buffer_length,
+ DMA_FROM_DEVICE,
+
+ DMA_ATTR_SKIP_CPU_SYNC);
buffer_info->dma_ptr = 0;
buffer_info->buffer_length = 0;
}Just below here is the following line packet_length = RX_DESC_DATA0_FRAME_LENGTH_GET_ (le32_to_cpu(descriptor->data0)); This line was moved above the previous if block, but the le32_to_cpu was removed. Is that intentional? Also I don't see any mention of this packet_length assignment (after the if block) being removed. Since packet_length already contains this value, it seems unnecessary to keep this assignment.
quoted hunk ↗ jump to hunk
@@ -2167,8 +2175,8 @@ static int lan743x_rx_process_packet(structlan743x_rx *rx) int index = first_index; /* multi buffer packet not supported */ - /* this should not happen since - * buffers are allocated to be at least jumbo size + /* this should not happen since buffers are allocated + * to be at least the mtu size configured in the mac. */ /* clean up buffers */ @@ -2628,6 +2636,9 @@ static int lan743x_netdev_change_mtu(struct net_device *netdev, int new_mtu) struct lan743x_adapter *adapter = netdev_priv(netdev); int ret = 0; + if (netif_running(netdev)) + return -EBUSY; + ret = lan743x_mac_set_mtu(adapter, new_mtu); if (!ret) netdev->mtu = new_mtu; -- 2.17.1