unsigned int hi_promis_start(const char *ifname)
{
int ret;
hi_wifi_ptype_filter filter = {0};
filter.mdata_en = 1;
filter.udata_en = 1;
filter.mmngt_en = 1;
filter.umngt_en = 1;
hi_wifi_promis_set_rx_callback(hi_promis_recv);
hi_at_printf("hi_wifi_promis_enable: start!\r\n");
ret = hi_wifi_promis_enable(ifname, 1, &filter);
if (ret != HI_ERR_SUCCESS) {
hi_at_printf("hi_wifi_promis_enable:: set error!\r\n");
return ret;
}
hi_at_printf("start promis SUCCESS!\r\n");
return HI_ERR_SUCCESS;
}
代码执行后直接返回 set error!信息,并且hi_wifi_promis_enable内部的所有错误信息都没有输出,函数入口增加一句打印输出,也没有打印,好像这个函数根本没有进,但整个代码中也只有这一处函数的实现。迷惘中……
hi_s32 hi_wifi_promis_enable(const hi_char *ifname, hi_s32 enable, const hi_wifi_ptype_filter *filter)
{
hi_s32 l_ret;
hi_u8 filter_value;
oal_net_device_stru *netdev = HI_NULL;
hi_at_printf("hi_wifi_promis_enable parameter NULL.\r\n");
if ((ifname == HI_NULL) || (filter == HI_NULL)) {
oam_error_log0(0, 0, "hi_wifi_promis_enable parameter NULL.");
return HI_FAIL;
}
filter_value = *((hi_u8 *)((hi_void *)filter)) & 0x0F;
netdev = oal_get_netdev_by_name(ifname);
if (netdev == HI_NULL) {
oam_error_log0(0, 0, "hi_wifi_promis_enable device not found.");
return HI_FAIL;
}
if ((enable != HI_FALSE) && (enable != HI_TRUE)) {
oam_error_log0(0, 0, "hi_wifi_promis_enable invalid parameter.");
return HI_FAIL;
}
if (enable == HI_FALSE) {
filter_value = 0;
}
l_ret = wifi_promis_set(netdev, filter_value);
return l_ret;
}
更多回帖