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