MAC Address를 변경한다면 u-boot모드에서 진행 가능합니다. 아래 방법을 참고하여 진행 해보시길 바랍니다.
Kernel 수정
PATH: arch/arm/kernel/
FILE: setup.c
아래 사항 추가
unsigned int system_serial_high;
EXPORT_SYMBOL(system_serial_high);
unsigned int elf_hwcap __read_mostly;
EXPORT_SYMBOL(elf_hwcap);
/* SDKIM MAC */
char *mv_ethaddr = "ba:b0:be:ad:00:00";
EXPORT_SYMBOL(mv_ethaddr);
#ifdef MULTI_CPU
struct processor processor __read_mostly;
#endif
#ifdef MULTI_TLB
struct cpu_tlb_fns cpu_tlb __read_mostly;
early_param("mem", early_mem);
………………….
/* SDKIM for MAC */
static int __init early_ethaddr(char *p){
mv_ethaddr = p;
return 0;
}
early_param("ethaddr", early_ethaddr);
static void __init
setup_ramdisk(int doload, int prompt, int image_start, unsigned int rd_sz)
{
PATH: drivers/net/
FILE: smsc911x.c
아래 사항 추가
/* shifted register access */
static const struct smsc911x_ops shifted_smsc911x_ops = {
.reg_read = __smsc911x_reg_read_shift,
.reg_write = __smsc911x_reg_write_shift,
.rx_readfifo = smsc911x_rx_readfifo_shift,
.tx_writefifo = smsc911x_tx_writefifo_shift,
};
/* SDKIM */
extern char *mv_ethaddr;
static void parse_mv_ethaddr(unsigned char *ethaddr){
char tmp[3];
int i;
for(i = 0; i < 6; i++){
memset(tmp, 0, sizeof(tmp));
memcpy(tmp, &mv_ethaddr[i * 3], 2);
ethaddr[i] = simple_strtoul(tmp, NULL, 16);
}
}
static int __devinit smsc911x_drv_probe(struct platform_device *pdev)
………………………….
#else
parse_mv_ethaddr(dev->dev_addr);
if(is_valid_ether_addr(dev->dev_addr)){
smsc911x_set_hw_mac_address(pdata, dev->dev_addr);
}else{
smsc911x_read_mac_address(dev);
if (is_valid_ether_addr(dev->dev_addr)) {
smsc911x_set_hw_mac_address(pdata, dev->dev_addr);
}else{
random_ether_addr(dev->dev_addr);
smsc911x_set_hw_mac_address(pdata, dev->dev_addr);
}
}