I’d like to configure specific MAC address for RNDIS host. 

According to RNDIS specification this job can be done by responding 
OID_802_3_PERMANENT_ADDRESS query.

 

The host MAC address configured by UsbDeviceManager: initRndisAddress so I 
modified random generation to fixed mac address, such as ba:2c:8d:f4:2d:a2

 

However this address was changed to random address once again.

 

Please see the u_ether.c: gether_setup_name function.

It generate random host MAC if host_addr is not exist or invalid mac 
address. After then it copied it to RNDIS’s host mac address. So that host 
mac address always generated randomly.

 

When I update host_addr as below I finally make static host mac address.
  
Android.c

@@ -461,6 +461,7 @@

 {

    int ret; 

    struct rndis_function_config *rndis = f->config;

+   unsigned char conf_host_addr[16];

 

    if (!rndis) {

        pr_err("%s: rndis_pdata\n", __func__);

@@ -471,6 +472,13 @@

        rndis->ethaddr[0], rndis->ethaddr[1], rndis->ethaddr[2],

        rndis->ethaddr[3], rndis->ethaddr[4], rndis->ethaddr[5]);

 

+   memset(conf_host_addr, 0, 16);

+   sprintf(conf_host_addr, "%x:%x:%x:%x:%x:%x", 

+       rndis->ethaddr[0], rndis->ethaddr[1], rndis->ethaddr[2],

+       rndis->ethaddr[3], rndis->ethaddr[4], rndis->ethaddr[5]);

+   

+   host_addr = conf_host_addr;

+   

    ret = gether_setup_name(c->cdev->gadget, rndis->ethaddr, "rndis");

    if (ret) {

        pr_err("%s: gether_setup failed\n", __func__);
  
 

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-kernel

Reply via email to