diff mbox

[OpenWrt-Devel,2/4] ramips: Fix setting of rx buffer length

Message ID 1443179471-17029-2-git-send-email-sven@open-mesh.com
State Accepted
Headers show

Commit Message

Sven Eckelmann Sept. 25, 2015, 11:11 a.m. UTC
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>
---
 target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c | 2 +-
 target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

John Crispin Oct. 5, 2015, 9:53 a.m. UTC | #1
On 25/09/2015 13:11, Sven Eckelmann wrote:
> 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.


how very weird ... lets see if there are any follow up tickets for this.

	John

> Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
> ---
>  target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c | 2 +-
>  target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
> index db6b197..2691cfb 100644
> --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
> +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
> @@ -849,7 +849,7 @@ static int fe_poll_rx(struct napi_struct *napi, int budget,
>  
>  		dma_unmap_single(&netdev->dev, trxd.rxd1,
>  				ring->rx_buf_size, DMA_FROM_DEVICE);
> -		pktlen = RX_DMA_PLEN0(trxd.rxd2);
> +		pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
>  		skb->dev = netdev;
>  		skb_put(skb, pktlen);
>  		if (trxd.rxd4 & checksum_bit) {
> diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
> index 78e04b0..51b087c 100644
> --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
> +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
> @@ -310,7 +310,8 @@ enum fe_work_flag {
>  /* rxd2 */
>  #define RX_DMA_DONE		BIT(31)
>  #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)
>  /* rxd3 */
>  #define RX_DMA_TPID(_x)		(((_x) >> 16) & 0xffff)
>
diff mbox

Patch

diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
index db6b197..2691cfb 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
@@ -849,7 +849,7 @@  static int fe_poll_rx(struct napi_struct *napi, int budget,
 
 		dma_unmap_single(&netdev->dev, trxd.rxd1,
 				ring->rx_buf_size, DMA_FROM_DEVICE);
-		pktlen = RX_DMA_PLEN0(trxd.rxd2);
+		pktlen = RX_DMA_GET_PLEN0(trxd.rxd2);
 		skb->dev = netdev;
 		skb_put(skb, pktlen);
 		if (trxd.rxd4 & checksum_bit) {
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
index 78e04b0..51b087c 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
@@ -310,7 +310,8 @@  enum fe_work_flag {
 /* rxd2 */
 #define RX_DMA_DONE		BIT(31)
 #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)
 /* rxd3 */
 #define RX_DMA_TPID(_x)		(((_x) >> 16) & 0xffff)