From dff85d146373fb7d16f6b29b20bd91911ac0148c Mon Sep 17 00:00:00 2001 From: Anton Vorontsov Date: Thu, 13 Nov 2008 21:26:27 +0300 Subject: [PATCH] --- yaml --- r: 119079 b: refs/heads/master c: 18acfa2597d57c19249346d130fc3334244557b4 h: refs/heads/master i: 119077: 15caebe3c4d2a857538abe2e2be79f102d5cc80d 119075: e7aef13030ef4ab9e81fb7de7d6c049cba3ce483 119071: 54411f9f0f9e294c77d07baccab0d1122066d501 v: v3 --- [refs] | 2 +- trunk/drivers/net/niu.c | 290 +-------------------------- trunk/drivers/net/niu.h | 13 -- trunk/drivers/net/ucc_geth_ethtool.c | 6 +- trunk/include/linux/lockdep.h | 5 +- trunk/include/net/sock.h | 2 +- trunk/net/core/scm.c | 2 + trunk/net/core/sock.c | 2 + 8 files changed, 19 insertions(+), 303 deletions(-) diff --git a/[refs] b/[refs] index 8ad08ca0ab4c..67126ad40eb9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5421ae0153b4ba0469967cfd8de96144e3bf3979 +refs/heads/master: 18acfa2597d57c19249346d130fc3334244557b4 diff --git a/trunk/drivers/net/niu.c b/trunk/drivers/net/niu.c index 1b6f548c4411..d8463b1c3df3 100644 --- a/trunk/drivers/net/niu.c +++ b/trunk/drivers/net/niu.c @@ -33,8 +33,8 @@ #define DRV_MODULE_NAME "niu" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "1.0" -#define DRV_MODULE_RELDATE "Nov 14, 2008" +#define DRV_MODULE_VERSION "0.9" +#define DRV_MODULE_RELDATE "May 4, 2008" static char version[] __devinitdata = DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; @@ -406,7 +406,7 @@ static int esr2_set_rx_cfg(struct niu *np, unsigned long channel, u32 val) } /* Mode is always 10G fiber. */ -static int serdes_init_niu_10g_fiber(struct niu *np) +static int serdes_init_niu(struct niu *np) { struct niu_link_config *lp = &np->link_config; u32 tx_cfg, rx_cfg; @@ -443,223 +443,6 @@ static int serdes_init_niu_10g_fiber(struct niu *np) return 0; } -static int serdes_init_niu_1g_serdes(struct niu *np) -{ - struct niu_link_config *lp = &np->link_config; - u16 pll_cfg, pll_sts; - int max_retry = 100; - u64 sig, mask, val; - u32 tx_cfg, rx_cfg; - unsigned long i; - int err; - - tx_cfg = (PLL_TX_CFG_ENTX | PLL_TX_CFG_SWING_1375MV | - PLL_TX_CFG_RATE_HALF); - rx_cfg = (PLL_RX_CFG_ENRX | PLL_RX_CFG_TERM_0P8VDDT | - PLL_RX_CFG_ALIGN_ENA | PLL_RX_CFG_LOS_LTHRESH | - PLL_RX_CFG_RATE_HALF); - - if (np->port == 0) - rx_cfg |= PLL_RX_CFG_EQ_LP_ADAPTIVE; - - if (lp->loopback_mode == LOOPBACK_PHY) { - u16 test_cfg = PLL_TEST_CFG_LOOPBACK_CML_DIS; - - mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_TEST_CFG_L, test_cfg); - - tx_cfg |= PLL_TX_CFG_ENTEST; - rx_cfg |= PLL_RX_CFG_ENTEST; - } - - /* Initialize PLL for 1G */ - pll_cfg = (PLL_CFG_ENPLL | PLL_CFG_MPY_8X); - - err = mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_CFG_L, pll_cfg); - if (err) { - dev_err(np->device, PFX "NIU Port %d " - "serdes_init_niu_1g_serdes: " - "mdio write to ESR2_TI_PLL_CFG_L failed", np->port); - return err; - } - - pll_sts = PLL_CFG_ENPLL; - - err = mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_STS_L, pll_sts); - if (err) { - dev_err(np->device, PFX "NIU Port %d " - "serdes_init_niu_1g_serdes: " - "mdio write to ESR2_TI_PLL_STS_L failed", np->port); - return err; - } - - udelay(200); - - /* Initialize all 4 lanes of the SERDES. */ - for (i = 0; i < 4; i++) { - err = esr2_set_tx_cfg(np, i, tx_cfg); - if (err) - return err; - } - - for (i = 0; i < 4; i++) { - err = esr2_set_rx_cfg(np, i, rx_cfg); - if (err) - return err; - } - - switch (np->port) { - case 0: - val = (ESR_INT_SRDY0_P0 | ESR_INT_DET0_P0); - mask = val; - break; - - case 1: - val = (ESR_INT_SRDY0_P1 | ESR_INT_DET0_P1); - mask = val; - break; - - default: - return -EINVAL; - } - - while (max_retry--) { - sig = nr64(ESR_INT_SIGNALS); - if ((sig & mask) == val) - break; - - mdelay(500); - } - - if ((sig & mask) != val) { - dev_err(np->device, PFX "Port %u signal bits [%08x] are not " - "[%08x]\n", np->port, (int) (sig & mask), (int) val); - return -ENODEV; - } - - return 0; -} - -static int serdes_init_niu_10g_serdes(struct niu *np) -{ - struct niu_link_config *lp = &np->link_config; - u32 tx_cfg, rx_cfg, pll_cfg, pll_sts; - int max_retry = 100; - u64 sig, mask, val; - unsigned long i; - int err; - - tx_cfg = (PLL_TX_CFG_ENTX | PLL_TX_CFG_SWING_1375MV); - rx_cfg = (PLL_RX_CFG_ENRX | PLL_RX_CFG_TERM_0P8VDDT | - PLL_RX_CFG_ALIGN_ENA | PLL_RX_CFG_LOS_LTHRESH | - PLL_RX_CFG_EQ_LP_ADAPTIVE); - - if (lp->loopback_mode == LOOPBACK_PHY) { - u16 test_cfg = PLL_TEST_CFG_LOOPBACK_CML_DIS; - - mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_TEST_CFG_L, test_cfg); - - tx_cfg |= PLL_TX_CFG_ENTEST; - rx_cfg |= PLL_RX_CFG_ENTEST; - } - - /* Initialize PLL for 10G */ - pll_cfg = (PLL_CFG_ENPLL | PLL_CFG_MPY_10X); - - err = mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_CFG_L, pll_cfg & 0xffff); - if (err) { - dev_err(np->device, PFX "NIU Port %d " - "serdes_init_niu_10g_serdes: " - "mdio write to ESR2_TI_PLL_CFG_L failed", np->port); - return err; - } - - pll_sts = PLL_CFG_ENPLL; - - err = mdio_write(np, np->port, NIU_ESR2_DEV_ADDR, - ESR2_TI_PLL_STS_L, pll_sts & 0xffff); - if (err) { - dev_err(np->device, PFX "NIU Port %d " - "serdes_init_niu_10g_serdes: " - "mdio write to ESR2_TI_PLL_STS_L failed", np->port); - return err; - } - - udelay(200); - - /* Initialize all 4 lanes of the SERDES. */ - for (i = 0; i < 4; i++) { - err = esr2_set_tx_cfg(np, i, tx_cfg); - if (err) - return err; - } - - for (i = 0; i < 4; i++) { - err = esr2_set_rx_cfg(np, i, rx_cfg); - if (err) - return err; - } - - /* check if serdes is ready */ - - switch (np->port) { - case 0: - mask = ESR_INT_SIGNALS_P0_BITS; - val = (ESR_INT_SRDY0_P0 | - ESR_INT_DET0_P0 | - ESR_INT_XSRDY_P0 | - ESR_INT_XDP_P0_CH3 | - ESR_INT_XDP_P0_CH2 | - ESR_INT_XDP_P0_CH1 | - ESR_INT_XDP_P0_CH0); - break; - - case 1: - mask = ESR_INT_SIGNALS_P1_BITS; - val = (ESR_INT_SRDY0_P1 | - ESR_INT_DET0_P1 | - ESR_INT_XSRDY_P1 | - ESR_INT_XDP_P1_CH3 | - ESR_INT_XDP_P1_CH2 | - ESR_INT_XDP_P1_CH1 | - ESR_INT_XDP_P1_CH0); - break; - - default: - return -EINVAL; - } - - while (max_retry--) { - sig = nr64(ESR_INT_SIGNALS); - if ((sig & mask) == val) - break; - - mdelay(500); - } - - if ((sig & mask) != val) { - pr_info(PFX "NIU Port %u signal bits [%08x] are not " - "[%08x] for 10G...trying 1G\n", - np->port, (int) (sig & mask), (int) val); - - /* 10G failed, try initializing at 1G */ - err = serdes_init_niu_1g_serdes(np); - if (!err) { - np->flags &= ~NIU_FLAGS_10G; - np->mac_xcvr = MAC_XCVR_PCS; - } else { - dev_err(np->device, PFX "Port %u 10G/1G SERDES " - "Link Failed \n", np->port); - return -ENODEV; - } - } - return 0; -} - static int esr_read_rxtx_ctrl(struct niu *np, unsigned long chan, u32 *val) { int err; @@ -2171,23 +1954,13 @@ static const struct niu_phy_ops phy_ops_10g_serdes = { .link_status = link_status_10g_serdes, }; -static const struct niu_phy_ops phy_ops_10g_serdes_niu = { - .serdes_init = serdes_init_niu_10g_serdes, - .link_status = link_status_10g_serdes, -}; - -static const struct niu_phy_ops phy_ops_1g_serdes_niu = { - .serdes_init = serdes_init_niu_1g_serdes, - .link_status = link_status_1g_serdes, -}; - static const struct niu_phy_ops phy_ops_1g_rgmii = { .xcvr_init = xcvr_init_1g_rgmii, .link_status = link_status_1g_rgmii, }; static const struct niu_phy_ops phy_ops_10g_fiber_niu = { - .serdes_init = serdes_init_niu_10g_fiber, + .serdes_init = serdes_init_niu, .xcvr_init = xcvr_init_10g, .link_status = link_status_10g, }; @@ -2225,21 +1998,11 @@ struct niu_phy_template { u32 phy_addr_base; }; -static const struct niu_phy_template phy_template_niu_10g_fiber = { +static const struct niu_phy_template phy_template_niu = { .ops = &phy_ops_10g_fiber_niu, .phy_addr_base = 16, }; -static const struct niu_phy_template phy_template_niu_10g_serdes = { - .ops = &phy_ops_10g_serdes_niu, - .phy_addr_base = 0, -}; - -static const struct niu_phy_template phy_template_niu_1g_serdes = { - .ops = &phy_ops_1g_serdes_niu, - .phy_addr_base = 0, -}; - static const struct niu_phy_template phy_template_10g_fiber = { .ops = &phy_ops_10g_fiber, .phy_addr_base = 8, @@ -2419,25 +2182,8 @@ static int niu_determine_phy_disposition(struct niu *np) u32 phy_addr_off = 0; if (plat_type == PLAT_TYPE_NIU) { - switch (np->flags & - (NIU_FLAGS_10G | - NIU_FLAGS_FIBER | - NIU_FLAGS_XCVR_SERDES)) { - case NIU_FLAGS_10G | NIU_FLAGS_XCVR_SERDES: - /* 10G Serdes */ - tp = &phy_template_niu_10g_serdes; - break; - case NIU_FLAGS_XCVR_SERDES: - /* 1G Serdes */ - tp = &phy_template_niu_1g_serdes; - break; - case NIU_FLAGS_10G | NIU_FLAGS_FIBER: - /* 10G Fiber */ - default: - tp = &phy_template_niu_10g_fiber; - phy_addr_off += np->port; - break; - } + tp = &phy_template_niu; + phy_addr_off += np->port; } else { switch (np->flags & (NIU_FLAGS_10G | @@ -7467,12 +7213,6 @@ static int __devinit niu_phy_type_prop_decode(struct niu *np, np->flags |= NIU_FLAGS_10G; np->flags &= ~NIU_FLAGS_FIBER; np->mac_xcvr = MAC_XCVR_XPCS; - } else if (!strcmp(phy_prop, "xgsd") || !strcmp(phy_prop, "gsd")) { - /* 10G Serdes or 1G Serdes, default to 10G */ - np->flags |= NIU_FLAGS_10G; - np->flags &= ~NIU_FLAGS_FIBER; - np->flags |= NIU_FLAGS_XCVR_SERDES; - np->mac_xcvr = MAC_XCVR_XPCS; } else { return -EINVAL; } @@ -8001,8 +7741,6 @@ static int __devinit walk_phys(struct niu *np, struct niu_parent *parent) u32 val; int err; - num_10g = num_1g = 0; - if (!strcmp(np->vpd.model, NIU_ALONSO_MDL_STR) || !strcmp(np->vpd.model, NIU_KIMI_MDL_STR)) { num_10g = 0; @@ -8019,16 +7757,6 @@ static int __devinit walk_phys(struct niu *np, struct niu_parent *parent) parent->num_ports = 2; val = (phy_encode(PORT_TYPE_10G, 0) | phy_encode(PORT_TYPE_10G, 1)); - } else if ((np->flags & NIU_FLAGS_XCVR_SERDES) && - (parent->plat_type == PLAT_TYPE_NIU)) { - /* this is the Monza case */ - if (np->flags & NIU_FLAGS_10G) { - val = (phy_encode(PORT_TYPE_10G, 0) | - phy_encode(PORT_TYPE_10G, 1)); - } else { - val = (phy_encode(PORT_TYPE_1G, 0) | - phy_encode(PORT_TYPE_1G, 1)); - } } else { err = fill_phy_probe_info(np, parent, info); if (err) @@ -8928,9 +8656,7 @@ static void __devinit niu_device_announce(struct niu *np) dev->name, (np->flags & NIU_FLAGS_XMAC ? "XMAC" : "BMAC"), (np->flags & NIU_FLAGS_10G ? "10G" : "1G"), - (np->flags & NIU_FLAGS_FIBER ? "FIBER" : - (np->flags & NIU_FLAGS_XCVR_SERDES ? "SERDES" : - "COPPER")), + (np->flags & NIU_FLAGS_FIBER ? "FIBER" : "COPPER"), (np->mac_xcvr == MAC_XCVR_MII ? "MII" : (np->mac_xcvr == MAC_XCVR_PCS ? "PCS" : "XPCS")), np->vpd.phy_type); diff --git a/trunk/drivers/net/niu.h b/trunk/drivers/net/niu.h index 180ca8ae93de..c6fa883daa22 100644 --- a/trunk/drivers/net/niu.h +++ b/trunk/drivers/net/niu.h @@ -1048,13 +1048,6 @@ #define PLL_CFG_LD_SHIFT 8 #define PLL_CFG_MPY 0x0000001e #define PLL_CFG_MPY_SHIFT 1 -#define PLL_CFG_MPY_4X 0x0 -#define PLL_CFG_MPY_5X 0x00000002 -#define PLL_CFG_MPY_6X 0x00000004 -#define PLL_CFG_MPY_8X 0x00000008 -#define PLL_CFG_MPY_10X 0x0000000a -#define PLL_CFG_MPY_12X 0x0000000c -#define PLL_CFG_MPY_12P5X 0x0000000e #define PLL_CFG_ENPLL 0x00000001 #define ESR2_TI_PLL_STS_L (ESR2_BASE + 0x002) @@ -1100,9 +1093,6 @@ #define PLL_TX_CFG_INVPAIR 0x00000080 #define PLL_TX_CFG_RATE 0x00000060 #define PLL_TX_CFG_RATE_SHIFT 5 -#define PLL_TX_CFG_RATE_FULL 0x0 -#define PLL_TX_CFG_RATE_HALF 0x20 -#define PLL_TX_CFG_RATE_QUAD 0x40 #define PLL_TX_CFG_BUSWIDTH 0x0000001c #define PLL_TX_CFG_BUSWIDTH_SHIFT 2 #define PLL_TX_CFG_ENTEST 0x00000002 @@ -1142,9 +1132,6 @@ #define PLL_RX_CFG_INVPAIR 0x00000080 #define PLL_RX_CFG_RATE 0x00000060 #define PLL_RX_CFG_RATE_SHIFT 5 -#define PLL_RX_CFG_RATE_FULL 0x0 -#define PLL_RX_CFG_RATE_HALF 0x20 -#define PLL_RX_CFG_RATE_QUAD 0x40 #define PLL_RX_CFG_BUSWIDTH 0x0000001c #define PLL_RX_CFG_BUSWIDTH_SHIFT 2 #define PLL_RX_CFG_ENTEST 0x00000002 diff --git a/trunk/drivers/net/ucc_geth_ethtool.c b/trunk/drivers/net/ucc_geth_ethtool.c index 85f38a6b6a49..68a7f5414133 100644 --- a/trunk/drivers/net/ucc_geth_ethtool.c +++ b/trunk/drivers/net/ucc_geth_ethtool.c @@ -323,17 +323,17 @@ static void uec_get_ethtool_stats(struct net_device *netdev, if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_HARDWARE) { base = (u32 __iomem *)&ugeth->ug_regs->tx64; for (i = 0; i < UEC_HW_STATS_LEN; i++) - data[j++] = (u64)in_be32(&base[i]); + data[j++] = in_be32(&base[i]); } if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_TX) { base = (u32 __iomem *)ugeth->p_tx_fw_statistics_pram; for (i = 0; i < UEC_TX_FW_STATS_LEN; i++) - data[j++] = (u64)in_be32(&base[i]); + data[j++] = base ? in_be32(&base[i]) : 0; } if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX) { base = (u32 __iomem *)ugeth->p_rx_fw_statistics_pram; for (i = 0; i < UEC_RX_FW_STATS_LEN; i++) - data[j++] = (u64)in_be32(&base[i]); + data[j++] = base ? in_be32(&base[i]) : 0; } } diff --git a/trunk/include/linux/lockdep.h b/trunk/include/linux/lockdep.h index 29aec6e10020..331e5f1c2d8e 100644 --- a/trunk/include/linux/lockdep.h +++ b/trunk/include/linux/lockdep.h @@ -331,11 +331,10 @@ static inline void lockdep_on(void) # define lock_set_subclass(l, s, i) do { } while (0) # define lockdep_init() do { } while (0) # define lockdep_info() do { } while (0) -# define lockdep_init_map(lock, name, key, sub) \ - do { (void)(name); (void)(key); } while (0) +# define lockdep_init_map(lock, name, key, sub) do { (void)(key); } while (0) # define lockdep_set_class(lock, key) do { (void)(key); } while (0) # define lockdep_set_class_and_name(lock, key, name) \ - do { (void)(key); (void)(name); } while (0) + do { (void)(key); } while (0) #define lockdep_set_class_and_subclass(lock, key, sub) \ do { (void)(key); } while (0) #define lockdep_set_subclass(lock, sub) do { } while (0) diff --git a/trunk/include/net/sock.h b/trunk/include/net/sock.h index 2f47107f6d0f..c04f9e18ea22 100644 --- a/trunk/include/net/sock.h +++ b/trunk/include/net/sock.h @@ -815,7 +815,7 @@ static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb) */ #define sock_lock_init_class_and_name(sk, sname, skey, name, key) \ do { \ - sk->sk_lock.owned = 0; \ + sk->sk_lock.owned = 0; \ init_waitqueue_head(&sk->sk_lock.wq); \ spin_lock_init(&(sk)->sk_lock.slock); \ debug_check_no_locks_freed((void *)&(sk)->sk_lock, \ diff --git a/trunk/net/core/scm.c b/trunk/net/core/scm.c index b12303dd39d9..ab242cc1acca 100644 --- a/trunk/net/core/scm.c +++ b/trunk/net/core/scm.c @@ -75,6 +75,7 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp) if (!fpl) return -ENOMEM; *fplp = fpl; + INIT_LIST_HEAD(&fpl->list); fpl->count = 0; } fpp = &fpl->fp[fpl->count]; @@ -300,6 +301,7 @@ struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl) new_fpl = kmalloc(sizeof(*fpl), GFP_KERNEL); if (new_fpl) { + INIT_LIST_HEAD(&new_fpl->list); for (i=fpl->count-1; i>=0; i--) get_file(fpl->fp[i]); memcpy(new_fpl, fpl, sizeof(*fpl)); diff --git a/trunk/net/core/sock.c b/trunk/net/core/sock.c index 341e39456952..5e2a3132a8c9 100644 --- a/trunk/net/core/sock.c +++ b/trunk/net/core/sock.c @@ -136,6 +136,7 @@ static struct lock_class_key af_family_keys[AF_MAX]; static struct lock_class_key af_family_slock_keys[AF_MAX]; +#ifdef CONFIG_DEBUG_LOCK_ALLOC /* * Make lock validator output more readable. (we pre-construct these * strings build-time, so that runtime initialization of socket @@ -186,6 +187,7 @@ static const char *af_family_clock_key_strings[AF_MAX+1] = { "clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" , "clock-AF_MAX" }; +#endif /* * sk_callback_lock locking rules are per-address-family,