Loading drivers/net/ibm_emac/ibm_emac_core.c +29 −9 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ */ #define DRV_NAME "emac" #define DRV_VERSION "3.53" #define DRV_VERSION "3.54" #define DRV_DESC "PPC 4xx OCP EMAC driver" MODULE_DESCRIPTION(DRV_DESC); Loading Loading @@ -158,6 +158,14 @@ static inline void emac_report_timeout_error(struct ocp_enet_private *dev, #define PHY_POLL_LINK_ON HZ #define PHY_POLL_LINK_OFF (HZ / 5) /* Graceful stop timeouts in us. * We should allow up to 1 frame time (full-duplex, ignoring collisions) */ #define STOP_TIMEOUT_10 1230 #define STOP_TIMEOUT_100 124 #define STOP_TIMEOUT_1000 13 #define STOP_TIMEOUT_1000_JUMBO 73 /* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */ static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = { "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum", Loading Loading @@ -222,10 +230,12 @@ static void emac_tx_disable(struct ocp_enet_private *dev) r = in_be32(&p->mr0); if (r & EMAC_MR0_TXE) { int n = 300; int n = dev->stop_timeout; out_be32(&p->mr0, r & ~EMAC_MR0_TXE); while (!(in_be32(&p->mr0) & EMAC_MR0_TXI) && n) while (!(in_be32(&p->mr0) & EMAC_MR0_TXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "TX disable timeout"); } Loading @@ -248,9 +258,11 @@ static void emac_rx_enable(struct ocp_enet_private *dev) if (!(r & EMAC_MR0_RXE)) { if (unlikely(!(r & EMAC_MR0_RXI))) { /* Wait if previous async disable is still in progress */ int n = 100; while (!(r = in_be32(&p->mr0) & EMAC_MR0_RXI) && n) int n = dev->stop_timeout; while (!(r = in_be32(&p->mr0) & EMAC_MR0_RXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "RX disable timeout"); Loading @@ -273,10 +285,12 @@ static void emac_rx_disable(struct ocp_enet_private *dev) r = in_be32(&p->mr0); if (r & EMAC_MR0_RXE) { int n = 300; int n = dev->stop_timeout; out_be32(&p->mr0, r & ~EMAC_MR0_RXE); while (!(in_be32(&p->mr0) & EMAC_MR0_RXI) && n) while (!(in_be32(&p->mr0) & EMAC_MR0_RXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "RX disable timeout"); } Loading Loading @@ -395,6 +409,7 @@ static int emac_configure(struct ocp_enet_private *dev) r = EMAC_MR1_BASE(emac_opb_mhz()) | EMAC_MR1_VLE | EMAC_MR1_IST; if (dev->phy.duplex == DUPLEX_FULL) r |= EMAC_MR1_FDE; dev->stop_timeout = STOP_TIMEOUT_10; switch (dev->phy.speed) { case SPEED_1000: if (emac_phy_gpcs(dev->phy.mode)) { Loading @@ -410,11 +425,15 @@ static int emac_configure(struct ocp_enet_private *dev) r |= EMAC_MR1_RFS_16K; gige = 1; if (dev->ndev->mtu > ETH_DATA_LEN) if (dev->ndev->mtu > ETH_DATA_LEN) { r |= EMAC_MR1_JPSM; dev->stop_timeout = STOP_TIMEOUT_1000_JUMBO; } else dev->stop_timeout = STOP_TIMEOUT_1000; break; case SPEED_100: r |= EMAC_MR1_MF_100; dev->stop_timeout = STOP_TIMEOUT_100; /* Fall through */ default: r |= EMAC_MR1_RFS_4K; Loading Loading @@ -2048,6 +2067,7 @@ static int __init emac_probe(struct ocp_device *ocpdev) dev->phy.duplex = DUPLEX_FULL; dev->phy.autoneg = AUTONEG_DISABLE; dev->phy.pause = dev->phy.asym_pause = 0; dev->stop_timeout = STOP_TIMEOUT_100; init_timer(&dev->link_timer); dev->link_timer.function = emac_link_timer; dev->link_timer.data = (unsigned long)dev; Loading drivers/net/ibm_emac/ibm_emac_core.h +2 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,8 @@ struct ocp_enet_private { struct timer_list link_timer; int reset_failed; int stop_timeout; /* in us */ struct ibm_emac_error_stats estats; struct net_device_stats nstats; Loading drivers/net/jazzsonic.c +2 −2 Original line number Diff line number Diff line Loading @@ -296,7 +296,7 @@ static int __init jazz_sonic_init_module(void) } jazz_sonic_device = platform_device_alloc(jazz_sonic_string, 0); if (!jazz_sonnic_device) if (!jazz_sonic_device) goto out_unregister; if (platform_device_add(jazz_sonic_device)) { Loading @@ -307,7 +307,7 @@ static int __init jazz_sonic_init_module(void) return 0; out_unregister: driver_unregister(&jazz_sonic_driver); platform_driver_unregister(&jazz_sonic_driver); return -ENOMEM; } Loading drivers/net/mipsnet.h +5 −25 Original line number Diff line number Diff line // // <COPYRIGHT CLASS="1B" YEAR="2005"> // Unpublished work (c) MIPS Technologies, Inc. All rights reserved. // Unpublished rights reserved under the copyright laws of the U.S.A. and // other countries. // // PROPRIETARY / SECRET CONFIDENTIAL INFORMATION OF MIPS TECHNOLOGIES, INC. // FOR INTERNAL USE ONLY. // // Under no circumstances (contract or otherwise) may this information be // disclosed to, or copied, modified or used by anyone other than employees // or contractors of MIPS Technologies having a need to know. // </COPYRIGHT> // //++ // File: MIPS_Net.h // // Description: // The definition of the emulated MIPSNET device's interface. // // Notes: This include file needs to work from a Linux device drivers. // //-- // /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. */ #ifndef __MIPSNET_H #define __MIPSNET_H Loading drivers/net/pcmcia/fmvj18x_cs.c +11 −21 Original line number Diff line number Diff line Loading @@ -131,10 +131,9 @@ typedef struct local_info_t { u_short tx_queue_len; cardtype_t cardtype; u_short sent; u_char mc_filter[8]; } local_info_t; #define MC_FILTERBREAK 8 #define MC_FILTERBREAK 64 /*====================================================================*/ /* Loading Loading @@ -1005,15 +1004,8 @@ static void fjn_reset(struct net_device *dev) for (i = 0; i < 6; i++) outb(dev->dev_addr[i], ioaddr + NODE_ID + i); /* Switch to bank 1 */ if (lp->cardtype == MBH10302) outb(BANK_1, ioaddr + CONFIG_1); else outb(BANK_1U, ioaddr + CONFIG_1); /* set the multicast table to accept none. */ for (i = 0; i < 8; i++) outb(0x00, ioaddr + MAR_ADR + i); /* (re)initialize the multicast table */ set_rx_mode(dev); /* Switch to bank 2 (runtime mode) */ if (lp->cardtype == MBH10302) Loading Loading @@ -1264,11 +1256,11 @@ static struct net_device_stats *fjn_get_stats(struct net_device *dev) static void set_rx_mode(struct net_device *dev) { kio_addr_t ioaddr = dev->base_addr; struct local_info_t *lp = netdev_priv(dev); u_char mc_filter[8]; /* Multicast hash filter */ u_long flags; int i; int saved_bank; int saved_config_0 = inb(ioaddr + CONFIG_0); local_irq_save(flags); Loading Loading @@ -1306,15 +1298,13 @@ static void set_rx_mode(struct net_device *dev) outb(2, ioaddr + RX_MODE); /* Use normal mode. */ } if (memcmp(mc_filter, lp->mc_filter, sizeof(mc_filter))) { int saved_bank = inb(ioaddr + CONFIG_1); /* Switch to bank 1 and set the multicast table. */ saved_bank = inb(ioaddr + CONFIG_1); outb(0xe4, ioaddr + CONFIG_1); for (i = 0; i < 8; i++) outb(mc_filter[i], ioaddr + MAR_ADR + i); memcpy(lp->mc_filter, mc_filter, sizeof(mc_filter)); outb(saved_bank, ioaddr + CONFIG_1); } outb(saved_config_0, ioaddr + CONFIG_0); Loading Loading
drivers/net/ibm_emac/ibm_emac_core.c +29 −9 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ */ #define DRV_NAME "emac" #define DRV_VERSION "3.53" #define DRV_VERSION "3.54" #define DRV_DESC "PPC 4xx OCP EMAC driver" MODULE_DESCRIPTION(DRV_DESC); Loading Loading @@ -158,6 +158,14 @@ static inline void emac_report_timeout_error(struct ocp_enet_private *dev, #define PHY_POLL_LINK_ON HZ #define PHY_POLL_LINK_OFF (HZ / 5) /* Graceful stop timeouts in us. * We should allow up to 1 frame time (full-duplex, ignoring collisions) */ #define STOP_TIMEOUT_10 1230 #define STOP_TIMEOUT_100 124 #define STOP_TIMEOUT_1000 13 #define STOP_TIMEOUT_1000_JUMBO 73 /* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */ static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = { "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum", Loading Loading @@ -222,10 +230,12 @@ static void emac_tx_disable(struct ocp_enet_private *dev) r = in_be32(&p->mr0); if (r & EMAC_MR0_TXE) { int n = 300; int n = dev->stop_timeout; out_be32(&p->mr0, r & ~EMAC_MR0_TXE); while (!(in_be32(&p->mr0) & EMAC_MR0_TXI) && n) while (!(in_be32(&p->mr0) & EMAC_MR0_TXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "TX disable timeout"); } Loading @@ -248,9 +258,11 @@ static void emac_rx_enable(struct ocp_enet_private *dev) if (!(r & EMAC_MR0_RXE)) { if (unlikely(!(r & EMAC_MR0_RXI))) { /* Wait if previous async disable is still in progress */ int n = 100; while (!(r = in_be32(&p->mr0) & EMAC_MR0_RXI) && n) int n = dev->stop_timeout; while (!(r = in_be32(&p->mr0) & EMAC_MR0_RXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "RX disable timeout"); Loading @@ -273,10 +285,12 @@ static void emac_rx_disable(struct ocp_enet_private *dev) r = in_be32(&p->mr0); if (r & EMAC_MR0_RXE) { int n = 300; int n = dev->stop_timeout; out_be32(&p->mr0, r & ~EMAC_MR0_RXE); while (!(in_be32(&p->mr0) & EMAC_MR0_RXI) && n) while (!(in_be32(&p->mr0) & EMAC_MR0_RXI) && n) { udelay(1); --n; } if (unlikely(!n)) emac_report_timeout_error(dev, "RX disable timeout"); } Loading Loading @@ -395,6 +409,7 @@ static int emac_configure(struct ocp_enet_private *dev) r = EMAC_MR1_BASE(emac_opb_mhz()) | EMAC_MR1_VLE | EMAC_MR1_IST; if (dev->phy.duplex == DUPLEX_FULL) r |= EMAC_MR1_FDE; dev->stop_timeout = STOP_TIMEOUT_10; switch (dev->phy.speed) { case SPEED_1000: if (emac_phy_gpcs(dev->phy.mode)) { Loading @@ -410,11 +425,15 @@ static int emac_configure(struct ocp_enet_private *dev) r |= EMAC_MR1_RFS_16K; gige = 1; if (dev->ndev->mtu > ETH_DATA_LEN) if (dev->ndev->mtu > ETH_DATA_LEN) { r |= EMAC_MR1_JPSM; dev->stop_timeout = STOP_TIMEOUT_1000_JUMBO; } else dev->stop_timeout = STOP_TIMEOUT_1000; break; case SPEED_100: r |= EMAC_MR1_MF_100; dev->stop_timeout = STOP_TIMEOUT_100; /* Fall through */ default: r |= EMAC_MR1_RFS_4K; Loading Loading @@ -2048,6 +2067,7 @@ static int __init emac_probe(struct ocp_device *ocpdev) dev->phy.duplex = DUPLEX_FULL; dev->phy.autoneg = AUTONEG_DISABLE; dev->phy.pause = dev->phy.asym_pause = 0; dev->stop_timeout = STOP_TIMEOUT_100; init_timer(&dev->link_timer); dev->link_timer.function = emac_link_timer; dev->link_timer.data = (unsigned long)dev; Loading
drivers/net/ibm_emac/ibm_emac_core.h +2 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,8 @@ struct ocp_enet_private { struct timer_list link_timer; int reset_failed; int stop_timeout; /* in us */ struct ibm_emac_error_stats estats; struct net_device_stats nstats; Loading
drivers/net/jazzsonic.c +2 −2 Original line number Diff line number Diff line Loading @@ -296,7 +296,7 @@ static int __init jazz_sonic_init_module(void) } jazz_sonic_device = platform_device_alloc(jazz_sonic_string, 0); if (!jazz_sonnic_device) if (!jazz_sonic_device) goto out_unregister; if (platform_device_add(jazz_sonic_device)) { Loading @@ -307,7 +307,7 @@ static int __init jazz_sonic_init_module(void) return 0; out_unregister: driver_unregister(&jazz_sonic_driver); platform_driver_unregister(&jazz_sonic_driver); return -ENOMEM; } Loading
drivers/net/mipsnet.h +5 −25 Original line number Diff line number Diff line // // <COPYRIGHT CLASS="1B" YEAR="2005"> // Unpublished work (c) MIPS Technologies, Inc. All rights reserved. // Unpublished rights reserved under the copyright laws of the U.S.A. and // other countries. // // PROPRIETARY / SECRET CONFIDENTIAL INFORMATION OF MIPS TECHNOLOGIES, INC. // FOR INTERNAL USE ONLY. // // Under no circumstances (contract or otherwise) may this information be // disclosed to, or copied, modified or used by anyone other than employees // or contractors of MIPS Technologies having a need to know. // </COPYRIGHT> // //++ // File: MIPS_Net.h // // Description: // The definition of the emulated MIPSNET device's interface. // // Notes: This include file needs to work from a Linux device drivers. // //-- // /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. */ #ifndef __MIPSNET_H #define __MIPSNET_H Loading
drivers/net/pcmcia/fmvj18x_cs.c +11 −21 Original line number Diff line number Diff line Loading @@ -131,10 +131,9 @@ typedef struct local_info_t { u_short tx_queue_len; cardtype_t cardtype; u_short sent; u_char mc_filter[8]; } local_info_t; #define MC_FILTERBREAK 8 #define MC_FILTERBREAK 64 /*====================================================================*/ /* Loading Loading @@ -1005,15 +1004,8 @@ static void fjn_reset(struct net_device *dev) for (i = 0; i < 6; i++) outb(dev->dev_addr[i], ioaddr + NODE_ID + i); /* Switch to bank 1 */ if (lp->cardtype == MBH10302) outb(BANK_1, ioaddr + CONFIG_1); else outb(BANK_1U, ioaddr + CONFIG_1); /* set the multicast table to accept none. */ for (i = 0; i < 8; i++) outb(0x00, ioaddr + MAR_ADR + i); /* (re)initialize the multicast table */ set_rx_mode(dev); /* Switch to bank 2 (runtime mode) */ if (lp->cardtype == MBH10302) Loading Loading @@ -1264,11 +1256,11 @@ static struct net_device_stats *fjn_get_stats(struct net_device *dev) static void set_rx_mode(struct net_device *dev) { kio_addr_t ioaddr = dev->base_addr; struct local_info_t *lp = netdev_priv(dev); u_char mc_filter[8]; /* Multicast hash filter */ u_long flags; int i; int saved_bank; int saved_config_0 = inb(ioaddr + CONFIG_0); local_irq_save(flags); Loading Loading @@ -1306,15 +1298,13 @@ static void set_rx_mode(struct net_device *dev) outb(2, ioaddr + RX_MODE); /* Use normal mode. */ } if (memcmp(mc_filter, lp->mc_filter, sizeof(mc_filter))) { int saved_bank = inb(ioaddr + CONFIG_1); /* Switch to bank 1 and set the multicast table. */ saved_bank = inb(ioaddr + CONFIG_1); outb(0xe4, ioaddr + CONFIG_1); for (i = 0; i < 8; i++) outb(mc_filter[i], ioaddr + MAR_ADR + i); memcpy(lp->mc_filter, mc_filter, sizeof(mc_filter)); outb(saved_bank, ioaddr + CONFIG_1); } outb(saved_config_0, ioaddr + CONFIG_0); Loading