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: (27 commits) pktgen: make sure that pktgen_thread_worker has been executed [VLAN]: Propagate selected feature bits to VLAN devices drivers/atm/: remove CVS keywords vlan: Correctly handle device notifications for layered VLAN devices net: Fix call to ->change_rx_flags(dev, IFF_MULTICAST) in dev_change_flags() net_sched: cls_api: fix return value for non-existant classifiers ipsec: Use the correct ip_local_out function ipv6 addrconf: Allow infinite prefix lifetime. ipv6 route: Fix lifetime in netlink. ipv6 addrconf: Fix route lifetime setting in corner case. ndisc: Add missing strategies for per-device retrans timer/reachable time settings. ipv6: Move <linux/in6.h> from header-y to unifdef-y. l2tp: avoid skb truesize bug if headroom is increased wireless: Create 'device' symlink in sysfs wireless, airo: waitbusy() won't delay libertas: fix command timeout after firmware failure mac80211: Add RTNL version of ieee80211_iterate_active_interfaces mac80211 : Association with 11n hidden ssid ap. hostap: fix "registers" registration in procfs isdn/capi: Return proper errnos on module init. ...
This commit is contained in:
@@ -1437,8 +1437,16 @@ int bond_create_sysfs(void)
|
||||
* configure multiple bonding devices.
|
||||
*/
|
||||
if (ret == -EEXIST) {
|
||||
netdev_class = NULL;
|
||||
return 0;
|
||||
/* Is someone being kinky and naming a device bonding_master? */
|
||||
if (__dev_get_by_name(&init_net,
|
||||
class_attr_bonding_masters.attr.name))
|
||||
printk(KERN_ERR
|
||||
"network device named %s already exists in sysfs",
|
||||
class_attr_bonding_masters.attr.name);
|
||||
else {
|
||||
netdev_class = NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@@ -980,6 +980,8 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
||||
__wsum csum = 0;
|
||||
struct udphdr *uh;
|
||||
unsigned int len;
|
||||
int old_headroom;
|
||||
int new_headroom;
|
||||
|
||||
if (sock_flag(sk, SOCK_DEAD) || !(sk->sk_state & PPPOX_CONNECTED))
|
||||
goto abort;
|
||||
@@ -1001,16 +1003,18 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
||||
|
||||
/* Check that there's enough headroom in the skb to insert IP,
|
||||
* UDP and L2TP and PPP headers. If not enough, expand it to
|
||||
* make room. Note that a new skb (or a clone) is
|
||||
* allocated. If we return an error from this point on, make
|
||||
* sure we free the new skb but do not free the original skb
|
||||
* since that is done by the caller for the error case.
|
||||
* make room. Adjust truesize.
|
||||
*/
|
||||
headroom = NET_SKB_PAD + sizeof(struct iphdr) +
|
||||
sizeof(struct udphdr) + hdr_len + sizeof(ppph);
|
||||
old_headroom = skb_headroom(skb);
|
||||
if (skb_cow_head(skb, headroom))
|
||||
goto abort;
|
||||
|
||||
new_headroom = skb_headroom(skb);
|
||||
skb_orphan(skb);
|
||||
skb->truesize += new_headroom - old_headroom;
|
||||
|
||||
/* Setup PPP header */
|
||||
__skb_push(skb, sizeof(ppph));
|
||||
skb->data[0] = ppph[0];
|
||||
@@ -1065,7 +1069,6 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
||||
/* Get routing info from the tunnel socket */
|
||||
dst_release(skb->dst);
|
||||
skb->dst = dst_clone(__sk_dst_get(sk_tun));
|
||||
skb_orphan(skb);
|
||||
skb->sk = sk_tun;
|
||||
|
||||
/* Queue the packet to IP for output */
|
||||
|
@@ -2668,6 +2668,7 @@ static struct net_device *init_wifidev(struct airo_info *ai,
|
||||
dev->irq = ethdev->irq;
|
||||
dev->base_addr = ethdev->base_addr;
|
||||
dev->wireless_data = ethdev->wireless_data;
|
||||
SET_NETDEV_DEV(dev, ethdev->dev.parent);
|
||||
memcpy(dev->dev_addr, ethdev->dev_addr, dev->addr_len);
|
||||
err = register_netdev(dev);
|
||||
if (err<0) {
|
||||
@@ -2904,7 +2905,7 @@ EXPORT_SYMBOL(init_airo_card);
|
||||
|
||||
static int waitbusy (struct airo_info *ai) {
|
||||
int delay = 0;
|
||||
while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) & (delay < 10000)) {
|
||||
while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {
|
||||
udelay (10);
|
||||
if ((++delay % 20) == 0)
|
||||
OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY);
|
||||
|
@@ -3276,11 +3276,6 @@ while (0)
|
||||
}
|
||||
printk(KERN_INFO "%s: Registered netdevice %s\n", dev_info, dev->name);
|
||||
|
||||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
create_proc_read_entry("registers", 0, local->proc,
|
||||
prism2_registers_proc_read, local);
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
|
||||
hostap_init_data(local);
|
||||
return dev;
|
||||
|
||||
@@ -3307,6 +3302,10 @@ static int hostap_hw_ready(struct net_device *dev)
|
||||
netif_carrier_off(local->ddev);
|
||||
}
|
||||
hostap_init_proc(local);
|
||||
#ifndef PRISM2_NO_PROCFS_DEBUG
|
||||
create_proc_read_entry("registers", 0, local->proc,
|
||||
prism2_registers_proc_read, local);
|
||||
#endif /* PRISM2_NO_PROCFS_DEBUG */
|
||||
hostap_init_ap_proc(local);
|
||||
return 0;
|
||||
}
|
||||
|
@@ -11584,6 +11584,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
|
||||
priv->prom_net_dev->hard_start_xmit = ipw_prom_hard_start_xmit;
|
||||
|
||||
priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR;
|
||||
SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev);
|
||||
|
||||
rc = register_netdev(priv->prom_net_dev);
|
||||
if (rc) {
|
||||
|
@@ -756,6 +756,7 @@ static int lbs_thread(void *data)
|
||||
priv->nr_retries = 0;
|
||||
} else {
|
||||
priv->cur_cmd = NULL;
|
||||
priv->dnld_sent = DNLD_RES_RECEIVED;
|
||||
lbs_pr_info("requeueing command %x due to timeout (#%d)\n",
|
||||
le16_to_cpu(cmdnode->cmdbuf->command), priv->nr_retries);
|
||||
|
||||
@@ -1564,6 +1565,7 @@ static int lbs_add_rtap(struct lbs_private *priv)
|
||||
rtap_dev->hard_start_xmit = lbs_rtap_hard_start_xmit;
|
||||
rtap_dev->set_multicast_list = lbs_set_multicast_list;
|
||||
rtap_dev->priv = priv;
|
||||
SET_NETDEV_DEV(rtap_dev, priv->dev->dev.parent);
|
||||
|
||||
ret = register_netdev(rtap_dev);
|
||||
if (ret) {
|
||||
|
Reference in New Issue
Block a user