client_reg.EventMask = CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; client_reg.event_handler = &ibmtr_event; 
static dev_link_t *ibmtr_attach(void){    ibmtr_dev_t *info;    dev_link_t *link;    struct net_device *dev;    client_reg_t client_reg;    int ret;        DEBUG(0, "ibmtr_attach()\n");    /* Create new token-ring device */    info = kmalloc(sizeof(*info), GFP_KERNEL);     if (!info) return NULL;    memset(info,0,sizeof(*info));    dev = alloc_trdev(sizeof(struct tok_info));    if (!dev) { 	kfree(info); 	return NULL;    }     link = &info->link;    link->priv = info;    info->ti = netdev_priv(dev);    link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;    link->io.NumPorts1 = 4;    link->io.IOAddrLines = 16;    link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;    link->irq.IRQInfo1 = IRQ_LEVEL_ID;    link->irq.Handler = &tok_interrupt;    link->conf.Attributes = CONF_ENABLE_IRQ;    link->conf.Vcc = 50;    link->conf.IntType = INT_MEMORY_AND_IO;    link->conf.Present = PRESENT_OPTION;    link->irq.Instance = info->dev = dev;        SET_ETHTOOL_OPS(dev, &netdev_ethtool_ops);    /* Register with Card Services */    link->next = dev_list;    dev_list = link;    client_reg.dev_info = &dev_info;    client_reg.EventMask =        CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |        CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |        CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;    client_reg.event_handler = &ibmtr_event;    client_reg.Version = 0x0210;    client_reg.event_callback_args.client_data = link;    ret = pcmcia_register_client(&link->handle, &client_reg);    if (ret != 0) {        cs_error(link->handle, RegisterClient, ret);	goto out_detach;    }out:    return link;out_detach:    ibmtr_detach(link);    link = NULL;    goto out;} /* ibmtr_attach */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/1e212f3645a6b355de8c43a23376bc0e2ac49a63/ibmtr_cs.c/clean/drivers/net/pcmcia/ibmtr_cs.c