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: (30 commits) xfrm: Restrict extended sequence numbers to esp xfrm: Check for esn buffer len in xfrm_new_ae xfrm: Assign esn pointers when cloning a state xfrm: Move the test on replay window size into the replay check functions netdev: bfin_mac: document TE setting in RMII modes drivers net: Fix declaration ordering in inline functions. cxgb3: Apply interrupt coalescing settings to all queues net: Always allocate at least 16 skb frags regardless of page size ipv4: Don't ip_rt_put() an error pointer in RAW sockets. net: fix ethtool->set_flags not intended -EINVAL return value mlx4_en: Fix loss of promiscuity tg3: Fix inline keyword usage tg3: use <linux/io.h> and <linux/uaccess.h> instead <asm/io.h> and <asm/uaccess.h> net: use CHECKSUM_NONE instead of magic number Net / jme: Do not use legacy PCI power management myri10ge: small rx_done refactoring bridge: notify applications if address of bridge device changes ipv4: Fix IP timestamp option (IPOPT_TS_PRESPEC) handling in ip_options_echo() can: c_can: Fix tx_bytes accounting can: c_can_platform: fix irq check in probe ...
This commit is contained in:
@@ -1140,9 +1140,6 @@ static int __dev_open(struct net_device *dev)
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
/*
|
||||
* Is it even present?
|
||||
*/
|
||||
if (!netif_device_present(dev))
|
||||
return -ENODEV;
|
||||
|
||||
@@ -1151,9 +1148,6 @@ static int __dev_open(struct net_device *dev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* Call device private open method
|
||||
*/
|
||||
set_bit(__LINK_STATE_START, &dev->state);
|
||||
|
||||
if (ops->ndo_validate_addr)
|
||||
@@ -1162,31 +1156,12 @@ static int __dev_open(struct net_device *dev)
|
||||
if (!ret && ops->ndo_open)
|
||||
ret = ops->ndo_open(dev);
|
||||
|
||||
/*
|
||||
* If it went open OK then:
|
||||
*/
|
||||
|
||||
if (ret)
|
||||
clear_bit(__LINK_STATE_START, &dev->state);
|
||||
else {
|
||||
/*
|
||||
* Set the flags.
|
||||
*/
|
||||
dev->flags |= IFF_UP;
|
||||
|
||||
/*
|
||||
* Enable NET_DMA
|
||||
*/
|
||||
net_dmaengine_get();
|
||||
|
||||
/*
|
||||
* Initialize multicasting status
|
||||
*/
|
||||
dev_set_rx_mode(dev);
|
||||
|
||||
/*
|
||||
* Wakeup transmit queue engine
|
||||
*/
|
||||
dev_activate(dev);
|
||||
}
|
||||
|
||||
@@ -1209,22 +1184,13 @@ int dev_open(struct net_device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Is it already up?
|
||||
*/
|
||||
if (dev->flags & IFF_UP)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Open device
|
||||
*/
|
||||
ret = __dev_open(dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* ... and announce new interface.
|
||||
*/
|
||||
rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING);
|
||||
call_netdevice_notifiers(NETDEV_UP, dev);
|
||||
|
||||
@@ -1240,10 +1206,6 @@ static int __dev_close_many(struct list_head *head)
|
||||
might_sleep();
|
||||
|
||||
list_for_each_entry(dev, head, unreg_list) {
|
||||
/*
|
||||
* Tell people we are going down, so that they can
|
||||
* prepare to death, when device is still operating.
|
||||
*/
|
||||
call_netdevice_notifiers(NETDEV_GOING_DOWN, dev);
|
||||
|
||||
clear_bit(__LINK_STATE_START, &dev->state);
|
||||
@@ -1272,15 +1234,7 @@ static int __dev_close_many(struct list_head *head)
|
||||
if (ops->ndo_stop)
|
||||
ops->ndo_stop(dev);
|
||||
|
||||
/*
|
||||
* Device is now down.
|
||||
*/
|
||||
|
||||
dev->flags &= ~IFF_UP;
|
||||
|
||||
/*
|
||||
* Shutdown NET_DMA
|
||||
*/
|
||||
net_dmaengine_put();
|
||||
}
|
||||
|
||||
@@ -1309,9 +1263,6 @@ static int dev_close_many(struct list_head *head)
|
||||
|
||||
__dev_close_many(head);
|
||||
|
||||
/*
|
||||
* Tell people we are down
|
||||
*/
|
||||
list_for_each_entry(dev, head, unreg_list) {
|
||||
rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING);
|
||||
call_netdevice_notifiers(NETDEV_DOWN, dev);
|
||||
@@ -1371,11 +1322,6 @@ EXPORT_SYMBOL(dev_disable_lro);
|
||||
|
||||
static int dev_boot_phase = 1;
|
||||
|
||||
/*
|
||||
* Device change register/unregister. These are not inline or static
|
||||
* as we export them to the world.
|
||||
*/
|
||||
|
||||
/**
|
||||
* register_netdevice_notifier - register a network notifier block
|
||||
* @nb: notifier
|
||||
@@ -1477,6 +1423,7 @@ int call_netdevice_notifiers(unsigned long val, struct net_device *dev)
|
||||
ASSERT_RTNL();
|
||||
return raw_notifier_call_chain(&netdev_chain, val, dev);
|
||||
}
|
||||
EXPORT_SYMBOL(call_netdevice_notifiers);
|
||||
|
||||
/* When > 0 there are consumers of rx skb time stamps */
|
||||
static atomic_t netstamp_needed = ATOMIC_INIT(0);
|
||||
|
||||
@@ -141,9 +141,24 @@ u32 ethtool_op_get_flags(struct net_device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL(ethtool_op_get_flags);
|
||||
|
||||
/* Check if device can enable (or disable) particular feature coded in "data"
|
||||
* argument. Flags "supported" describe features that can be toggled by device.
|
||||
* If feature can not be toggled, it state (enabled or disabled) must match
|
||||
* hardcoded device features state, otherwise flags are marked as invalid.
|
||||
*/
|
||||
bool ethtool_invalid_flags(struct net_device *dev, u32 data, u32 supported)
|
||||
{
|
||||
u32 features = dev->features & flags_dup_features;
|
||||
/* "data" can contain only flags_dup_features bits,
|
||||
* see __ethtool_set_flags */
|
||||
|
||||
return (features & ~supported) != (data & ~supported);
|
||||
}
|
||||
EXPORT_SYMBOL(ethtool_invalid_flags);
|
||||
|
||||
int ethtool_op_set_flags(struct net_device *dev, u32 data, u32 supported)
|
||||
{
|
||||
if (data & ~supported)
|
||||
if (ethtool_invalid_flags(dev, data, supported))
|
||||
return -EINVAL;
|
||||
|
||||
dev->features = ((dev->features & ~flags_dup_features) |
|
||||
|
||||
Reference in New Issue
Block a user