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:
parent
1aab21df9f
commit
6b4985b105
2 changed files with 3 additions and 2 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue