* New CAN queues by Pavel Pisa - OCERA team member
* email:pisa@cmp.felk.cvut.cz
* This software is released under the GPL-License.
- * Version lincan-0.2 9 Jul 2003
+ * Version lincan-0.3 17 Jun 2004
*/
#ifdef CAN_WITH_RTL
#include <rtl_malloc.h>
+can_spinlock_t can_irq_manipulation_lock;
+
unsigned int can_rtl_isr( unsigned int irq_num, struct pt_regs *r )
{
struct chip_t *chip;
DEBUGMSG("IRQ_REQUEST processing ...\n");
loop_cnt = 100;
if(chip->chipspecops->irq_handler) do{
- ret=chip->chipspecops->irq_handler(chip->chip_irq,chip,NULL);
+ ret=chip->chipspecops->irq_handler(chip->chip_irq,chip);
}while(ret && --loop_cnt);
continue;
}
for(i=0;i<chip->max_objects;i++){
if((obj=chip->msgobj[i])==NULL)
continue;
- if(!can_msgobj_test_and_clear_fl(obj,TX_REQUEST))
- continue;
- DEBUGMSG("Calling wakeup_tx\n");
- chip->chipspecops->wakeup_tx(chip, obj);
+ if(can_msgobj_test_fl(obj,TX_REQUEST)) {
+ DEBUGMSG("Calling wakeup_tx\n");
+ chip->chipspecops->wakeup_tx(chip, obj);
+ }
+ if(can_msgobj_test_fl(obj,FILTCH_REQUEST)) {
+ DEBUGMSG("Calling filtch_rq\n");
+ if(chip->chipspecops->filtch_rq)
+ chip->chipspecops->filtch_rq(chip, obj);
+ }
}
continue;
}