- max_objects=hostchip->max_objects;
- for (i=0; i<max_objects; i++) {
- obj=(struct msgobj_t *)kmalloc(sizeof(struct msgobj_t),GFP_KERNEL);
- hostchip->msgobj[i]=obj;
- if (obj == NULL)
- return -ENOMEM;
- else
- if ( add_mem_to_list(obj) )
- return -ENOMEM;
-
- memset(obj, 0, sizeof(struct msgobj_t));
-
- atomic_set(&obj->obj_used,0);
- INIT_LIST_HEAD(&obj->obj_users);
- qends = (struct canque_ends_t *)kmalloc(sizeof(struct canque_ends_t), GFP_KERNEL);
- if(qends == NULL) return -ENOMEM;
- if(add_mem_to_list(qends)) return -ENOMEM;
- memset(qends, 0, sizeof(struct canque_ends_t));
- obj->hostchip=hostchip;
- obj->object=i+1;
- obj->qends=qends;
- obj->tx_qedge=NULL;
- obj->tx_slot=NULL;
- obj->flags = 0x0;
-
- canqueue_ends_init_chip(qends, hostchip, obj);
-
- if (minorbase == -1) minorbase=obj_count;
- if ((minorbase >= 0) && (minorbase+i<MAX_TOT_MSGOBJS)){
- objects_p[minorbase+i]=obj;
- obj->minor=minorbase+i;
- } else obj->minor=-1;
-
- candev->hwspecops->init_obj_data(hostchip,i);
-
- obj_count++;
- }