Just got this info from this website:
http://blog.csdn.net/hongjiujing/arc...6/4485665.aspx
Basically it seems that missing wifi was due to the virtual address they use to address the wifi. I am not expert....Hope some linux guru here will be able to explain further and enable us to directly modify the files in smartq to enable direct pointing to the wifi device and remove the virtual one....
关于智器marvell8686 WIFI驱动使用网络管理器HAL硬件抽象消息不对的解决方案! 收藏
现象:
use libertas_sdio driver (2.6.24.2)
cd /sys/class/net/eth3/
/sys/devices/platform/s3c-hsmmc1.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/eth3
but use official driver marvell8686
eth0 is in
/sys/device/virtual/net/eth0
caused HAL can't know it is a real WLAN !
did official driver miss some issue ?
i obtain official marvell8686 driver from
http://zenvoid.org/software/qi-smart...martq.tar.lzma
following use libertas_sdio driver is ok,can make HAL know it is a real
WLAN!
udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a'
info.capabilities = {'net', 'net.80211'} (string list)
info.category = 'net.80211' (string)
info.parent =
'/org/freedesktop/Hal/devices/platform_s3c_hsmmc1_1_mmc_card_rca1_sdio1'
(string)
info.product = 'WLAN Interface' (string)
info.subsystem = 'net' (string)
info.udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a'
(string)
linux.hotplug_type = 2 (0x2) (int)
linux.subsystem = 'net' (string)
linux.sysfs_path =
'/sys/devices/platform/s3c-hsmmc1.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/eth3' (st)
net.80211.mac_address = 113474998138 (0x1a6ba30f7a) (uint64)
net.address = '00:1a:6b:a3:0f:7a' (string)
net.arp_proto_hw_id = 1 (0x1) (int)
net.interface = 'eth3' (string)
net.linux.ifindex = 2 (0x2) (int)
net.originating_device =
'/org/freedesktop/Hal/devices/platform_s3c_hsmmc1_1_mmc_card_rca1_sdio1'
(strin)
use officai marvell8686 driver is
udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a'
info.capabilities = {'net', 'net.80211'} (string list)
info.category = 'net.80211' (string)
info.subsystem = 'net' (string)
info.udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a'
(string)
linux.subsystem = 'net' (string)
linux.sysfs_path = '/sys/devices/virtual/net/eth0' (string)
=======>virtual one
net.80211.mac_address = 113474998138 (0x1a6ba30f7a) (uint64)
net.address = '00:1a:6b:a3:0f:7a' (string)
net.arp_proto_hw_id = 1 (0x1) (int)
net.interface = 'eth0' (string)
net.linux.ifindex = 2 (0x2) (int)
net.originating_device = '/org/freedesktop/Hal/devices/computer'
(string)
解决方法:添加WIFI驱动hotplug,当总线检测代id相macth的设备或者驱动时调用,wlan _probe
->wlan_probe
->wlan_add_card
->sbi_register_dev
->priv->hotplug_device = &func->dev;这样priv->hotplug_device就指向了/sys/bus/sdio/devices下的设备节点描述结构体
而原版的驱动如果KERNEL没有选择CONFIG_SYSFS_DUPLICATE ,设备指向/sys/device/virtual,对于内核而言,这是一个虚拟设备,尽管网络协议层已经知道它是一个WLAN设备,但是KE RNEL却不认识,就认为它是一个虚拟的网卡设备,导致HAL硬件抽像层获取WLAN的消息不对,使得网络 管理器不工作。
代码修改:添加驱动向KERNEL的hotplug相关代码。
修改后的数据:
udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a'
info.capabilities = {'net', 'net.80211'} (string list)
info.category = 'net.80211' (string)
info.subsystem = 'net' (string)
info.udi = '/org/freedesktop/Hal/devices/net_00_1a_6b_a3_0f_7a' (string)
linux.subsystem = 'net' (string)
linux.sysfs_path = '/sys/devices/platform/s3c-hsmmc1.1/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/eth3' (st)
net.80211.mac_address = 113474998138 (0x1a6ba30f7a) (uint64)
net.address = '00:1a:6b:a3:0f:7a' (string)
net.arp_proto_hw_id = 1 (0x1) (int)
net.interface = 'eth3' (string)
net.linux.ifindex = 4 (0x4) (int)
net.originating_device = '/org/freedesktop/Hal/devices/platform_s3c_hsmmc1_1_mmc_host_mmc_card_rca1_sdio1 )
!
昨天下午工作效率太低,晚上上网查了一些资料,今天早上解决。