| // SPDX-License-Identifier: GPL-2.0 | |
| #include <linux/types.h> | |
| #include <linux/netdevice.h> | |
| #include <linux/interrupt.h> | |
| #include "lmc_debug.h" | |
| /* | |
| * Prints out len, max to 80 octets using printk, 20 per line | |
| */ | |
| #ifdef DEBUG | |
| #ifdef LMC_PACKET_LOG | |
| void lmcConsoleLog(char *type, unsigned char *ucData, int iLen) | |
| { | |
| int iNewLine = 1; | |
| char str[80], *pstr; | |
| sprintf(str, KERN_DEBUG "lmc: %s: ", type); | |
| pstr = str+strlen(str); | |
| if(iLen > 240){ | |
| printk(KERN_DEBUG "lmc: Printing 240 chars... out of: %d\n", iLen); | |
| iLen = 240; | |
| } | |
| else{ | |
| printk(KERN_DEBUG "lmc: Printing %d chars\n", iLen); | |
| } | |
| while(iLen > 0) | |
| { | |
| sprintf(pstr, "%02x ", *ucData); | |
| pstr+=3; | |
| ucData++; | |
| if( !(iNewLine % 20)) | |
| { | |
| sprintf(pstr, "\n"); | |
| printk(str); | |
| sprintf(str, KERN_DEBUG "lmc: %s: ", type); | |
| pstr=str+strlen(str); | |
| } | |
| iNewLine++; | |
| iLen--; | |
| } | |
| sprintf(pstr, "\n"); | |
| printk(str); | |
| } | |
| #endif | |
| #endif | |
| #ifdef DEBUG | |
| u32 lmcEventLogIndex; | |
| u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS]; | |
| void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3) | |
| { | |
| lmcEventLogBuf[lmcEventLogIndex++] = EventNum; | |
| lmcEventLogBuf[lmcEventLogIndex++] = arg2; | |
| lmcEventLogBuf[lmcEventLogIndex++] = arg3; | |
| lmcEventLogBuf[lmcEventLogIndex++] = jiffies; | |
| lmcEventLogIndex &= (LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS) - 1; | |
| } | |
| #endif /* DEBUG */ | |
| void lmc_trace(struct net_device *dev, char *msg){ | |
| #ifdef LMC_TRACE | |
| unsigned long j = jiffies + 3; /* Wait for 50 ms */ | |
| if(in_interrupt()){ | |
| printk("%s: * %s\n", dev->name, msg); | |
| // while(time_before(jiffies, j+10)) | |
| // ; | |
| } | |
| else { | |
| printk("%s: %s\n", dev->name, msg); | |
| while(time_before(jiffies, j)) | |
| schedule(); | |
| } | |
| #endif | |
| } | |
| /* --------------------------- end if_lmc_linux.c ------------------------ */ |