里面有一段如下,是用来得到和设置网卡的物理mac地址的,但是这个并不是真正写入到网卡的真实mac寄存器里面的,而只是一个临时的保存。虽然说设置过后,你使用ifconfig确实可以看到网卡的mac地址已经改变过来了,但是寄存器里面的地址还没有改变,所以你用改编后的mac来进行ping测试,你发现你ping不同,原因就在这,代码如下:
- case EIOCSADDR: //这条是设置mac地址
- //DRV_LOG (DRV_DEBUG_LOAD, "EIOICSADDR\n", 1, 2, 3, 4, 5, 6);
- printf("\n\n\nset the mac addr is:\n");
- if (data == NULL)
- return (EINVAL);
- bcopy ((char *)data, (char *)END_HADDR(&pDrvCtrl->end),
- END_HADDR_LEN(&pDrvCtrl->end));
/*下面这两句是我自己添加上的,目的是使mac写进寄存器里面,这样的话,就能够ping通了*/
- //bcopy ((char *)data, (char *)(pDrvCtrl->enetAddr),
- //END_HADDR_LEN(&pDrvCtrl->end));
- //dm9000_hash_table(pDrvCtrl);
-
- printf("\n\n\nset the mac addr is:\n");
- pch =(char *)data;
- for(i=0;i<6; i++,pch++)
- printf("0x%c ",*pch);
-
- break;
- case EIOCGADDR: //这条是获取mac地址
- DRV_LOG (DRV_DEBUG_LOAD, "EIOCGADDR\n", 1, 2, 3, 4, 5, 6);
- if (data == NULL)
- return (EINVAL);
- bcopy ((char *)END_HADDR(&pDrvCtrl->end), (char *)data,
- END_HADDR_LEN(&pDrvCtrl->end));
- break;
而设置mac地址的vxworks地址的命令是:
ifconfig "eth0 lladdr 00:14:68:39:ff:5d"