Commit d809a159 authored by David S. Miller's avatar David S. Miller

Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

parents f21f237c 347c8d83
...@@ -1102,9 +1102,7 @@ static u64 fw_vers_string_to_u64(struct iwch_dev *iwch_dev) ...@@ -1102,9 +1102,7 @@ static u64 fw_vers_string_to_u64(struct iwch_dev *iwch_dev)
char *cp, *next; char *cp, *next;
unsigned fw_maj, fw_min, fw_mic; unsigned fw_maj, fw_min, fw_mic;
rtnl_lock();
lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev->ethtool_ops->get_drvinfo(lldev, &info);
rtnl_unlock();
next = info.fw_version + 1; next = info.fw_version + 1;
cp = strsep(&next, "."); cp = strsep(&next, ".");
...@@ -1192,9 +1190,7 @@ static ssize_t show_fw_ver(struct device *dev, struct device_attribute *attr, ch ...@@ -1192,9 +1190,7 @@ static ssize_t show_fw_ver(struct device *dev, struct device_attribute *attr, ch
struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev; struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev;
PDBG("%s dev 0x%p\n", __func__, dev); PDBG("%s dev 0x%p\n", __func__, dev);
rtnl_lock();
lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev->ethtool_ops->get_drvinfo(lldev, &info);
rtnl_unlock();
return sprintf(buf, "%s\n", info.fw_version); return sprintf(buf, "%s\n", info.fw_version);
} }
...@@ -1207,9 +1203,7 @@ static ssize_t show_hca(struct device *dev, struct device_attribute *attr, ...@@ -1207,9 +1203,7 @@ static ssize_t show_hca(struct device *dev, struct device_attribute *attr,
struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev; struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev;
PDBG("%s dev 0x%p\n", __func__, dev); PDBG("%s dev 0x%p\n", __func__, dev);
rtnl_lock();
lldev->ethtool_ops->get_drvinfo(lldev, &info); lldev->ethtool_ops->get_drvinfo(lldev, &info);
rtnl_unlock();
return sprintf(buf, "%s\n", info.driver); return sprintf(buf, "%s\n", info.driver);
} }
......
...@@ -1307,8 +1307,10 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) ...@@ -1307,8 +1307,10 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
u32 fw_vers = 0; u32 fw_vers = 0;
u32 tp_vers = 0; u32 tp_vers = 0;
spin_lock(&adapter->stats_lock);
t3_get_fw_version(adapter, &fw_vers); t3_get_fw_version(adapter, &fw_vers);
t3_get_tp_version(adapter, &tp_vers); t3_get_tp_version(adapter, &tp_vers);
spin_unlock(&adapter->stats_lock);
strcpy(info->driver, DRV_NAME); strcpy(info->driver, DRV_NAME);
strcpy(info->version, DRV_VERSION); strcpy(info->version, DRV_VERSION);
...@@ -2699,7 +2701,7 @@ static void set_nqsets(struct adapter *adap) ...@@ -2699,7 +2701,7 @@ static void set_nqsets(struct adapter *adap)
int hwports = adap->params.nports; int hwports = adap->params.nports;
int nqsets = SGE_QSETS; int nqsets = SGE_QSETS;
if (adap->params.rev > 0) { if (adap->params.rev > 0 && adap->flags & USING_MSIX) {
if (hwports == 2 && if (hwports == 2 &&
(hwports * nqsets > SGE_QSETS || (hwports * nqsets > SGE_QSETS ||
num_cpus >= nqsets / hwports)) num_cpus >= nqsets / hwports))
......
...@@ -572,7 +572,7 @@ struct t3_vpd { ...@@ -572,7 +572,7 @@ struct t3_vpd {
u32 pad; /* for multiple-of-4 sizing and alignment */ u32 pad; /* for multiple-of-4 sizing and alignment */
}; };
#define EEPROM_MAX_POLL 4 #define EEPROM_MAX_POLL 40
#define EEPROM_STAT_ADDR 0x4000 #define EEPROM_STAT_ADDR 0x4000
#define VPD_BASE 0xc00 #define VPD_BASE 0xc00
...@@ -3690,6 +3690,12 @@ int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai, ...@@ -3690,6 +3690,12 @@ int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai,
; ;
pti = &port_types[adapter->params.vpd.port_type[j]]; pti = &port_types[adapter->params.vpd.port_type[j]];
if (!pti->phy_prep) {
CH_ALERT(adapter, "Invalid port type index %d\n",
adapter->params.vpd.port_type[j]);
return -EINVAL;
}
ret = pti->phy_prep(&p->phy, adapter, ai->phy_base_addr + j, ret = pti->phy_prep(&p->phy, adapter, ai->phy_base_addr + j,
ai->mdio_ops); ai->mdio_ops);
if (ret) if (ret)
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
#include "myri10ge_mcp.h" #include "myri10ge_mcp.h"
#include "myri10ge_mcp_gen_header.h" #include "myri10ge_mcp_gen_header.h"
#define MYRI10GE_VERSION_STR "1.4.3-1.375" #define MYRI10GE_VERSION_STR "1.4.3-1.378"
MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
MODULE_AUTHOR("Maintainer: help@myri.com"); MODULE_AUTHOR("Maintainer: help@myri.com");
...@@ -1393,6 +1393,7 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index) ...@@ -1393,6 +1393,7 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index)
if (tx->req == tx->done) { if (tx->req == tx->done) {
tx->queue_active = 0; tx->queue_active = 0;
put_be32(htonl(1), tx->send_stop); put_be32(htonl(1), tx->send_stop);
mb();
mmiowb(); mmiowb();
} }
__netif_tx_unlock(dev_queue); __netif_tx_unlock(dev_queue);
...@@ -2865,6 +2866,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -2865,6 +2866,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) { if ((mgp->dev->real_num_tx_queues > 1) && tx->queue_active == 0) {
tx->queue_active = 1; tx->queue_active = 1;
put_be32(htonl(1), tx->send_go); put_be32(htonl(1), tx->send_go);
mb();
mmiowb(); mmiowb();
} }
tx->pkt_start++; tx->pkt_start++;
......
...@@ -2050,7 +2050,9 @@ static int __init smc911x_probe(struct net_device *dev) ...@@ -2050,7 +2050,9 @@ static int __init smc911x_probe(struct net_device *dev)
*/ */
static int smc911x_drv_probe(struct platform_device *pdev) static int smc911x_drv_probe(struct platform_device *pdev)
{ {
#ifdef SMC_DYNAMIC_BUS_CONFIG
struct smc911x_platdata *pd = pdev->dev.platform_data; struct smc911x_platdata *pd = pdev->dev.platform_data;
#endif
struct net_device *ndev; struct net_device *ndev;
struct resource *res; struct resource *res;
struct smc911x_local *lp; struct smc911x_local *lp;
...@@ -2182,9 +2184,9 @@ static int smc911x_drv_resume(struct platform_device *dev) ...@@ -2182,9 +2184,9 @@ static int smc911x_drv_resume(struct platform_device *dev)
if (netif_running(ndev)) { if (netif_running(ndev)) {
smc911x_reset(ndev); smc911x_reset(ndev);
smc911x_enable(ndev);
if (lp->phy_type != 0) if (lp->phy_type != 0)
smc911x_phy_configure(&lp->phy_configure); smc911x_phy_configure(&lp->phy_configure);
smc911x_enable(ndev);
netif_device_attach(ndev); netif_device_attach(ndev);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment