您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ wl12xx_wlvif_to_vif函数代码示例

51自学网 2021-06-03 10:00:14
  C++
这篇教程C++ wl12xx_wlvif_to_vif函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中wl12xx_wlvif_to_vif函数的典型用法代码示例。如果您正苦于以下问题:C++ wl12xx_wlvif_to_vif函数的具体用法?C++ wl12xx_wlvif_to_vif怎么用?C++ wl12xx_wlvif_to_vif使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了wl12xx_wlvif_to_vif函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: wl12xx_ps_link_start

void wl12xx_ps_link_start(struct wl1271 *wl, struct wl12xx_vif *wlvif,                          u8 hlid, bool clean_queues){    struct ieee80211_sta *sta;    struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);    if (test_bit(hlid, &wl->ap_ps_map))        return;    wl1271_debug(DEBUG_PSM, "start mac80211 PSM on hlid %d pkts %d "                 "clean_queues %d", hlid, wl->links[hlid].allocated_pkts,                 clean_queues);    rcu_read_lock();    sta = ieee80211_find_sta(vif, wl->links[hlid].addr);    if (!sta) {        wl1271_error("could not find sta %pM for starting ps",                     wl->links[hlid].addr);        rcu_read_unlock();        return;    }    ieee80211_sta_ps_transition_ni(sta, true);    rcu_read_unlock();    if (clean_queues)        wl1271_ps_filter_frames(wl, hlid);    __set_bit(hlid, &wl->ap_ps_map);}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:31,


示例2: wl12xx_wlvif_to_vif

struct sk_buff *wl1271_cmd_build_ap_probe_req(struct wl1271 *wl,					      struct wl12xx_vif *wlvif,					      struct sk_buff *skb){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	int ret;	u32 rate;	if (!skb)		skb = ieee80211_ap_probereq_get(wl->hw, vif);	if (!skb)		goto out;	wl1271_debug(DEBUG_SCAN, "set ap probe request template");	rate = wl1271_tx_min_rate_get(wl, wlvif->bitrate_masks[wlvif->band]);	if (wlvif->band == IEEE80211_BAND_2GHZ)		ret = wl1271_cmd_template_set(wl, wlvif->role_id,					      CMD_TEMPL_CFG_PROBE_REQ_2_4,					      skb->data, skb->len, 0, rate);	else		ret = wl1271_cmd_template_set(wl, wlvif->role_id,					      CMD_TEMPL_CFG_PROBE_REQ_5,					      skb->data, skb->len, 0, rate);	if (ret < 0)		wl1271_error("Unable to set ap probe request template.");out:	return skb;}
开发者ID:383530895,项目名称:linux,代码行数:31,


示例3: wl12xx_cmd_build_null_data

int wl12xx_cmd_build_null_data(struct wl1271 *wl, struct wl12xx_vif *wlvif){	struct sk_buff *skb = NULL;	int size;	void *ptr;	int ret = -ENOMEM;	if (wlvif->bss_type == BSS_TYPE_IBSS) {		size = sizeof(struct wl12xx_null_data_template);		ptr = NULL;	} else {		skb = ieee80211_nullfunc_get(wl->hw,					     wl12xx_wlvif_to_vif(wlvif));		if (!skb)			goto out;		size = skb->len;		ptr = skb->data;	}	ret = wl1271_cmd_template_set(wl, wlvif->role_id,				      CMD_TEMPL_NULL_DATA, ptr, size, 0,				      wlvif->basic_rate);out:	dev_kfree_skb(skb);	if (ret)		wl1271_warning("cmd buld null data failed %d", ret);	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:32,


示例4: wl12xx_cmd_build_probe_req

int wl12xx_cmd_build_probe_req(struct wl1271 *wl, struct wl12xx_vif *wlvif,			       u8 role_id, u8 band,			       const u8 *ssid, size_t ssid_len,			       const u8 *ie, size_t ie_len){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct sk_buff *skb;	int ret;	u32 rate;	skb = ieee80211_probereq_get(wl->hw, vif, ssid, ssid_len,				     ie, ie_len);	if (!skb) {		ret = -ENOMEM;		goto out;	}	wl1271_dump(DEBUG_SCAN, "PROBE REQ: ", skb->data, skb->len);	rate = wl1271_tx_min_rate_get(wl, wlvif->bitrate_masks[band]);	if (band == IEEE80211_BAND_2GHZ)		ret = wl1271_cmd_template_set(wl, role_id,					      CMD_TEMPL_CFG_PROBE_REQ_2_4,					      skb->data, skb->len, 0, rate);	else		ret = wl1271_cmd_template_set(wl, role_id,					      CMD_TEMPL_CFG_PROBE_REQ_5,					      skb->data, skb->len, 0, rate);out:	dev_kfree_skb(skb);	return ret;}
开发者ID:LeaderRider,项目名称:kernel3NookTablet,代码行数:33,


示例5: wl12xx_cmd_role_start_sta

int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct wl12xx_cmd_role_start *cmd;	int ret;	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);	if (!cmd) {		ret = -ENOMEM;		goto out;	}	wl1271_debug(DEBUG_CMD, "cmd role start sta %d", wlvif->role_id);	cmd->role_id = wlvif->role_id;	if (wlvif->band == IEEE80211_BAND_5GHZ)		cmd->band = WLCORE_BAND_5GHZ;	cmd->channel = wlvif->channel;	cmd->sta.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);	cmd->sta.beacon_interval = cpu_to_le16(wlvif->beacon_int);	cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY;	cmd->sta.ssid_len = wlvif->ssid_len;	memcpy(cmd->sta.ssid, wlvif->ssid, wlvif->ssid_len);	memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);	cmd->sta.local_rates = cpu_to_le32(wlvif->rate_set);	cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);	if (wlvif->sta.hlid == WL12XX_INVALID_LINK_ID) {		ret = wl12xx_allocate_link(wl, wlvif, &wlvif->sta.hlid);		if (ret)			goto out_free;	}	cmd->sta.hlid = wlvif->sta.hlid;	cmd->sta.session = wl12xx_get_new_session_id(wl, wlvif);	cmd->sta.remote_rates = cpu_to_le32(wlvif->rate_set);	wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d "		     "basic_rate_set: 0x%x, remote_rates: 0x%x",		     wlvif->role_id, cmd->sta.hlid, cmd->sta.session,		     wlvif->basic_rate_set, wlvif->rate_set);	ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);	if (ret < 0) {		wl1271_error("failed to initiate cmd role start sta");		goto err_hlid;	}	goto out_free;err_hlid:	/* clear links on error. */	wl12xx_free_link(wl, wlvif, &wlvif->sta.hlid);out_free:	kfree(cmd);out:	return ret;}
开发者ID:AllenDou,项目名称:linux,代码行数:59,


示例6: wl12xx_cmd_build_probe_req

int wl12xx_cmd_build_probe_req(struct wl1271 *wl, struct wl12xx_vif *wlvif,			       u8 role_id, u8 band,			       const u8 *ssid, size_t ssid_len,			       const u8 *ie0, size_t ie0_len, const u8 *ie1,			       size_t ie1_len, bool sched_scan){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct sk_buff *skb;	int ret;	u32 rate;	u16 template_id_2_4 = wl->scan_templ_id_2_4;	u16 template_id_5 = wl->scan_templ_id_5;	wl1271_debug(DEBUG_SCAN, "build probe request band %d", band);	skb = ieee80211_probereq_get(wl->hw, vif->addr, ssid, ssid_len,				     ie0_len + ie1_len);	if (!skb) {		ret = -ENOMEM;		goto out;	}	if (ie0_len)		memcpy(skb_put(skb, ie0_len), ie0, ie0_len);	if (ie1_len)		memcpy(skb_put(skb, ie1_len), ie1, ie1_len);	if (sched_scan &&	    (wl->quirks & WLCORE_QUIRK_DUAL_PROBE_TMPL)) {		template_id_2_4 = wl->sched_scan_templ_id_2_4;		template_id_5 = wl->sched_scan_templ_id_5;	}	rate = wl1271_tx_min_rate_get(wl, wlvif->bitrate_masks[band]);	if (band == IEEE80211_BAND_2GHZ)		ret = wl1271_cmd_template_set(wl, role_id,					      template_id_2_4,					      skb->data, skb->len, 0, rate);	else		ret = wl1271_cmd_template_set(wl, role_id,					      template_id_5,					      skb->data, skb->len, 0, rate);out:	dev_kfree_skb(skb);	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:46,


示例7: wl1271_cmd_build_ps_poll

int wl1271_cmd_build_ps_poll(struct wl1271 *wl, struct wl12xx_vif *wlvif,			     u16 aid){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct sk_buff *skb;	int ret = 0;	skb = ieee80211_pspoll_get(wl->hw, vif);	if (!skb)		goto out;	ret = wl1271_cmd_template_set(wl, wlvif->role_id,				      CMD_TEMPL_PS_POLL, skb->data,				      skb->len, 0, wlvif->basic_rate_set);out:	dev_kfree_skb(skb);	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:19,


示例8: wl12xx_cmd_build_klv_null_data

int wl12xx_cmd_build_klv_null_data(struct wl1271 *wl,				   struct wl12xx_vif *wlvif){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct sk_buff *skb = NULL;	int ret = -ENOMEM;	skb = ieee80211_nullfunc_get(wl->hw, vif);	if (!skb)		goto out;	ret = wl1271_cmd_template_set(wl, wlvif->role_id, CMD_TEMPL_KLV,				      skb->data, skb->len,				      wlvif->sta.klv_template_id,				      wlvif->basic_rate);out:	dev_kfree_skb(skb);	if (ret)		wl1271_warning("cmd build klv null data failed %d", ret);	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:24,


示例9: wl12xx_ps_link_end

void wl12xx_ps_link_end(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 hlid){    struct ieee80211_sta *sta;    struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);    if (!test_bit(hlid, &wl->ap_ps_map))        return;    wl1271_debug(DEBUG_PSM, "end mac80211 PSM on hlid %d", hlid);    __clear_bit(hlid, &wl->ap_ps_map);    rcu_read_lock();    sta = ieee80211_find_sta(vif, wl->links[hlid].addr);    if (!sta) {        wl1271_error("could not find sta %pM for ending ps",                     wl->links[hlid].addr);        goto end;    }    ieee80211_sta_ps_transition_ni(sta, false);end:    rcu_read_unlock();}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:24,


示例10: wl1271_scan_send

static int wl1271_scan_send(struct wl1271 *wl, struct wl12xx_vif *wlvif,			    enum ieee80211_band band,			    bool passive, u32 basic_rate){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct wl1271_cmd_scan *cmd;	struct wl1271_cmd_trigger_scan_to *trigger;	int ret;	u16 scan_options = 0;	/* skip active scans if we don't have SSIDs */	if (!passive && wl->scan.req->n_ssids == 0)		return WL1271_NOTHING_TO_SCAN;	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);	trigger = kzalloc(sizeof(*trigger), GFP_KERNEL);	if (!cmd || !trigger) {		ret = -ENOMEM;		goto out;	}	if (wl->conf.scan.split_scan_timeout)		scan_options |= WL1271_SCAN_OPT_SPLIT_SCAN;	if (passive)		scan_options |= WL1271_SCAN_OPT_PASSIVE;	cmd->params.role_id = wlvif->role_id;	if (WARN_ON(cmd->params.role_id == WL12XX_INVALID_ROLE_ID)) {		ret = -EINVAL;		goto out;	}	cmd->params.scan_options = cpu_to_le16(scan_options);	cmd->params.n_ch = wl1271_get_scan_channels(wl, wl->scan.req,						    cmd->channels,						    band, passive);	if (cmd->params.n_ch == 0) {		ret = WL1271_NOTHING_TO_SCAN;		goto out;	}	cmd->params.tx_rate = cpu_to_le32(basic_rate);	cmd->params.n_probe_reqs = wl->conf.scan.num_probe_reqs;	cmd->params.tid_trigger = CONF_TX_AC_ANY_TID;	cmd->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;	if (band == IEEE80211_BAND_2GHZ)		cmd->params.band = WL1271_SCAN_BAND_2_4_GHZ;	else		cmd->params.band = WL1271_SCAN_BAND_5_GHZ;	if (wl->scan.ssid_len && wl->scan.ssid) {		cmd->params.ssid_len = wl->scan.ssid_len;		memcpy(cmd->params.ssid, wl->scan.ssid, wl->scan.ssid_len);	}	memcpy(cmd->addr, vif->addr, ETH_ALEN);	ret = wl12xx_cmd_build_probe_req(wl, wlvif,					 cmd->params.role_id, band,					 wl->scan.ssid, wl->scan.ssid_len,					 wl->scan.req->ie,					 wl->scan.req->ie_len, false);	if (ret < 0) {		wl1271_error("PROBE request template failed");		goto out;	}	trigger->timeout = cpu_to_le32(wl->conf.scan.split_scan_timeout);	ret = wl1271_cmd_send(wl, CMD_TRIGGER_SCAN_TO, trigger,			      sizeof(*trigger), 0);	if (ret < 0) {		wl1271_error("trigger scan to failed for hw scan");		goto out;	}	wl1271_dump(DEBUG_SCAN, "SCAN: ", cmd, sizeof(*cmd));	ret = wl1271_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd), 0);	if (ret < 0) {		wl1271_error("SCAN failed");		goto out;	}out:	kfree(cmd);	kfree(trigger);	return ret;}
开发者ID:AiWinters,项目名称:linux,代码行数:92,


