]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/tipc/subscr.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / tipc / subscr.c
index 33313961d01008548175a6d25e4b54592fed21a2..ca04479c3d423820e66b07c006d2fe0b9e6b3027 100644 (file)
  */
 
 #include "core.h"
-#include "dbg.h"
 #include "name_table.h"
 #include "port.h"
-#include "ref.h"
 #include "subscr.h"
 
 /**
@@ -66,14 +64,13 @@ struct subscriber {
  */
 
 struct top_srv {
-       u32 user_ref;
        u32 setup_port;
        atomic_t subscription_count;
        struct list_head subscriber_list;
        spinlock_t lock;
 };
 
-static struct top_srv topsrv = { 0 };
+static struct top_srv topsrv;
 
 /**
  * htohl - convert value to endianness used by destination
@@ -252,8 +249,6 @@ static void subscr_terminate(struct subscriber *subscriber)
                        k_cancel_timer(&sub->timer);
                        k_term_timer(&sub->timer);
                }
-               dbg("Term: Removing sub %u,%u,%u from subscriber %x list\n",
-                   sub->seq.type, sub->seq.lower, sub->seq.upper, subscriber);
                subscr_del(sub);
        }
 
@@ -310,8 +305,6 @@ static void subscr_cancel(struct tipc_subscr *s,
                k_term_timer(&sub->timer);
                spin_lock_bh(subscriber->lock);
        }
-       dbg("Cancel: removing sub %u,%u,%u from subscriber %x list\n",
-           sub->seq.type, sub->seq.lower, sub->seq.upper, subscriber);
        subscr_del(sub);
 }
 
@@ -496,8 +489,7 @@ static void subscr_named_msg_event(void *usr_handle,
 
        /* Create server port & establish connection to subscriber */
 
-       tipc_createport(topsrv.user_ref,
-                       subscriber,
+       tipc_createport(subscriber,
                        importance,
                        NULL,
                        NULL,
@@ -544,21 +536,14 @@ static void subscr_named_msg_event(void *usr_handle,
 int tipc_subscr_start(void)
 {
        struct tipc_name_seq seq = {TIPC_TOP_SRV, TIPC_TOP_SRV, TIPC_TOP_SRV};
-       int res = -1;
+       int res;
 
-       memset(&topsrv, 0, sizeof (topsrv));
+       memset(&topsrv, 0, sizeof(topsrv));
        spin_lock_init(&topsrv.lock);
        INIT_LIST_HEAD(&topsrv.subscriber_list);
 
        spin_lock_bh(&topsrv.lock);
-       res = tipc_attach(&topsrv.user_ref, NULL, NULL);
-       if (res) {
-               spin_unlock_bh(&topsrv.lock);
-               return res;
-       }
-
-       res = tipc_createport(topsrv.user_ref,
-                             NULL,
+       res = tipc_createport(NULL,
                              TIPC_CRITICAL_IMPORTANCE,
                              NULL,
                              NULL,
@@ -572,16 +557,17 @@ int tipc_subscr_start(void)
                goto failed;
 
        res = tipc_nametbl_publish_rsv(topsrv.setup_port, TIPC_NODE_SCOPE, &seq);
-       if (res)
+       if (res) {
+               tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
                goto failed;
+       }
 
        spin_unlock_bh(&topsrv.lock);
        return 0;
 
 failed:
        err("Failed to create subscription service\n");
-       tipc_detach(topsrv.user_ref);
-       topsrv.user_ref = 0;
        spin_unlock_bh(&topsrv.lock);
        return res;
 }
@@ -592,8 +578,10 @@ void tipc_subscr_stop(void)
        struct subscriber *subscriber_temp;
        spinlock_t *subscriber_lock;
 
-       if (topsrv.user_ref) {
+       if (topsrv.setup_port) {
                tipc_deleteport(topsrv.setup_port);
+               topsrv.setup_port = 0;
+
                list_for_each_entry_safe(subscriber, subscriber_temp,
                                         &topsrv.subscriber_list,
                                         subscriber_list) {
@@ -602,7 +590,5 @@ void tipc_subscr_stop(void)
                        subscr_terminate(subscriber);
                        spin_unlock_bh(subscriber_lock);
                }
-               tipc_detach(topsrv.user_ref);
-               topsrv.user_ref = 0;
        }
 }