vserver 1.9.5.x5
[linux-2.6.git] / drivers / char / ipmi / ipmi_msghandler.c
index 4191db2..fe02300 100644 (file)
@@ -49,7 +49,7 @@
 #define PFX "IPMI message handler: "
 #define IPMI_MSGHANDLER_VERSION "v33"
 
-struct ipmi_recv_msg *ipmi_alloc_recv_msg(void);
+static struct ipmi_recv_msg *ipmi_alloc_recv_msg(void);
 static int ipmi_init_msghandler(void);
 
 static int initialized = 0;
@@ -294,44 +294,6 @@ struct ipmi_smi
        unsigned int events;
 };
 
-int
-ipmi_register_all_cmd_rcvr(ipmi_user_t user)
-{
-       unsigned long flags;
-       int           rv = -EBUSY;
-
-       write_lock_irqsave(&(user->intf->users_lock), flags);
-       write_lock(&(user->intf->cmd_rcvr_lock));
-       if ((user->intf->all_cmd_rcvr == NULL)
-           && (list_empty(&(user->intf->cmd_rcvrs))))
-       {
-               user->intf->all_cmd_rcvr = user;
-               rv = 0;
-       }
-       write_unlock(&(user->intf->cmd_rcvr_lock));
-       write_unlock_irqrestore(&(user->intf->users_lock), flags);
-       return rv;
-}
-
-int
-ipmi_unregister_all_cmd_rcvr(ipmi_user_t user)
-{
-       unsigned long flags;
-       int           rv = -EINVAL;
-
-       write_lock_irqsave(&(user->intf->users_lock), flags);
-       write_lock(&(user->intf->cmd_rcvr_lock));
-       if (user->intf->all_cmd_rcvr == user)
-       {
-               user->intf->all_cmd_rcvr = NULL;
-               rv = 0;
-       }
-       write_unlock(&(user->intf->cmd_rcvr_lock));
-       write_unlock_irqrestore(&(user->intf->users_lock), flags);
-       return rv;
-}
-
-
 #define MAX_IPMI_INTERFACES 4
 static ipmi_smi_t ipmi_interfaces[MAX_IPMI_INTERFACES];
 
@@ -342,7 +304,7 @@ static DECLARE_RWSEM(interfaces_sem);
 
 /* Directly protects the ipmi_interfaces data structure.  This is
    claimed in the timer interrupt. */
-static spinlock_t interfaces_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(interfaces_lock);
 
 /* List of watchers that want to know when smi's are added and
    deleted. */
@@ -389,7 +351,7 @@ call_smi_watchers(int i)
        up_read(&smi_watchers_sem);
 }
 
-int
+static int
 ipmi_addr_equal(struct ipmi_addr *addr1, struct ipmi_addr *addr2)
 {
        if (addr1->addr_type != addr2->addr_type)
@@ -481,6 +443,9 @@ unsigned int ipmi_addr_length(int addr_type)
                return sizeof(struct ipmi_ipmb_addr);
        }
 
+       if (addr_type == IPMI_LAN_ADDR_TYPE)
+               return sizeof(struct ipmi_lan_addr);
+
        return 0;
 }
 
@@ -1360,26 +1325,6 @@ static inline int i_ipmi_request(ipmi_user_t          user,
        return rv;
 }
 
-int ipmi_request(ipmi_user_t      user,
-                struct ipmi_addr *addr,
-                long             msgid,
-                struct kernel_ipmi_msg  *msg,
-                void             *user_msg_data,
-                int              priority)
-{
-       return i_ipmi_request(user,
-                             user->intf,
-                             addr,
-                             msgid,
-                             msg,
-                             user_msg_data,
-                             NULL, NULL,
-                             priority,
-                             user->intf->my_address,
-                             user->intf->my_lun,
-                             -1, 0);
-}
-
 int ipmi_request_settime(ipmi_user_t      user,
                         struct ipmi_addr *addr,
                         long             msgid,
@@ -1426,28 +1371,6 @@ int ipmi_request_supply_msgs(ipmi_user_t          user,
                              -1, 0);
 }
 