示例11: wl12xx_cmd_role_start_ap

int wl12xx_cmd_role_start_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif){	struct wl12xx_cmd_role_start *cmd;	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;	u32 supported_rates;	int ret;	wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wlvif->role_id);	/* trying to use hidden SSID with an old hostapd version */	if (wlvif->ssid_len == 0 && !bss_conf->hidden_ssid) {		wl1271_error("got a null SSID from beacon/bss");		ret = -EINVAL;		goto out;	}	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);	if (!cmd) {		ret = -ENOMEM;		goto out;	}	ret = wl12xx_allocate_link(wl, wlvif, &wlvif->ap.global_hlid);	if (ret < 0)		goto out_free;	ret = wl12xx_allocate_link(wl, wlvif, &wlvif->ap.bcast_hlid);	if (ret < 0)		goto out_free_global;	/* use the previous security seq, if this is a recovery/resume */	wl->links[wlvif->ap.bcast_hlid].total_freed_pkts =						wlvif->total_freed_pkts;	cmd->role_id = wlvif->role_id;	cmd->ap.aging_period = cpu_to_le16(wl->conf.tx.ap_aging_period);	cmd->ap.bss_index = WL1271_AP_BSS_INDEX;	cmd->ap.global_hlid = wlvif->ap.global_hlid;	cmd->ap.broadcast_hlid = wlvif->ap.bcast_hlid;	cmd->ap.global_session_id = wl->session_ids[wlvif->ap.global_hlid];	cmd->ap.bcast_session_id = wl->session_ids[wlvif->ap.bcast_hlid];	cmd->ap.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);	cmd->ap.beacon_interval = cpu_to_le16(wlvif->beacon_int);	cmd->ap.dtim_interval = bss_conf->dtim_period;	cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP;	/* FIXME: Change when adding DFS */	cmd->ap.reset_tsf = 1;  /* By default reset AP TSF */	cmd->ap.wmm = wlvif->wmm_enabled;	cmd->channel = wlvif->channel;	cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);	if (!bss_conf->hidden_ssid) {		/* take the SSID from the beacon for backward compatibility */		cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC;		cmd->ap.ssid_len = wlvif->ssid_len;		memcpy(cmd->ap.ssid, wlvif->ssid, wlvif->ssid_len);	} else {		cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN;		cmd->ap.ssid_len = bss_conf->ssid_len;		memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len);	}	supported_rates = CONF_TX_ENABLED_RATES | CONF_TX_MCS_RATES |		wlcore_hw_ap_get_mimo_wide_rate_mask(wl, wlvif);	if (wlvif->p2p)		supported_rates &= ~CONF_TX_CCK_RATES;	wl1271_debug(DEBUG_CMD, "cmd role start ap with supported_rates 0x%08x",		     supported_rates);	cmd->ap.local_rates = cpu_to_le32(supported_rates);	switch (wlvif->band) {	case IEEE80211_BAND_2GHZ:		cmd->band = WLCORE_BAND_2_4GHZ;		break;	case IEEE80211_BAND_5GHZ:		cmd->band = WLCORE_BAND_5GHZ;		break;	default:		wl1271_warning("ap start - unknown band: %d", (int)wlvif->band);		cmd->band = WLCORE_BAND_2_4GHZ;		break;	}	ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);	if (ret < 0) {		wl1271_error("failed to initiate cmd role start ap");		goto out_free_bcast;	}	goto out_free;out_free_bcast:	wl12xx_free_link(wl, wlvif, &wlvif->ap.bcast_hlid);out_free_global:	wl12xx_free_link(wl, wlvif, &wlvif->ap.global_hlid);//.........这里部分代码省略.........
开发者ID:383530895,项目名称:linux,代码行数:101,


示例12: wl12xx_cmd_role_start_sta

int wl12xx_cmd_role_start_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif){	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct wl12xx_cmd_role_start *cmd;	u32 supported_rates;	int ret;	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);	if (!cmd) {		ret = -ENOMEM;		goto out;	}	wl1271_debug(DEBUG_CMD, "cmd role start sta %d", wlvif->role_id);	cmd->role_id = wlvif->role_id;	if (wlvif->band == IEEE80211_BAND_5GHZ)		cmd->band = WLCORE_BAND_5GHZ;	cmd->channel = wlvif->channel;	cmd->sta.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);	cmd->sta.beacon_interval = cpu_to_le16(wlvif->beacon_int);	cmd->sta.ssid_type = WL12XX_SSID_TYPE_ANY;	cmd->sta.ssid_len = wlvif->ssid_len;	memcpy(cmd->sta.ssid, wlvif->ssid, wlvif->ssid_len);	memcpy(cmd->sta.bssid, vif->bss_conf.bssid, ETH_ALEN);	supported_rates = CONF_TX_ENABLED_RATES | CONF_TX_MCS_RATES |			  wlcore_hw_sta_get_ap_rate_mask(wl, wlvif);	if (wlvif->p2p)		supported_rates &= ~CONF_TX_CCK_RATES;	cmd->sta.local_rates = cpu_to_le32(supported_rates);	cmd->channel_type = wlcore_get_native_channel_type(wlvif->channel_type);	if (wlvif->sta.hlid == WL12XX_INVALID_LINK_ID) {		ret = wl12xx_allocate_link(wl, wlvif, &wlvif->sta.hlid);		if (ret)			goto out_free;	}	cmd->sta.hlid = wlvif->sta.hlid;	cmd->sta.session = wl->session_ids[wlvif->sta.hlid];	/*	 * We don't have the correct remote rates in this stage.  The	 * rates will be reconfigured later, after association, if the	 * firmware supports ACX_PEER_CAP.  Otherwise, there's nothing	 * we can do, so use all supported_rates here.	 */	cmd->sta.remote_rates = cpu_to_le32(supported_rates);	wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d "		     "basic_rate_set: 0x%x, remote_rates: 0x%x",		     wlvif->role_id, cmd->sta.hlid, cmd->sta.session,		     wlvif->basic_rate_set, wlvif->rate_set);	ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);	if (ret < 0) {		wl1271_error("failed to initiate cmd role start sta");		goto err_hlid;	}	wlvif->sta.role_chan_type = wlvif->channel_type;	goto out_free;err_hlid:	/* clear links on error. */	wl12xx_free_link(wl, wlvif, &wlvif->sta.hlid);out_free:	kfree(cmd);out:	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:74,


