Thread (30 messages) 30 messages, 6 authors, 2021-02-05

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(struct
lan743x_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(struct
lan743x_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
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help