| 1 | From ef581388c45dbc48f7bbe050e87deb1e3c63a698 Mon Sep 17 00:00:00 2001 |
| 2 | From: Jonas Gorski <jonas.gorski@gmail.com> |
| 3 | Date: Tue, 10 Jul 2012 10:52:02 +0200 |
| 4 | Subject: [PATCH 35/84] bcm63xx_enet: store is_sw in a variable instead of checking the cpuid |
| 5 | |
| 6 | Reduces the number of changes needed for making enetsw work on new |
| 7 | chips. |
| 8 | --- |
| 9 | drivers/net/ethernet/broadcom/bcm63xx_enet.c | 7 +++++-- |
| 10 | drivers/net/ethernet/broadcom/bcm63xx_enet.h | 10 ++-------- |
| 11 | 2 files changed, 7 insertions(+), 10 deletions(-) |
| 12 | |
| 13 | --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| 14 | +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| 15 | @@ -364,7 +364,7 @@ static int bcm_enet_receive_queue(struct |
| 16 | } |
| 17 | |
| 18 | /* recycle packet if it's marked as bad */ |
| 19 | - if (!bcm_enet_is_sw(priv) && |
| 20 | + if (!priv->enet_is_sw && |
| 21 | unlikely(len_stat & DMADESC_ERR_MASK)) { |
| 22 | dev->stats.rx_errors++; |
| 23 | |
| 24 | @@ -597,7 +597,7 @@ static int bcm_enet_start_xmit(struct sk |
| 25 | } |
| 26 | |
| 27 | /* pad small packets sent on a switch device */ |
| 28 | - if (bcm_enet_is_sw(priv) && skb->len < 64) { |
| 29 | + if (priv->enet_is_sw && skb->len < 64) { |
| 30 | int needed = 64 - skb->len; |
| 31 | char *data; |
| 32 | |
| 33 | @@ -1700,6 +1700,8 @@ static int __devinit bcm_enet_probe(stru |
| 34 | return -ENOMEM; |
| 35 | priv = netdev_priv(dev); |
| 36 | |
| 37 | + priv->enet_is_sw = false; |
| 38 | + |
| 39 | ret = compute_hw_mtu(priv, dev->mtu); |
| 40 | if (ret) |
| 41 | goto out; |
| 42 | @@ -2725,6 +2727,7 @@ static int __devinit bcm_enetsw_probe(st |
| 43 | memset(priv, 0, sizeof(*priv)); |
| 44 | |
| 45 | /* initialize default and fetch platform data */ |
| 46 | + priv->enet_is_sw = true; |
| 47 | priv->irq_rx = irq_rx; |
| 48 | priv->irq_tx = irq_tx; |
| 49 | priv->rx_ring_size = BCMENET_DEF_RX_DESC; |
| 50 | --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.h |
| 51 | +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.h |
| 52 | @@ -353,6 +353,8 @@ struct bcm_enet_priv { |
| 53 | /* maximum hardware transmit/receive size */ |
| 54 | unsigned int hw_mtu; |
| 55 | |
| 56 | + bool enet_is_sw; |
| 57 | + |
| 58 | /* port mapping for switch devices */ |
| 59 | int num_ports; |
| 60 | struct bcm63xx_enetsw_port used_ports[ENETSW_MAX_PORT]; |
| 61 | @@ -363,12 +365,4 @@ struct bcm_enet_priv { |
| 62 | spinlock_t enetsw_mdio_lock; |
| 63 | }; |
| 64 | |
| 65 | -static inline int bcm_enet_is_sw(struct bcm_enet_priv *priv) |
| 66 | -{ |
| 67 | - if (BCMCPU_IS_6368()) |
| 68 | - return 1; |
| 69 | - else |
| 70 | - return 0; |
| 71 | -} |
| 72 | - |
| 73 | #endif /* ! BCM63XX_ENET_H_ */ |
| 74 | |