示例13: wl1271_cmd_build_arp_rsp

int wl1271_cmd_build_arp_rsp(struct wl1271 *wl, struct wl12xx_vif *wlvif){	int ret, extra = 0;	u16 fc;	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct sk_buff *skb;	struct wl12xx_arp_rsp_template *tmpl;	struct ieee80211_hdr_3addr *hdr;	struct arphdr *arp_hdr;	skb = dev_alloc_skb(sizeof(*hdr) + sizeof(__le16) + sizeof(*tmpl) +			    WL1271_EXTRA_SPACE_MAX);	if (!skb) {		wl1271_error("failed to allocate buffer for arp rsp template");		return -ENOMEM;	}	skb_reserve(skb, sizeof(*hdr) + WL1271_EXTRA_SPACE_MAX);	tmpl = (struct wl12xx_arp_rsp_template *)skb_put(skb, sizeof(*tmpl));	memset(tmpl, 0, sizeof(*tmpl));	/* llc layer */	memcpy(tmpl->llc_hdr, rfc1042_header, sizeof(rfc1042_header));	tmpl->llc_type = cpu_to_be16(ETH_P_ARP);	/* arp header */	arp_hdr = &tmpl->arp_hdr;	arp_hdr->ar_hrd = cpu_to_be16(ARPHRD_ETHER);	arp_hdr->ar_pro = cpu_to_be16(ETH_P_IP);	arp_hdr->ar_hln = ETH_ALEN;	arp_hdr->ar_pln = 4;	arp_hdr->ar_op = cpu_to_be16(ARPOP_REPLY);	/* arp payload */	memcpy(tmpl->sender_hw, vif->addr, ETH_ALEN);	tmpl->sender_ip = wlvif->ip_addr;	/* encryption space */	switch (wlvif->encryption_type) {	case KEY_TKIP:		if (wl->quirks & WLCORE_QUIRK_TKIP_HEADER_SPACE)			extra = WL1271_EXTRA_SPACE_TKIP;		break;	case KEY_AES:		extra = WL1271_EXTRA_SPACE_AES;		break;	case KEY_NONE:	case KEY_WEP:	case KEY_GEM:		extra = 0;		break;	default:		wl1271_warning("Unknown encryption type: %d",			       wlvif->encryption_type);		ret = -EINVAL;		goto out;	}	if (extra) {		u8 *space = skb_push(skb, extra);		memset(space, 0, extra);	}	/* QoS header - BE */	if (wlvif->sta.qos)		memset(skb_push(skb, sizeof(__le16)), 0, sizeof(__le16));	/* mac80211 header */	hdr = (struct ieee80211_hdr_3addr *)skb_push(skb, sizeof(*hdr));	memset(hdr, 0, sizeof(*hdr));	fc = IEEE80211_FTYPE_DATA | IEEE80211_FCTL_TODS;	if (wlvif->sta.qos)		fc |= IEEE80211_STYPE_QOS_DATA;	else		fc |= IEEE80211_STYPE_DATA;	if (wlvif->encryption_type != KEY_NONE)		fc |= IEEE80211_FCTL_PROTECTED;	hdr->frame_control = cpu_to_le16(fc);	memcpy(hdr->addr1, vif->bss_conf.bssid, ETH_ALEN);	memcpy(hdr->addr2, vif->addr, ETH_ALEN);	memset(hdr->addr3, 0xff, ETH_ALEN);	ret = wl1271_cmd_template_set(wl, wlvif->role_id, CMD_TEMPL_ARP_RSP,				      skb->data, skb->len, 0,				      wlvif->basic_rate);out:	dev_kfree_skb(skb);	return ret;}
开发者ID:383530895,项目名称:linux,代码行数:91,


