diff options
Diffstat (limited to 'drivers/net/ethernet/nxp/lpc_eth.c')
-rw-r--r-- | drivers/net/ethernet/nxp/lpc_eth.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c index 083d6715335..e7d2496a473 100644 --- a/drivers/net/ethernet/nxp/lpc_eth.c +++ b/drivers/net/ethernet/nxp/lpc_eth.c | |||
@@ -52,7 +52,6 @@ | |||
52 | 52 | ||
53 | #define MODNAME "lpc-eth" | 53 | #define MODNAME "lpc-eth" |
54 | #define DRV_VERSION "1.00" | 54 | #define DRV_VERSION "1.00" |
55 | #define PHYDEF_ADDR 0x00 | ||
56 | 55 | ||
57 | #define ENET_MAXF_SIZE 1536 | 56 | #define ENET_MAXF_SIZE 1536 |
58 | #define ENET_RX_DESC 48 | 57 | #define ENET_RX_DESC 48 |
@@ -416,9 +415,6 @@ static bool use_iram_for_net(struct device *dev) | |||
416 | #define TXDESC_CONTROL_LAST (1 << 30) | 415 | #define TXDESC_CONTROL_LAST (1 << 30) |
417 | #define TXDESC_CONTROL_INT (1 << 31) | 416 | #define TXDESC_CONTROL_INT (1 << 31) |
418 | 417 | ||
419 | static int lpc_eth_hard_start_xmit(struct sk_buff *skb, | ||
420 | struct net_device *ndev); | ||
421 | |||
422 | /* | 418 | /* |
423 | * Structure of a TX/RX descriptors and RX status | 419 | * Structure of a TX/RX descriptors and RX status |
424 | */ | 420 | */ |
@@ -440,7 +436,7 @@ struct netdata_local { | |||
440 | spinlock_t lock; | 436 | spinlock_t lock; |
441 | void __iomem *net_base; | 437 | void __iomem *net_base; |
442 | u32 msg_enable; | 438 | u32 msg_enable; |
443 | struct sk_buff *skb[ENET_TX_DESC]; | 439 | unsigned int skblen[ENET_TX_DESC]; |
444 | unsigned int last_tx_idx; | 440 | unsigned int last_tx_idx; |
445 | unsigned int num_used_tx_buffs; | 441 | unsigned int num_used_tx_buffs; |
446 | struct mii_bus *mii_bus; | 442 | struct mii_bus *mii_bus; |
@@ -903,12 +899,11 @@ err_out: | |||
903 | static void __lpc_handle_xmit(struct net_device *ndev) | 899 | static void __lpc_handle_xmit(struct net_device *ndev) |
904 | { | 900 | { |
905 | struct netdata_local *pldat = netdev_priv(ndev); | 901 | struct netdata_local *pldat = netdev_priv(ndev); |
906 | struct sk_buff *skb; | ||
907 | u32 txcidx, *ptxstat, txstat; | 902 | u32 txcidx, *ptxstat, txstat; |
908 | 903 | ||
909 | txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base)); | 904 | txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base)); |
910 | while (pldat->last_tx_idx != txcidx) { | 905 | while (pldat->last_tx_idx != txcidx) { |
911 | skb = pldat->skb[pldat->last_tx_idx]; | 906 | unsigned int skblen = pldat->skblen[pldat->last_tx_idx]; |
912 | 907 | ||
913 | /* A buffer is available, get buffer status */ | 908 | /* A buffer is available, get buffer status */ |
914 | ptxstat = &pldat->tx_stat_v[pldat->last_tx_idx]; | 909 | ptxstat = &pldat->tx_stat_v[pldat->last_tx_idx]; |
@@ -945,9 +940,8 @@ static void __lpc_handle_xmit(struct net_device *ndev) | |||
945 | } else { | 940 | } else { |
946 | /* Update stats */ | 941 | /* Update stats */ |
947 | ndev->stats.tx_packets++; | 942 | ndev->stats.tx_packets++; |
948 | ndev->stats.tx_bytes += skb->len; | 943 | ndev->stats.tx_bytes += skblen; |
949 | } | 944 | } |
950 | dev_kfree_skb_irq(skb); | ||
951 | 945 | ||
952 | txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base)); | 946 | txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base)); |
953 | } | 947 | } |
@@ -1132,7 +1126,7 @@ static int lpc_eth_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
1132 | memcpy(pldat->tx_buff_v + txidx * ENET_MAXF_SIZE, skb->data, len); | 1126 | memcpy(pldat->tx_buff_v + txidx * ENET_MAXF_SIZE, skb->data, len); |
1133 | 1127 | ||
1134 | /* Save the buffer and increment the buffer counter */ | 1128 | /* Save the buffer and increment the buffer counter */ |
1135 | pldat->skb[txidx] = skb; | 1129 | pldat->skblen[txidx] = len; |
1136 | pldat->num_used_tx_buffs++; | 1130 | pldat->num_used_tx_buffs++; |
1137 | 1131 | ||
1138 | /* Start transmit */ | 1132 | /* Start transmit */ |
@@ -1147,6 +1141,7 @@ static int lpc_eth_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
1147 | 1141 | ||
1148 | spin_unlock_irq(&pldat->lock); | 1142 | spin_unlock_irq(&pldat->lock); |
1149 | 1143 | ||
1144 | dev_kfree_skb(skb); | ||
1150 | return NETDEV_TX_OK; | 1145 | return NETDEV_TX_OK; |
1151 | } | 1146 | } |
1152 | 1147 | ||
@@ -1442,7 +1437,7 @@ static int lpc_eth_drv_probe(struct platform_device *pdev) | |||
1442 | res->start); | 1437 | res->start); |
1443 | netdev_dbg(ndev, "IO address size :%d\n", | 1438 | netdev_dbg(ndev, "IO address size :%d\n", |
1444 | res->end - res->start + 1); | 1439 | res->end - res->start + 1); |
1445 | netdev_err(ndev, "IO address (mapped) :0x%p\n", | 1440 | netdev_dbg(ndev, "IO address (mapped) :0x%p\n", |
1446 | pldat->net_base); | 1441 | pldat->net_base); |
1447 | netdev_dbg(ndev, "IRQ number :%d\n", ndev->irq); | 1442 | netdev_dbg(ndev, "IRQ number :%d\n", ndev->irq); |
1448 | netdev_dbg(ndev, "DMA buffer size :%d\n", pldat->dma_buff_size); | 1443 | netdev_dbg(ndev, "DMA buffer size :%d\n", pldat->dma_buff_size); |