Sven, see below comments > @@ -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. > @@ -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