示例14: wl12xx_cmd_role_start_ap

int wl12xx_cmd_role_start_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif){	struct wl12xx_cmd_role_start *cmd;	struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);	struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;	int ret;	wl1271_debug(DEBUG_CMD, "cmd role start ap %d", wlvif->role_id);	/* trying to use a non-hidden SSID without SSID IE */	if (wlvif->ssid_len == 0 && !bss_conf->hidden_ssid) {		wl1271_error("got a null SSID from beacon/bss");		ret = -EINVAL;		goto out;	}	/* trying to use hidden SSID without configured SSID */	if (bss_conf->ssid_len == 0 && bss_conf->hidden_ssid) {		wl1271_error("missing hidden SSID");		ret = -EINVAL;		goto out;	}	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);	if (!cmd) {		ret = -ENOMEM;		goto out;	}	ret = wl12xx_allocate_link(wl, wlvif, &wlvif->ap.global_hlid);	if (ret < 0)		goto out_free;	ret = wl12xx_allocate_link(wl, wlvif, &wlvif->ap.bcast_hlid);	if (ret < 0)		goto out_free_global;	cmd->role_id = wlvif->role_id;	cmd->ap.aging_period = cpu_to_le16(wl->conf.tx.ap_aging_period);	cmd->ap.bss_index = WL1271_AP_BSS_INDEX;	cmd->ap.global_hlid = wlvif->ap.global_hlid;	cmd->ap.broadcast_hlid = wlvif->ap.bcast_hlid;	cmd->ap.basic_rate_set = cpu_to_le32(wlvif->basic_rate_set);	cmd->ap.beacon_interval = cpu_to_le16(wlvif->beacon_int);	cmd->ap.dtim_interval = bss_conf->dtim_period;	cmd->ap.beacon_expiry = WL1271_AP_DEF_BEACON_EXP;	/* FIXME: Change when adding DFS */	cmd->ap.reset_tsf = 1;  /* By default reset AP TSF */	cmd->channel = wlvif->channel;	if (!bss_conf->hidden_ssid) {		/* take the SSID from the beacon for backward compatibility */		cmd->ap.ssid_type = WL12XX_SSID_TYPE_PUBLIC;		cmd->ap.ssid_len = wlvif->ssid_len;		memcpy(cmd->ap.ssid, wlvif->ssid, wlvif->ssid_len);	} else {		cmd->ap.ssid_type = WL12XX_SSID_TYPE_HIDDEN;		cmd->ap.ssid_len = bss_conf->ssid_len;		memcpy(cmd->ap.ssid, bss_conf->ssid, bss_conf->ssid_len);	}	cmd->ap.local_rates = cpu_to_le32(0xffffffff);	switch (wlvif->band) {	case IEEE80211_BAND_2GHZ:		cmd->band = RADIO_BAND_2_4GHZ;		break;	case IEEE80211_BAND_5GHZ:		cmd->band = RADIO_BAND_5GHZ;		break;	default:		wl1271_warning("ap start - unknown band: %d", (int)wlvif->band);		cmd->band = RADIO_BAND_2_4GHZ;		break;	}	ret = wl1271_cmd_send(wl, CMD_ROLE_START, cmd, sizeof(*cmd), 0);	if (ret < 0) {		wl1271_error("failed to initiate cmd role start ap");		goto out_free_bcast;	}	goto out_free;out_free_bcast:	wl12xx_free_link(wl, wlvif, &wlvif->ap.bcast_hlid);out_free_global:	wl12xx_free_link(wl, wlvif, &wlvif->ap.global_hlid);out_free:	kfree(cmd);out:	return ret;}
开发者ID:HuChundong,项目名称:Endeavor3.1.10,代码行数:96,


