aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/eth_media.c
diff options
context:
space:
mode:
authorZiyann <jaraidaniel@gmail.com>2014-11-26 11:37:03 +0100
committerZiyann <jaraidaniel@gmail.com>2014-11-26 11:37:03 +0100
commite90611725bc4dcc8946e74c38bb2c58fdf6bf98f (patch)
treea6a2441a53406a47f3a4b4a5103c0a067aaab445 /net/tipc/eth_media.c
parentda82942bbd6a40cf7ddd3edc52352610905137ce (diff)
parent5dba9ddd98cbc7ad319d687887981a0ea0062c75 (diff)
downloadkernel_samsung_tuna-e90611725bc4dcc8946e74c38bb2c58fdf6bf98f.zip
kernel_samsung_tuna-e90611725bc4dcc8946e74c38bb2c58fdf6bf98f.tar.gz
kernel_samsung_tuna-e90611725bc4dcc8946e74c38bb2c58fdf6bf98f.tar.bz2
Merge remote-tracking branch 'linux/linux-3.0.y' into stable-newpvr
Conflicts: arch/arm/include/asm/hardware/cache-l2x0.h
Diffstat (limited to 'net/tipc/eth_media.c')
-rw-r--r--net/tipc/eth_media.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c
index b69092e..a8c2a6b2 100644
--- a/net/tipc/eth_media.c
+++ b/net/tipc/eth_media.c
@@ -53,6 +53,7 @@ struct eth_bearer {
struct tipc_bearer *bearer;
struct net_device *dev;
struct packet_type tipc_packet_type;
+ struct work_struct setup;
};
static struct eth_bearer eth_bearers[MAX_ETH_BEARERS];
@@ -121,6 +122,17 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev,
}
/**
+ * setup_bearer - setup association between Ethernet bearer and interface
+ */
+static void setup_bearer(struct work_struct *work)
+{
+ struct eth_bearer *eb_ptr =
+ container_of(work, struct eth_bearer, setup);
+
+ dev_add_pack(&eb_ptr->tipc_packet_type);
+}
+
+/**
* enable_bearer - attach TIPC bearer to an Ethernet interface
*/
@@ -167,7 +179,8 @@ static int enable_bearer(struct tipc_bearer *tb_ptr)
eb_ptr->tipc_packet_type.af_packet_priv = eb_ptr;
INIT_LIST_HEAD(&(eb_ptr->tipc_packet_type.list));
dev_hold(dev);
- dev_add_pack(&eb_ptr->tipc_packet_type);
+ INIT_WORK(&eb_ptr->setup, setup_bearer);
+ schedule_work(&eb_ptr->setup);
}
/* Associate TIPC bearer with Ethernet bearer */