-int ipmi_request_with_source(ipmi_user_t      user,
-                            struct ipmi_addr *addr,
-                            long             msgid,
-                            struct kernel_ipmi_msg  *msg,
-                            void             *user_msg_data,
-                            int              priority,
-                            unsigned char    source_address,
-                            unsigned char    source_lun)
-{
-       return i_ipmi_request(user,
-                             user->intf,
-                             addr,
-                             msgid,
-                             msg,
-                             user_msg_data,
-                             NULL, NULL,
-                             priority,
-                             source_address,
-                             source_lun,
-                             -1, 0);
-}
-
 static int ipmb_file_read_proc(char *page, char **start, off_t off,
                               int count, int *eof, void *data)
 {
@@ -1702,14 +1625,6 @@ channel_handler(ipmi_smi_t intf, struct ipmi_smi_msg *msg)
        return;
 }
 
-void ipmi_poll_interface(ipmi_user_t user)
-{
-       ipmi_smi_t intf = user->intf;
-
-       if (intf->handlers->poll)
-               intf->handlers->poll(intf->send_info);
-}
-
 int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
                      void                     *send_info,
                      unsigned char            version_major,
@@ -2389,12 +2304,17 @@ static int handle_bmc_rsp(ipmi_smi_t          intf,
 
        if (!found) {
                /* Special handling for NULL users. */
-               if (!recv_msg->user && intf->null_user_handler)
+               if (!recv_msg->user && intf->null_user_handler){
                        intf->null_user_handler(intf, msg);
-               /* The user for the message went away, so give up. */
-               spin_lock_irqsave(&intf->counter_lock, flags);
-               intf->unhandled_local_responses++;
-               spin_unlock_irqrestore(&intf->counter_lock, flags);
+                       spin_lock_irqsave(&intf->counter_lock, flags);
+                       intf->handled_local_responses++;
+                       spin_unlock_irqrestore(&intf->counter_lock, flags);
+               }else{
+                       /* The user for the message went away, so give up. */
+                       spin_lock_irqsave(&intf->counter_lock, flags);
+                       intf->unhandled_local_responses++;
+                       spin_unlock_irqrestore(&intf->counter_lock, flags);
+               }
                ipmi_free_recv_msg(recv_msg);
        } else {
                struct ipmi_system_interface_addr *smi_addr;
@@ -3126,9 +3046,9 @@ static int panic_event(struct notifier_block *this,
 }
 
 static struct notifier_block panic_block = {
-       panic_event,
-       NULL,
-       200   /* priority: INT_MAX >= x >= 0 */
+       .notifier_call  = panic_event,
+       .next           = NULL,
+       .priority       = 200   /* priority: INT_MAX >= x >= 0 */
 };
 
 static int ipmi_init_msghandler(void)
@@ -3211,15 +3131,11 @@ module_exit(cleanup_ipmi);
 module_init(ipmi_init_msghandler_mod);
 MODULE_LICENSE("GPL");
 
-EXPORT_SYMBOL(ipmi_alloc_recv_msg);
 EXPORT_SYMBOL(ipmi_create_user);
 EXPORT_SYMBOL(ipmi_destroy_user);
 EXPORT_SYMBOL(ipmi_get_version);
-EXPORT_SYMBOL(ipmi_request);
 EXPORT_SYMBOL(ipmi_request_settime);
 EXPORT_SYMBOL(ipmi_request_supply_msgs);
-EXPORT_SYMBOL(ipmi_request_with_source);
-EXPORT_SYMBOL(ipmi_poll_interface);
 EXPORT_SYMBOL(ipmi_register_smi);
 EXPORT_SYMBOL(ipmi_unregister_smi);
 EXPORT_SYMBOL(ipmi_register_for_cmd);
@@ -3227,12 +3143,9 @@ EXPORT_SYMBOL(ipmi_unregister_for_cmd);
 EXPORT_SYMBOL(ipmi_smi_msg_received);
 EXPORT_SYMBOL(ipmi_smi_watchdog_pretimeout);
 EXPORT_SYMBOL(ipmi_alloc_smi_msg);
-EXPORT_SYMBOL(ipmi_register_all_cmd_rcvr);
-EXPORT_SYMBOL(ipmi_unregister_all_cmd_rcvr);
 EXPORT_SYMBOL(ipmi_addr_length);
 EXPORT_SYMBOL(ipmi_validate_addr);
 EXPORT_SYMBOL(ipmi_set_gets_events);
-EXPORT_SYMBOL(ipmi_addr_equal);
 EXPORT_SYMBOL(ipmi_smi_watcher_register);
 EXPORT_SYMBOL(ipmi_smi_watcher_unregister);
 EXPORT_SYMBOL(ipmi_set_my_address);