示例15: wl18xx_process_mailbox_events

//.........这里部分代码省略.........		wlcore_event_beacon_loss(wl,					 le16_to_cpu(mbox->bss_loss_bitmap));	if (vector & CHANNEL_SWITCH_COMPLETE_EVENT_ID)		wlcore_event_channel_switch(wl,			le16_to_cpu(mbox->channel_switch_role_id_bitmap),			true);	if (vector & DUMMY_PACKET_EVENT_ID)		wlcore_event_dummy_packet(wl);	/*	 * "TX retries exceeded" has a different meaning according to mode.	 * In AP mode the offending station is disconnected.	 */	if (vector & MAX_TX_FAILURE_EVENT_ID)		wlcore_event_max_tx_failure(wl,				le32_to_cpu(mbox->tx_retry_exceeded_bitmap));	if (vector & INACTIVE_STA_EVENT_ID)		wlcore_event_inactive_sta(wl,				le32_to_cpu(mbox->inactive_sta_bitmap));	if (vector & REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID)		wlcore_event_roc_complete(wl);	if (vector & RX_BA_WIN_SIZE_CHANGE_EVENT_ID) {		struct wl12xx_vif *wlvif;		struct ieee80211_vif *vif;		u8 role_id = mbox->rx_ba_role_id;		u8 link_id = mbox->rx_ba_link_id;		u8 win_size = mbox->rx_ba_win_size;		int prev_win_size;		wl1271_debug(DEBUG_EVENT,			     "%s. role_id=%u link_id=%u win_size=%u",			     "RX_BA_WIN_SIZE_CHANGE_EVENT_ID",			     role_id, link_id, win_size);		wlvif = wl->links[link_id].wlvif;		if (unlikely(!wlvif)) {			wl1271_error("%s. link_id wlvif is null",				     "RX_BA_WIN_SIZE_CHANGE_EVENT_ID");			goto out_event;		}		if (unlikely(wlvif->role_id != role_id)) {			wl1271_error("%s. wlvif has different role_id=%d",				     "RX_BA_WIN_SIZE_CHANGE_EVENT_ID",				     wlvif->role_id);			goto out_event;		}		prev_win_size = wlcore_rx_ba_max_subframes(wl, link_id);		if (unlikely(prev_win_size < 0)) {			wl1271_error("%s. cannot get link rx_ba_max_subframes",				     "RX_BA_WIN_SIZE_CHANGE_EVENT_ID");			goto out_event;		}		if ((u8) prev_win_size <= win_size) {			/* This not supposed to happen unless a FW bug */			wl1271_error("%s. prev_win_size(%d) <= win_size(%d)",				     "RX_BA_WIN_SIZE_CHANGE_EVENT_ID",				     prev_win_size, win_size);			goto out_event;		}		/*		 * Call MAC routine to update win_size and stop all link active		 * BA sessions. This routine returns 0 on failure or previous		 * win_size on success		 */		vif = wl12xx_wlvif_to_vif(wlvif);		ieee80211_change_rx_ba_max_subframes(vif,			(wlvif->bss_type != BSS_TYPE_AP_BSS ?				vif->bss_conf.bssid :				wl->links[link_id].addr),			win_size);	}	if (vector & SMART_CONFIG_SYNC_EVENT_ID)		wlcore_smart_config_sync_event(wl, mbox->sc_sync_channel,					       mbox->sc_sync_band);	if (vector & SMART_CONFIG_DECODE_EVENT_ID)		wlcore_smart_config_decode_event(wl,						 mbox->sc_ssid_len,						 mbox->sc_ssid,						 mbox->sc_pwd_len,						 mbox->sc_pwd);out_event:	return 0;}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:101,



注:本文中的wl12xx_wlvif_to_vif函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ wl_callback_add_listener函数代码示例
C++ wl12xx_set_platform_data函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。