You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07: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:
tcp: Revert 'process defer accept as established' changes.
ipv6: Fix duplicate initialization of rawv6_prot.destroy
bnx2x: Updating the Maintainer
net: Eliminate flush_scheduled_work() calls while RTNL is held.
drivers/net/r6040.c: correct bad use of round_jiffies()
fec_mpc52xx: MPC52xx_MESSAGES_DEFAULT: 2nd NETIF_MSG_IFDOWN => IFUP
ipg: fix receivemode IPG_RM_RECEIVEMULTICAST{,HASH} in ipg_nic_set_multicast_list()
netfilter: nf_conntrack: fix ctnetlink related crash in nf_nat_setup_info()
netfilter: Make nflog quiet when no one listen in userspace.
ipv6: Fail with appropriate error code when setting not-applicable sockopt.
ipv6: Check IPV6_MULTICAST_LOOP option value.
ipv6: Check the hop limit setting in ancillary data.
ipv6 route: Fix route lifetime in netlink message.
ipv6 mcast: Check address family of gf_group in getsockopt(MS_FILTER).
dccp: Bug in initial acknowledgment number assignment
dccp ccid-3: X truncated due to type conversion
dccp ccid-3: TFRC reverse-lookup Bug-Fix
dccp ccid-2: Bug-Fix - Ack Vectors need to be ignored on request sockets
dccp: Fix sparse warnings
dccp ccid-3: Bug-Fix - Zero RTT is possible
This commit is contained in:
+1
-8
@@ -5724,14 +5724,12 @@ bnx2_reset_task(struct work_struct *work)
|
||||
if (!netif_running(bp->dev))
|
||||
return;
|
||||
|
||||
bp->in_reset_task = 1;
|
||||
bnx2_netif_stop(bp);
|
||||
|
||||
bnx2_init_nic(bp);
|
||||
|
||||
atomic_set(&bp->intr_sem, 1);
|
||||
bnx2_netif_start(bp);
|
||||
bp->in_reset_task = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5907,12 +5905,7 @@ bnx2_close(struct net_device *dev)
|
||||
struct bnx2 *bp = netdev_priv(dev);
|
||||
u32 reset_code;
|
||||
|
||||
/* Calling flush_scheduled_work() may deadlock because
|
||||
* linkwatch_event() may be on the workqueue and it will try to get
|
||||
* the rtnl_lock which we are holding.
|
||||
*/
|
||||
while (bp->in_reset_task)
|
||||
msleep(1);
|
||||
cancel_work_sync(&bp->reset_task);
|
||||
|
||||
bnx2_disable_int_sync(bp);
|
||||
bnx2_napi_disable(bp);
|
||||
|
||||
@@ -6656,7 +6656,6 @@ struct bnx2 {
|
||||
int current_interval;
|
||||
struct timer_list timer;
|
||||
struct work_struct reset_task;
|
||||
int in_reset_task;
|
||||
|
||||
/* Used to synchronize phy accesses. */
|
||||
spinlock_t phy_lock;
|
||||
|
||||
+3
-2
@@ -6,7 +6,8 @@
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Eliezer Tamir <eliezert@broadcom.com>
|
||||
* Maintained by: Eilon Greenstein <eilong@broadcom.com>
|
||||
* Written by: Eliezer Tamir
|
||||
* Based on code from Michael Chan's bnx2 driver
|
||||
* UDP CSUM errata workaround by Arik Gendelman
|
||||
* Slowpath rework by Vladislav Zolotarov
|
||||
@@ -74,7 +75,7 @@ static char version[] __devinitdata =
|
||||
"Broadcom NetXtreme II 5771X 10Gigabit Ethernet Driver "
|
||||
DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
|
||||
|
||||
MODULE_AUTHOR("Eliezer Tamir <eliezert@broadcom.com>");
|
||||
MODULE_AUTHOR("Eliezer Tamir");
|
||||
MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710 Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION(DRV_MODULE_VERSION);
|
||||
|
||||
+2
-1
@@ -6,7 +6,8 @@
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Eliezer Tamir <eliezert@broadcom.com>
|
||||
* Maintained by: Eilon Greenstein <eilong@broadcom.com>
|
||||
* Written by: Eliezer Tamir
|
||||
* Based on code from Michael Chan's bnx2 driver
|
||||
*/
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Eliezer Tamir <eliezert@broadcom.com>
|
||||
* Maintained by: Eilon Greenstein <eilong@broadcom.com>
|
||||
* Written by: Eliezer Tamir
|
||||
*/
|
||||
|
||||
#ifndef BNX2X_INIT_H
|
||||
|
||||
@@ -2605,7 +2605,8 @@ static int ehea_stop(struct net_device *dev)
|
||||
if (netif_msg_ifdown(port))
|
||||
ehea_info("disabling port %s", dev->name);
|
||||
|
||||
flush_scheduled_work();
|
||||
cancel_work_sync(&port->reset_task);
|
||||
|
||||
mutex_lock(&port->port_lock);
|
||||
netif_stop_queue(dev);
|
||||
port_napi_disable(port);
|
||||
|
||||
@@ -78,7 +78,7 @@ module_param_array_named(mac, mpc52xx_fec_mac_addr, byte, NULL, 0);
|
||||
MODULE_PARM_DESC(mac, "six hex digits, ie. 0x1,0x2,0xc0,0x01,0xba,0xbe");
|
||||
|
||||
#define MPC52xx_MESSAGES_DEFAULT ( NETIF_MSG_DRV | NETIF_MSG_PROBE | \
|
||||
NETIF_MSG_LINK | NETIF_MSG_IFDOWN | NETIF_MSG_IFDOWN )
|
||||
NETIF_MSG_LINK | NETIF_MSG_IFDOWN | NETIF_MSG_IFUP)
|
||||
static int debug = -1; /* the above default */
|
||||
module_param(debug, int, 0);
|
||||
MODULE_PARM_DESC(debug, "debugging messages level");
|
||||
|
||||
@@ -959,7 +959,7 @@ static int epp_close(struct net_device *dev)
|
||||
unsigned char tmp[1];
|
||||
|
||||
bc->work_running = 0;
|
||||
flush_scheduled_work();
|
||||
cancel_delayed_work_sync(&bc->run_work);
|
||||
bc->stat = EPP_DCDBIT;
|
||||
tmp[0] = 0;
|
||||
pp->ops->epp_write_addr(pp, tmp, 1, 0);
|
||||
|
||||
+2
-2
@@ -577,12 +577,12 @@ static void ipg_nic_set_multicast_list(struct net_device *dev)
|
||||
/* NIC to be configured in promiscuous mode. */
|
||||
receivemode = IPG_RM_RECEIVEALLFRAMES;
|
||||
} else if ((dev->flags & IFF_ALLMULTI) ||
|
||||
(dev->flags & IFF_MULTICAST &
|
||||
((dev->flags & IFF_MULTICAST) &&
|
||||
(dev->mc_count > IPG_MULTICAST_HASHTABLE_SIZE))) {
|
||||
/* NIC to be configured to receive all multicast
|
||||
* frames. */
|
||||
receivemode |= IPG_RM_RECEIVEMULTICAST;
|
||||
} else if (dev->flags & IFF_MULTICAST & (dev->mc_count > 0)) {
|
||||
} else if ((dev->flags & IFF_MULTICAST) && (dev->mc_count > 0)) {
|
||||
/* NIC to be configured to receive selected
|
||||
* multicast addresses. */
|
||||
receivemode |= IPG_RM_RECEIVEMULTICASTHASH;
|
||||
|
||||
+1
-1
@@ -733,7 +733,7 @@ static void r6040_timer(unsigned long data)
|
||||
}
|
||||
|
||||
/* Timer active again */
|
||||
mod_timer(&lp->timer, jiffies + round_jiffies(HZ));
|
||||
mod_timer(&lp->timer, round_jiffies(jiffies + HZ));
|
||||
}
|
||||
|
||||
/* Read/set MAC address routines */
|
||||
|
||||
+5
-19
@@ -136,7 +136,6 @@ struct smc911x_local {
|
||||
|
||||
/* work queue */
|
||||
struct work_struct phy_configure;
|
||||
int work_pending;
|
||||
|
||||
int tx_throttle;
|
||||
spinlock_t lock;
|
||||
@@ -960,11 +959,11 @@ static void smc911x_phy_configure(struct work_struct *work)
|
||||
* We should not be called if phy_type is zero.
|
||||
*/
|
||||
if (lp->phy_type == 0)
|
||||
goto smc911x_phy_configure_exit_nolock;
|
||||
return;
|
||||
|
||||
if (smc911x_phy_reset(dev, phyaddr)) {
|
||||
printk("%s: PHY reset timed out\n", dev->name);
|
||||
goto smc911x_phy_configure_exit_nolock;
|
||||
return;
|
||||
}
|
||||
spin_lock_irqsave(&lp->lock, flags);
|
||||
|
||||
@@ -1033,8 +1032,6 @@ static void smc911x_phy_configure(struct work_struct *work)
|
||||
|
||||
smc911x_phy_configure_exit:
|
||||
spin_unlock_irqrestore(&lp->lock, flags);
|
||||
smc911x_phy_configure_exit_nolock:
|
||||
lp->work_pending = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1356,11 +1353,8 @@ static void smc911x_timeout(struct net_device *dev)
|
||||
* smc911x_phy_configure() calls msleep() which calls schedule_timeout()
|
||||
* which calls schedule(). Hence we use a work queue.
|
||||
*/
|
||||
if (lp->phy_type != 0) {
|
||||
if (schedule_work(&lp->phy_configure)) {
|
||||
lp->work_pending = 1;
|
||||
}
|
||||
}
|
||||
if (lp->phy_type != 0)
|
||||
schedule_work(&lp->phy_configure);
|
||||
|
||||
/* We can accept TX packets again */
|
||||
dev->trans_start = jiffies;
|
||||
@@ -1531,16 +1525,8 @@ static int smc911x_close(struct net_device *dev)
|
||||
if (lp->phy_type != 0) {
|
||||
/* We need to ensure that no calls to
|
||||
* smc911x_phy_configure are pending.
|
||||
|
||||
* flush_scheduled_work() cannot be called because we
|
||||
* are running with the netlink semaphore held (from
|
||||
* devinet_ioctl()) and the pending work queue
|
||||
* contains linkwatch_event() (scheduled by
|
||||
* netif_carrier_off() above). linkwatch_event() also
|
||||
* wants the netlink semaphore.
|
||||
*/
|
||||
while (lp->work_pending)
|
||||
schedule();
|
||||
cancel_work_sync(&lp->phy_configure);
|
||||
smc911x_phy_powerdown(dev, lp->mii.phy_id);
|
||||
}
|
||||
|
||||
|
||||
+3
-14
@@ -1016,15 +1016,8 @@ static void smc_phy_powerdown(struct net_device *dev)
|
||||
|
||||
/* We need to ensure that no calls to smc_phy_configure are
|
||||
pending.
|
||||
|
||||
flush_scheduled_work() cannot be called because we are
|
||||
running with the netlink semaphore held (from
|
||||
devinet_ioctl()) and the pending work queue contains
|
||||
linkwatch_event() (scheduled by netif_carrier_off()
|
||||
above). linkwatch_event() also wants the netlink semaphore.
|
||||
*/
|
||||
while(lp->work_pending)
|
||||
yield();
|
||||
cancel_work_sync(&lp->phy_configure);
|
||||
|
||||
bmcr = smc_phy_read(dev, phy, MII_BMCR);
|
||||
smc_phy_write(dev, phy, MII_BMCR, bmcr | BMCR_PDOWN);
|
||||
@@ -1161,7 +1154,6 @@ static void smc_phy_configure(struct work_struct *work)
|
||||
smc_phy_configure_exit:
|
||||
SMC_SELECT_BANK(lp, 2);
|
||||
spin_unlock_irq(&lp->lock);
|
||||
lp->work_pending = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1389,11 +1381,8 @@ static void smc_timeout(struct net_device *dev)
|
||||
* smc_phy_configure() calls msleep() which calls schedule_timeout()
|
||||
* which calls schedule(). Hence we use a work queue.
|
||||
*/
|
||||
if (lp->phy_type != 0) {
|
||||
if (schedule_work(&lp->phy_configure)) {
|
||||
lp->work_pending = 1;
|
||||
}
|
||||
}
|
||||
if (lp->phy_type != 0)
|
||||
schedule_work(&lp->phy_configure);
|
||||
|
||||
/* We can accept TX packets again */
|
||||
dev->trans_start = jiffies;
|
||||
|
||||
@@ -731,7 +731,7 @@ static void tulip_down (struct net_device *dev)
|
||||
void __iomem *ioaddr = tp->base_addr;
|
||||
unsigned long flags;
|
||||
|
||||
flush_scheduled_work();
|
||||
cancel_work_sync(&tp->media_work);
|
||||
|
||||
#ifdef CONFIG_TULIP_NAPI
|
||||
napi_disable(&tp->napi);
|
||||
|
||||
@@ -706,7 +706,7 @@ static void kaweth_kill_urbs(struct kaweth_device *kaweth)
|
||||
usb_kill_urb(kaweth->rx_urb);
|
||||
usb_kill_urb(kaweth->tx_urb);
|
||||
|
||||
flush_scheduled_work();
|
||||
cancel_delayed_work_sync(&kaweth->lowmem_work);
|
||||
|
||||
/* a scheduled work may have resubmitted,
|
||||
we hit them again */
|
||||
|
||||
@@ -682,7 +682,13 @@ static int prism2_close(struct net_device *dev)
|
||||
netif_device_detach(dev);
|
||||
}
|
||||
|
||||
flush_scheduled_work();
|
||||
cancel_work_sync(&local->reset_queue);
|
||||
cancel_work_sync(&local->set_multicast_list_queue);
|
||||
cancel_work_sync(&local->set_tim_queue);
|
||||
#ifndef PRISM2_NO_STATION_MODES
|
||||
cancel_work_sync(&local->info_queue);
|
||||
#endif
|
||||
cancel_work_sync(&local->comms_qual_update);
|
||||
|
||||
module_put(local->hw_module);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user