ramips: Fix setting of rx buffer length
The length of the DMA rx buffer was always set to 0 because the function for extracting the length was used to calculate the value for setting it. Instead the macro has to be split in a get and set function similar to the TX_DMA_(GET_|)PLEN(0|1) macro. No problem was noticed on MT7621a before this was changed and thus maybe it was hidden by different problem which is not yet fixed. Signed-off-by: Sven Eckelmann <sven@open-mesh.com> SVN-Revision: 47115
This commit is contained in:
		| @@ -849,7 +849,7 @@ static int fe_poll_rx(struct napi_struct *napi, int budget, | |||||||
|  |  | ||||||
| 		dma_unmap_single(&netdev->dev, trxd.rxd1, | 		dma_unmap_single(&netdev->dev, trxd.rxd1, | ||||||
| 				ring->rx_buf_size, DMA_FROM_DEVICE); | 				ring->rx_buf_size, DMA_FROM_DEVICE); | ||||||
| 		pktlen = RX_DMA_PLEN0(trxd.rxd2); | 		pktlen = RX_DMA_GET_PLEN0(trxd.rxd2); | ||||||
| 		skb->dev = netdev; | 		skb->dev = netdev; | ||||||
| 		skb_put(skb, pktlen); | 		skb_put(skb, pktlen); | ||||||
| 		if (trxd.rxd4 & checksum_bit) { | 		if (trxd.rxd4 & checksum_bit) { | ||||||
|   | |||||||
| @@ -310,7 +310,8 @@ enum fe_work_flag { | |||||||
| /* rxd2 */ | /* rxd2 */ | ||||||
| #define RX_DMA_DONE		BIT(31) | #define RX_DMA_DONE		BIT(31) | ||||||
| #define RX_DMA_LSO		BIT(30) | #define RX_DMA_LSO		BIT(30) | ||||||
| #define RX_DMA_PLEN0(_x)	(((_x) >> 16) & 0x3fff) | #define RX_DMA_PLEN0(_x)	(((_x) & 0x3fff) << 16) | ||||||
|  | #define RX_DMA_GET_PLEN0(_x)	(((_x) >> 16) & 0x3fff) | ||||||
| #define RX_DMA_TAG		BIT(15) | #define RX_DMA_TAG		BIT(15) | ||||||
| /* rxd3 */ | /* rxd3 */ | ||||||
| #define RX_DMA_TPID(_x)		(((_x) >> 16) & 0xffff) | #define RX_DMA_TPID(_x)		(((_x) >> 16) & 0xffff) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin