타겟 보드에서 랜드라이버가 올라가는 도중 문제가 발생합니다.
이주째 삽질을 하다가 여러 분들의 조언을 듣고자 이렇게 글을 올립니다.
보드의 간단한 사양은 amd au1200 이고 랜은 smsc lan91c111-ne입니다.
커널에서 랜을 올리는데 문제가 발생 하는데 원인을 모르겠습니다.
제가 실시간으로 확인 중이니 조언좀 부탁드립니다.
아래 문제되는 소스는 Smc91111.c 입니다.
static int smc_wait_to_send_packet( struct sk_buff * skb, struct net_device * dev )
{
struct smc_local *lp = (struct smc_local *)dev->priv;
unsigned int ioaddr = dev->base_addr;
word length;
unsigned short numPages;
word time_out;
word status;
PRINTK3("%s:smc_wait_to_send_packet\n", dev->name);
udelay(200);
if ( lp->saved_skb) {
/* THIS SHOULD NEVER HAPPEN. */
lp->stats.tx_aborted_errors++;
printk("%s: Bad Craziness - sent packet while busy.\n",
dev->name); //이부분에서 계속 루프를 도네요....원인두 모르겠고...ㅠㅠ
return 1;
}
lp->saved_skb = skb;
로고를 간단하게 올리면......
loop: loaded (max 8 devices)
LAN91C111: You shouldn't use auto-probing with insmod!
SMSC LAN91C111 Driver (v2.01), (Linux Kernel 2.4 + Support for Odd Byte) 12/13/04
ethaddr not set in boot prom
eth0: SMC91C11xFD(rev:2) at 0xb9000300 IRQ:44 MEMSIZE:8192b NOWAIT:1 ADDR: 00:00:00:00:00:00
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
Db1200 Flash: probing 16-bit flash bus
Db1200 Flash: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 3 MTD partitions on "Db1200 Flash":
0x00000000-0x00400000 : "User1"
0x00400000-0x00500000 : "YAMON"
0x00500000-0x00800000 : "User2"
NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 0 at 0x00000000
Bad eraseblock 1018 at 0x07f40000
Creating 1 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x00800000-0x08000000 : "NAND FS"
NET: Registered protocol family 2
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
eth0: PHY=LAN83C183 (LAN91C111 Internal)
IP-Config: Complete:
device=eth0, addr=192.168.1.244, mask=255.255.255.0, gw=192.168.1.2,
host=192.168.1.244, domain=, nis-domain=(none),
bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.123
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
eth0: Bad Craziness - sent packet while busy.
.
.
.
.
빨리 문제를 해결해야 할텐데..조언 부탁드립니다.
그냥 지나가다 한자 적습니다.
넘어오는 디바이스 정보 확인하셔야 겠는데요..
소켓 버퍼에 아직 전송할 데이터가 남아 있어서 버퍼를 가지고 있는거 같은데..
그냥 넘어가고 싶으시다면 lp->saved_skb 메모리를 해제하는 코드 한줄 넣어주시던지요.. 물론 좋은 해결책은 아닙니다. ^^;;
디바이스 드라이버의
디바이스 드라이버의 경우, 최신 패치가 배포되었는지 검토해보는것도 좋습니다.
해당디바이스 드라이버를 직접 새로 만드신 것이 아니라면 말입니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
해킹하심?
192.168.1.244 이거 아이피 해킹 서버파일 분해해서 보니까 이거 아이피에 날짜가 2013 년 나오던데
댓글 달기