现在的情况是我们自己测试以太网是正常工作的,但是寄到客户那里就用不了了。
安卓7.1.2 RK3288
离线
随机数的种子是什么?如果种子一样那么就不随机了哦,
还有,有些交换机/路由器会限制 mac地址的前缀,所以不是任何一个mac地址都可以。
你固定前面三个字节,后面三个字节随机试一试。
/** * eth_random_addr - Generate software assigned random Ethernet address
* @addr: Pointer to a six-byte array containing the Ethernet address *
* Generate a random Ethernet address (MAC) that is not multicast
* and has the local assigned bit set. */
static inline void eth_random_addr(u8 *addr)
{
get_random_bytes(addr, ETH_ALEN);
addr[0] &= 0xfe; /* clear multicast bit */
addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
}
#define random_ether_addr(addr) eth_random_addr(addr)
/**
* eth_hw_addr_random - Generate software assigned random Ethernet and
* set device flag
* @dev: pointer to net_device structure
*
* Generate a random Ethernet address (MAC) to be used by a net device
* and set addr_assign_type so the state can be read by sysfs and be
* used by userspace.
*/
static inline void eth_hw_addr_random(struct net_device *dev)
{
dev->addr_assign_type = NET_ADDR_RANDOM;
eth_random_addr(dev->dev_addr);
}
现在mac地址每次上电都会改变。
离线
随机数的种子是什么?如果种子一样那么就不随机了哦,
还有,有些交换机/路由器会限制 mac地址的前缀,所以不是任何一个mac地址都可以。
你固定前面三个字节,后面三个字节随机试一试。
设备在我们这边是正常的,在用户那边有问题。不可能一直让用户去去做测试,想考虑全面点然后尽可能一次搞定。
离线
也有可能是一些网络设备限制了某些MAC地址.
你是说设置了黑白名单或者ip和mac地址绑定什么的人为操作?
离线
用不了了具体是什么情况?没有获取到IP地址/网关吗?能不能用其他电脑ping通?客户换个端口试一试?
或者是网线问题呢, 或者是 10/100/1000Mbps兼容问题
在家里冥思苦想是没有意义的, 现场的问题千奇百怪。
获取不到ip,开启了dhcp的。路由器、交换机都试了都不行。网线在其他联网设备上是可以用的。这个兼容问题不确定。
现在就是想找到大概的可能性,好一一排查。
离线
那试一试动态mac, 静态给一个固定IP, 看是否可以联网。
如果可以联网,说名很可能是因为发不出去 广播/组播包, 导致无法用 dhcp获取ip地址,因为dhcp是基于 广播/组播的。
有些网络管得严,什么组播广播全禁用了,还分割成vlan,情况复杂着呢。
如果mac地址改用固定的呢?
离线
解决了。是硬件的问题。连不上网络的是1000M网,100M的没问题。就是那个clk串联电阻太大了,gmac的 clk rxclk txclk。信号幅度被销掉了,改成0R 立马就好了。牺牲网速的话,也可以软件上改,dts里设置max-speed=100。
离线