aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
diff options
context:
space:
mode:
authorChuanhong Guo <gch981213@gmail.com>2020-04-09 17:59:09 +0800
committerChuanhong Guo <gch981213@gmail.com>2020-04-12 22:27:18 +0800
commite29e2a94845141e5c9758351c7dffa1145c5d3b5 (patch)
tree82f9de4d08110fed8fa4fb770de97ef6bfbb1908 /target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
parent0b68d081eb598c1a5a1cfb13d1494d9228c67b05 (diff)
downloadupstream-e29e2a94845141e5c9758351c7dffa1145c5d3b5.tar.gz
upstream-e29e2a94845141e5c9758351c7dffa1145c5d3b5.tar.bz2
upstream-e29e2a94845141e5c9758351c7dffa1145c5d3b5.zip
ramips: ralink-eth: add support for 5.4 kernel
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Diffstat (limited to 'target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c')
-rw-r--r--target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
index a088fe7fd5..7f09bb10de 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c
@@ -715,11 +715,19 @@ next_frag:
/* TX SG offload */
nr_frags = skb_shinfo(skb)->nr_frags;
for (i = 0; i < nr_frags; i++) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
struct skb_frag_struct *frag;
+#else
+ skb_frag_t *frag;
+#endif
frag = &skb_shinfo(skb)->frags[i];
if (fe_tx_dma_map_page(ring, &st, skb_frag_page(frag),
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
frag->page_offset, skb_frag_size(frag)))
+#else
+ skb_frag_off(frag), skb_frag_size(frag)))
+#endif
goto err_dma;
}
@@ -754,7 +762,11 @@ next_frag:
netif_wake_queue(dev);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)
if (netif_xmit_stopped(netdev_get_tx_queue(dev, 0)) || !head->xmit_more)
+#else
+ if (netif_xmit_stopped(netdev_get_tx_queue(dev, 0)) || !netdev_xmit_more())
+#endif
fe_reg_w32(ring->tx_next_idx, FE_REG_TX_CTX_IDX0);
return 0;
@@ -813,14 +825,22 @@ static inline int fe_cal_txd_req(struct sk_buff *skb)
{
struct sk_buff *head = skb;
int i, nfrags = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
struct skb_frag_struct *frag;
+#else
+ skb_frag_t *frag;
+#endif
next_frag:
nfrags++;
if (skb_is_gso(skb)) {
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
frag = &skb_shinfo(skb)->frags[i];
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
nfrags += DIV_ROUND_UP(frag->size, TX_DMA_BUF_LEN);
+#else
+ nfrags += DIV_ROUND_UP(skb_frag_size(frag), TX_DMA_BUF_LEN);
+#endif
}
} else {
nfrags += skb_shinfo(skb)->nr_frags;