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;
memset(info, 0, sizeof(*info));
info->io_setup = mem_setup;
- info->io.info = (void *) addrs[intf_num];
+ info->io.info = &addrs[intf_num];
info->io.addr = NULL;
info->io.regspacing = regspacings[intf_num];
if (!info->io.regspacing)
case 0x01: /* 32-bit boundaries */
ipmi_data->offset = 4;
break;
- case 0x02: /* 16-bit boundaries */
- ipmi_data->offset = 2;
+ case 0x02: /* 16-byte boundaries */
+ ipmi_data->offset = 16;
+ break;
default:
printk("ipmi_si: Unknown SMBIOS IPMI Base Addr"
" Modifier: 0x%x\n", reg_spacing);