aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/cns3xxx/files
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/cns3xxx/files')
-rw-r--r--target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c6
-rw-r--r--target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c38
2 files changed, 13 insertions, 31 deletions
diff --git a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
index f98eebccd6..eade8f683d 100644
--- a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
+++ b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
@@ -389,7 +389,7 @@ static struct plat_serial8250_port laguna_uart_data[] = {
.mapbase = (CNS3XXX_UART0_BASE),
.irq = IRQ_CNS3XXX_UART0,
.iotype = UPIO_MEM,
- .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP,
+ .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_IOREMAP,
.regshift = 2,
.uartclk = 24000000,
.type = PORT_16550A,
@@ -397,7 +397,7 @@ static struct plat_serial8250_port laguna_uart_data[] = {
.mapbase = (CNS3XXX_UART1_BASE),
.irq = IRQ_CNS3XXX_UART1,
.iotype = UPIO_MEM,
- .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP,
+ .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_IOREMAP,
.regshift = 2,
.uartclk = 24000000,
.type = PORT_16550A,
@@ -405,7 +405,7 @@ static struct plat_serial8250_port laguna_uart_data[] = {
.mapbase = (CNS3XXX_UART2_BASE),
.irq = IRQ_CNS3XXX_UART2,
.iotype = UPIO_MEM,
- .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_NO_TXEN_TEST | UPF_IOREMAP,
+ .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE | UPF_IOREMAP,
.regshift = 2,
.uartclk = 24000000,
.type = PORT_16550A,
diff --git a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
index 51b01876ef..07c9dbc048 100644
--- a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
+++ b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
@@ -712,26 +712,20 @@ static int eth_poll(struct napi_struct *napi, int budget)
}
rx_ring->cur_index = i;
- if (!received) {
- napi_complete(napi);
- enable_irq(sw->rx_irq);
- budget = 0;
- /* If 1 or more frames came in during IRQ enable, re-schedule */
- if (rx_ring->desc[i].cown)
- eth_schedule_poll(sw);
+ cns3xxx_alloc_rx_buf(sw, received);
+ wmb();
+ enable_rx_dma(sw);
+
+ if (received < budget && napi_complete_done(napi, received)) {
+ enable_irq(sw->rx_irq);
}
spin_lock_bh(&tx_lock);
eth_complete_tx(sw);
spin_unlock_bh(&tx_lock);
- cns3xxx_alloc_rx_buf(sw, received);
-
- wmb();
- enable_rx_dma(sw);
-
- return budget;
+ return received;
}
static void eth_set_desc(struct sw *sw, struct _tx_ring *tx_ring, int index,
@@ -856,18 +850,6 @@ static void cns3xxx_get_drvinfo(struct net_device *dev,
strcpy(info->bus_info, "internal");
}
-static int cns3xxx_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
- struct port *port = netdev_priv(dev);
- return phy_ethtool_gset(port->phydev, cmd);
-}
-
-static int cns3xxx_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
- struct port *port = netdev_priv(dev);
- return phy_ethtool_sset(port->phydev, cmd);
-}
-
static int cns3xxx_nway_reset(struct net_device *dev)
{
struct port *port = netdev_priv(dev);
@@ -876,8 +858,8 @@ static int cns3xxx_nway_reset(struct net_device *dev)
static struct ethtool_ops cns3xxx_ethtool_ops = {
.get_drvinfo = cns3xxx_get_drvinfo,
- .get_settings = cns3xxx_get_settings,
- .set_settings = cns3xxx_set_settings,
+ .get_link_ksettings = phy_ethtool_get_link_ksettings,
+ .set_link_ksettings = phy_ethtool_set_link_ksettings,
.nway_reset = cns3xxx_nway_reset,
.get_link = ethtool_op_get_link,
};
@@ -1177,7 +1159,7 @@ static int eth_init_one(struct platform_device *pdev)
goto err_remove_mdio;
}
- strcpy(napi_dev->name, "switch%d");
+ strcpy(napi_dev->name, "cns3xxx_eth");
napi_dev->features = NETIF_F_IP_CSUM | NETIF_F_SG | NETIF_F_FRAGLIST;
SET_NETDEV_DEV(napi_dev, &pdev->dev);