mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (26 commits) bonding: fix panic if initialization fails IXP4xx: complete Ethernet netdev setup before calling register_netdev(). IXP4xx: use "ENODEV" instead of "ENOSYS" in module initialization. ipvs: Fix IPv4 FWMARK virtual services ipv4: Make INET_LRO a bool instead of tristate. net: remove stale reference to fastroute from Kconfig help text net: update skb_recycle_check() for hardware timestamping changes bnx2: Fix panic in bnx2_poll_work(). net-sched: fix bfifo default limit igb: resolve panic on shutdown when SR-IOV is enabled wimax: oops: wimax_dev_add() is the only one that can initialize the state wimax: fix oops if netlink fails to add attribute Bluetooth: Move dev_set_name() to a context that can sleep netfilter: ctnetlink: fix wrong message type in user updates netfilter: xt_cluster: fix use of cluster match with 32 nodes netfilter: ip6t_ipv6header: fix match on packets ending with NEXTHDR_NONE netfilter: add missing linux/types.h include to xt_LED.h mac80211: pid, fix memory corruption mac80211: minstrel, fix memory corruption cfg80211: fix comment on regulatory hint processing ...
This commit is contained in:
commit
2ad20802b7
27 changed files with 167 additions and 139 deletions
|
|
@ -338,12 +338,12 @@ static int ixp4xx_mdio_register(void)
|
|||
if (cpu_is_ixp43x()) {
|
||||
/* IXP43x lacks NPE-B and uses NPE-C for MII PHY access */
|
||||
if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEC_ETH))
|
||||
return -ENOSYS;
|
||||
return -ENODEV;
|
||||
mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthC_BASE_VIRT;
|
||||
} else {
|
||||
/* All MII PHY accesses use NPE-B Ethernet registers */
|
||||
if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEB_ETH0))
|
||||
return -ENOSYS;
|
||||
return -ENODEV;
|
||||
mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthB_BASE_VIRT;
|
||||
}
|
||||
|
||||
|
|
@ -1174,7 +1174,7 @@ static int __devinit eth_init_one(struct platform_device *pdev)
|
|||
regs_phys = IXP4XX_EthC_BASE_PHYS;
|
||||
break;
|
||||
default:
|
||||
err = -ENOSYS;
|
||||
err = -ENODEV;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
|
@ -1189,15 +1189,10 @@ static int __devinit eth_init_one(struct platform_device *pdev)
|
|||
goto err_free;
|
||||
}
|
||||
|
||||
if (register_netdev(dev)) {
|
||||
err = -EIO;
|
||||
goto err_npe_rel;
|
||||
}
|
||||
|
||||
port->mem_res = request_mem_region(regs_phys, REGS_SIZE, dev->name);
|
||||
if (!port->mem_res) {
|
||||
err = -EBUSY;
|
||||
goto err_unreg;
|
||||
goto err_npe_rel;
|
||||
}
|
||||
|
||||
port->plat = plat;
|
||||
|
|
@ -1215,20 +1210,25 @@ static int __devinit eth_init_one(struct platform_device *pdev)
|
|||
snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, "0", plat->phy);
|
||||
port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
|
||||
PHY_INTERFACE_MODE_MII);
|
||||
if (IS_ERR(port->phydev)) {
|
||||
printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
|
||||
return PTR_ERR(port->phydev);
|
||||
}
|
||||
if ((err = IS_ERR(port->phydev)))
|
||||
goto err_free_mem;
|
||||
|
||||
port->phydev->irq = PHY_POLL;
|
||||
|
||||
if ((err = register_netdev(dev)))
|
||||
goto err_phy_dis;
|
||||
|
||||
printk(KERN_INFO "%s: MII PHY %i on %s\n", dev->name, plat->phy,
|
||||
npe_name(port->npe));
|
||||
|
||||
return 0;
|
||||
|
||||
err_unreg:
|
||||
unregister_netdev(dev);
|
||||
err_phy_dis:
|
||||
phy_disconnect(port->phydev);
|
||||
err_free_mem:
|
||||
npe_port_tab[NPE_ID(port->id)] = NULL;
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
release_resource(port->mem_res);
|
||||
err_npe_rel:
|
||||
npe_release(port->npe);
|
||||
err_free:
|
||||
|
|
@ -1242,6 +1242,7 @@ static int __devexit eth_remove_one(struct platform_device *pdev)
|
|||
struct port *port = netdev_priv(dev);
|
||||
|
||||
unregister_netdev(dev);
|
||||
phy_disconnect(port->phydev);
|
||||
npe_port_tab[NPE_ID(port->id)] = NULL;
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
npe_release(port->npe);
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@
|
|||
|
||||
#define DRV_MODULE_NAME "bnx2"
|
||||
#define PFX DRV_MODULE_NAME ": "
|
||||
#define DRV_MODULE_VERSION "2.0.0"
|
||||
#define DRV_MODULE_RELDATE "April 2, 2009"
|
||||
#define DRV_MODULE_VERSION "2.0.1"
|
||||
#define DRV_MODULE_RELDATE "May 6, 2009"
|
||||
#define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-4.6.16.fw"
|
||||
#define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-4.6.16.fw"
|
||||
#define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-4.6.17.fw"
|
||||
|
|
@ -2600,6 +2600,7 @@ bnx2_get_hw_tx_cons(struct bnx2_napi *bnapi)
|
|||
/* Tell compiler that status block fields can change. */
|
||||
barrier();
|
||||
cons = *bnapi->hw_tx_cons_ptr;
|
||||
barrier();
|
||||
if (unlikely((cons & MAX_TX_DESC_CNT) == MAX_TX_DESC_CNT))
|
||||
cons++;
|
||||
return cons;
|
||||
|
|
@ -2879,6 +2880,7 @@ bnx2_get_hw_rx_cons(struct bnx2_napi *bnapi)
|
|||
/* Tell compiler that status block fields can change. */
|
||||
barrier();
|
||||
cons = *bnapi->hw_rx_cons_ptr;
|
||||
barrier();
|
||||
if (unlikely((cons & MAX_RX_DESC_CNT) == MAX_RX_DESC_CNT))
|
||||
cons++;
|
||||
return cons;
|
||||
|
|
|
|||
|
|
@ -5181,7 +5181,6 @@ static int __init bonding_init(void)
|
|||
{
|
||||
int i;
|
||||
int res;
|
||||
struct bonding *bond;
|
||||
|
||||
printk(KERN_INFO "%s", version);
|
||||
|
||||
|
|
@ -5212,13 +5211,6 @@ static int __init bonding_init(void)
|
|||
|
||||
goto out;
|
||||
err:
|
||||
list_for_each_entry(bond, &bond_dev_list, bond_list) {
|
||||
bond_work_cancel_all(bond);
|
||||
destroy_workqueue(bond->wq);
|
||||
}
|
||||
|
||||
bond_destroy_sysfs();
|
||||
|
||||
rtnl_lock();
|
||||
bond_free_all();
|
||||
rtnl_unlock();
|
||||
|
|
|
|||
|
|
@ -2006,7 +2006,7 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
|
|||
struct e1000_hw *hw = &adapter->hw;
|
||||
u32 rctl;
|
||||
u32 srrctl = 0;
|
||||
int i, j;
|
||||
int i;
|
||||
|
||||
rctl = rd32(E1000_RCTL);
|
||||
|
||||
|
|
@ -2071,8 +2071,6 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
|
|||
if (adapter->vfs_allocated_count) {
|
||||
u32 vmolr;
|
||||
|
||||
j = adapter->rx_ring[0].reg_idx;
|
||||
|
||||
/* set all queue drop enable bits */
|
||||
wr32(E1000_QDE, ALL_QUEUES);
|
||||
srrctl |= E1000_SRRCTL_DROP_EN;
|
||||
|
|
@ -2080,16 +2078,16 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
|
|||
/* disable queue 0 to prevent tail write w/o re-config */
|
||||
wr32(E1000_RXDCTL(0), 0);
|
||||
|
||||
vmolr = rd32(E1000_VMOLR(j));
|
||||
vmolr = rd32(E1000_VMOLR(adapter->vfs_allocated_count));
|
||||
if (rctl & E1000_RCTL_LPE)
|
||||
vmolr |= E1000_VMOLR_LPE;
|
||||
if (adapter->num_rx_queues > 0)
|
||||
if (adapter->num_rx_queues > 1)
|
||||
vmolr |= E1000_VMOLR_RSSE;
|
||||
wr32(E1000_VMOLR(j), vmolr);
|
||||
wr32(E1000_VMOLR(adapter->vfs_allocated_count), vmolr);
|
||||
}
|
||||
|
||||
for (i = 0; i < adapter->num_rx_queues; i++) {
|
||||
j = adapter->rx_ring[i].reg_idx;
|
||||
int j = adapter->rx_ring[i].reg_idx;
|
||||
wr32(E1000_SRRCTL(j), srrctl);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1249,7 +1249,7 @@ static int __devinit hss_init_one(struct platform_device *pdev)
|
|||
return -ENOMEM;
|
||||
|
||||
if ((port->npe = npe_request(0)) == NULL) {
|
||||
err = -ENOSYS;
|
||||
err = -ENODEV;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
|
@ -1311,7 +1311,7 @@ static int __init hss_init_module(void)
|
|||
if ((ixp4xx_read_feature_bits() &
|
||||
(IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) !=
|
||||
(IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS))
|
||||
return -ENOSYS;
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_init(&npe_lock);
|
||||
|
||||
|
|
|
|||
|
|
@ -719,6 +719,14 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
|
|||
{
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
__le16 key_flags = 0;
|
||||
|
||||
key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK);
|
||||
key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
|
||||
key_flags &= ~STA_KEY_FLG_INVALID;
|
||||
|
||||
if (sta_id == priv->hw_params.bcast_sta_id)
|
||||
key_flags |= STA_KEY_MULTICAST_MSK;
|
||||
|
||||
keyconf->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
|
||||
keyconf->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
|
||||
|
|
@ -738,6 +746,9 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,
|
|||
WARN(priv->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET,
|
||||
"no space for a new key");
|
||||
|
||||
priv->stations[sta_id].sta.key.key_flags = key_flags;
|
||||
|
||||
|
||||
/* This copy is acutally not needed: we get the key with each TX */
|
||||
memcpy(priv->stations[sta_id].keyinfo.key, keyconf->key, 16);
|
||||
|
||||
|
|
@ -754,9 +765,7 @@ void iwl_update_tkip_key(struct iwl_priv *priv,
|
|||
{
|
||||
u8 sta_id = IWL_INVALID_STATION;
|
||||
unsigned long flags;
|
||||
__le16 key_flags = 0;
|
||||
int i;
|
||||
DECLARE_MAC_BUF(mac);
|
||||
|
||||
sta_id = iwl_find_station(priv, addr);
|
||||
if (sta_id == IWL_INVALID_STATION) {
|
||||
|
|
@ -771,16 +780,8 @@ void iwl_update_tkip_key(struct iwl_priv *priv,
|
|||
return;
|
||||
}
|
||||
|
||||
key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK);
|
||||
key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
|
||||
key_flags &= ~STA_KEY_FLG_INVALID;
|
||||
|
||||
if (sta_id == priv->hw_params.bcast_sta_id)
|
||||
key_flags |= STA_KEY_MULTICAST_MSK;
|
||||
|
||||
spin_lock_irqsave(&priv->sta_lock, flags);
|
||||
|
||||
priv->stations[sta_id].sta.key.key_flags = key_flags;
|
||||
priv->stations[sta_id].sta.key.tkip_rx_tsc_byte2 = (u8) iv32;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
|
|
|
|||
|
|
@ -1744,7 +1744,6 @@ static void iwl3945_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rx
|
|||
rxq->bd = NULL;
|
||||
rxq->rb_stts = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(iwl3945_rx_queue_free);
|
||||
|
||||
|
||||
/* Convert linear signal-to-noise ratio into dB */
|
||||
|
|
|
|||
Loading…
Reference in a new issue