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

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

51自学网 2021-06-01 20:50:59
  C++
这篇教程C++ GET_BSS_ROLE函数代码示例写得很实用,希望能帮到您。

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

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

示例1: mwifiex_init_priv_params

/* * This function initializes the private structure parameters. * * The following wait queues are initialized - *      - IOCTL wait queue *      - Command wait queue *      - Statistics wait queue * * ...and the following default parameters are set - *      - Current key index     : Set to 0 *      - Rate index            : Set to auto *      - Media connected       : Set to disconnected *      - Adhoc link sensed     : Set to false *      - Nick name             : Set to null *      - Number of Tx timeout  : Set to 0 *      - Device address        : Set to current address *      - Rx histogram statistc : Set to 0 * * In addition, the CFG80211 work queue is also created. */void mwifiex_init_priv_params(struct mwifiex_private *priv,                              struct net_device *dev){    dev->netdev_ops = &mwifiex_netdev_ops;    dev->destructor = free_netdev;    /* Initialize private structure */    priv->current_key_index = 0;    priv->media_connected = false;    memset(priv->mgmt_ie, 0,           sizeof(struct mwifiex_ie) * MAX_MGMT_IE_INDEX);    priv->beacon_idx = MWIFIEX_AUTO_IDX_MASK;    priv->proberesp_idx = MWIFIEX_AUTO_IDX_MASK;    priv->assocresp_idx = MWIFIEX_AUTO_IDX_MASK;    priv->gen_idx = MWIFIEX_AUTO_IDX_MASK;    priv->num_tx_timeout = 0;    ether_addr_copy(priv->curr_addr, priv->adapter->perm_addr);    memcpy(dev->dev_addr, priv->curr_addr, ETH_ALEN);    if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA ||            GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) {        priv->hist_data = kmalloc(sizeof(*priv->hist_data), GFP_KERNEL);        if (priv->hist_data)            mwifiex_hist_data_reset(priv);    }}
开发者ID:iamroot12a,项目名称:kernel,代码行数:45,


示例2: mwifiex_usb_cleanup_module

/* This function cleans up the USB driver. * * The following major steps are followed in .disconnect for cleanup: *      - Resume the device if its suspended *      - Disconnect the device if connected *      - Shutdown the firmware *      - Unregister the device from USB bus. */static void mwifiex_usb_cleanup_module(void){	if (!down_interruptible(&add_remove_card_sem))		up(&add_remove_card_sem);	if (usb_card) {		struct mwifiex_adapter *adapter = usb_card->adapter;		int i;		/* In case driver is removed when asynchronous FW downloading is		 * in progress		 */		wait_for_completion(&adapter->fw_load);#ifdef CONFIG_PM		if (adapter->is_suspended)			mwifiex_usb_resume(usb_card->intf);#endif		for (i = 0; i < adapter->priv_num; i++)			if ((GET_BSS_ROLE(adapter->priv[i]) ==			     MWIFIEX_BSS_ROLE_STA) &&			    adapter->priv[i]->media_connected)				mwifiex_deauthenticate(adapter->priv[i], NULL);		mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter,							  MWIFIEX_BSS_ROLE_ANY),					 MWIFIEX_FUNC_SHUTDOWN);	}	usb_deregister(&mwifiex_usb_driver);}
开发者ID:ManCheol,项目名称:kernel,代码行数:39,


示例3: wlan_check_unicast_packet

/** *  @brief This function will check if unicast packet need be dropped * *  @param priv    A pointer to mlan_private *  @param mac     mac address to find in station list table * *  @return	       MLAN_STATUS_FAILURE -- drop packet, otherwise forward to network stack */static mlan_statuswlan_check_unicast_packet(mlan_private * priv, t_u8 * mac){    int j;    sta_node *sta_ptr = MNULL;    pmlan_adapter pmadapter = priv->adapter;    pmlan_private pmpriv = MNULL;    t_u8 pkt_type = 0;    mlan_status ret = MLAN_STATUS_SUCCESS;    ENTER();    for (j = 0; j < MLAN_MAX_BSS_NUM; ++j) {        if ((pmpriv = pmadapter->priv[j])) {            if (GET_BSS_ROLE(pmpriv) == MLAN_BSS_ROLE_STA)                continue;            sta_ptr = wlan_get_station_entry(pmpriv, mac);            if (sta_ptr) {                if (pmpriv == priv)                    pkt_type = PKT_INTRA_UCAST;                else                    pkt_type = PKT_INTER_UCAST;                break;            }        }    }    if ((pkt_type == PKT_INTRA_UCAST) && (priv->pkt_fwd & PKT_FWD_INTRA_UCAST)) {        PRINTM(MDATA, "Drop INTRA_UCAST packet/n");        ret = MLAN_STATUS_FAILURE;    } else if ((pkt_type == PKT_INTER_UCAST) &&               (priv->pkt_fwd & PKT_FWD_INTER_UCAST)) {        PRINTM(MDATA, "Drop INTER_UCAST packet/n");        ret = MLAN_STATUS_FAILURE;    }    LEAVE();    return ret;}
开发者ID:Packmaan7144,项目名称:kernel_nvidia_s8515,代码行数:43,


示例4: wlan_is_station

/** *  @brief This function gets if priv is a station (STA) * *  @param pmpriv       Pointer to mlan_private structure * *  @return             MTRUE or MFALSE */t_boolwlan_is_station(mlan_private * pmpriv){    ENTER();    LEAVE();    return (GET_BSS_ROLE(pmpriv) == MLAN_BSS_ROLE_STA) ? MTRUE : MFALSE;}
开发者ID:CunningLogic,项目名称:asteroid_smart_kernel,代码行数:14,


示例5: mwifiex_associate

/* * This function associates to a specific BSS discovered in a scan. * * It clears any past association response stored for application * retrieval and calls the command preparation routine to send the * command to firmware. */int mwifiex_associate(struct mwifiex_private *priv,		      struct mwifiex_bssdescriptor *bss_desc){	u8 current_bssid[ETH_ALEN];	/* Return error if the adapter is not STA role or table entry	 * is not marked as infra.	 */	if ((GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_STA) ||	    (bss_desc->bss_mode != NL80211_IFTYPE_STATION))		return -1;	if (ISSUPP_11ACENABLED(priv->adapter->fw_cap_info) &&	    !bss_desc->disable_11n && !bss_desc->disable_11ac &&	    priv->adapter->config_bands & BAND_AAC)		mwifiex_set_11ac_ba_params(priv);	else		mwifiex_set_ba_params(priv);	memcpy(&current_bssid,	       &priv->curr_bss_params.bss_descriptor.mac_address,	       sizeof(current_bssid));	/* Clear any past association response stored for application	   retrieval */	priv->assoc_rsp_size = 0;	return mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_ASSOCIATE,				    HostCmd_ACT_GEN_SET, 0, bss_desc);}
开发者ID:houlixin,项目名称:BBB-TISDK,代码行数:37,


示例6: mwifiex_sdio_cleanup_module

/* * This function cleans up the SDIO driver. * * The following major steps are followed for cleanup - *      - Resume the device if its suspended *      - Disconnect the device if connected *      - Shutdown the firmware *      - Unregister the device from SDIO bus. */static voidmwifiex_sdio_cleanup_module(void){	struct mwifiex_adapter *adapter = g_adapter;	int i;	if (down_interruptible(&add_remove_card_sem))		goto exit_sem_err;	if (!adapter || !adapter->priv_num)		goto exit;	if (adapter->is_suspended)		mwifiex_sdio_resume(adapter->dev);	for (i = 0; i < adapter->priv_num; i++)		if ((GET_BSS_ROLE(adapter->priv[i]) == MWIFIEX_BSS_ROLE_STA) &&		    adapter->priv[i]->media_connected)			mwifiex_deauthenticate(adapter->priv[i], NULL);	if (!adapter->surprise_removed)		mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter,							  MWIFIEX_BSS_ROLE_ANY),					 MWIFIEX_FUNC_SHUTDOWN);exit:	up(&add_remove_card_sem);exit_sem_err:	sdio_unregister_driver(&mwifiex_sdio);}
开发者ID:791254467,项目名称:u8500_kernel,代码行数:40,


示例7: mwifiex_set_bss_role

intmwifiex_set_bss_role(struct mwifiex_private *priv, u8 bss_role){	if (GET_BSS_ROLE(priv) == bss_role) {		dev_dbg(priv->adapter->dev,			"info: already in the desired role./n");		return 0;	}	mwifiex_free_priv(priv);	mwifiex_init_priv(priv);	priv->bss_role = bss_role;	switch (bss_role) {	case MWIFIEX_BSS_ROLE_UAP:		priv->bss_mode = NL80211_IFTYPE_AP;		break;	case MWIFIEX_BSS_ROLE_STA:	case MWIFIEX_BSS_ROLE_ANY:	default:		priv->bss_mode = NL80211_IFTYPE_STATION;		break;	}	mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE,			 HostCmd_ACT_GEN_SET, 0, NULL, true);	return mwifiex_sta_init_cmd(priv, false);}
开发者ID:Astralix,项目名称:mainline-dss11,代码行数:29,


示例8: mwifiex_process_tx

/* * This function sends a packet to device. * * It processes the packet to add the TxPD, checks condition and * sends the processed packet to firmware for transmission. * * On successful completion, the function calls the completion callback * and logs the time. */int mwifiex_process_tx(struct mwifiex_private *priv, struct sk_buff *skb,		       struct mwifiex_tx_param *tx_param){	int ret = -1;	struct mwifiex_adapter *adapter = priv->adapter;	u8 *head_ptr;	struct txpd *local_tx_pd = NULL;	head_ptr = (u8 *) mwifiex_process_sta_txpd(priv, skb);	if (head_ptr) {		if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA)			local_tx_pd =				(struct txpd *) (head_ptr + INTF_HEADER_LEN);		ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_DATA,					     skb->data, skb->len, tx_param);	}	switch (ret) {	case -EBUSY:		if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) &&			(adapter->pps_uapsd_mode) &&			(adapter->tx_lock_flag)) {				priv->adapter->tx_lock_flag = false;				local_tx_pd->flags = 0;		}		dev_dbg(adapter->dev, "data: -EBUSY is returned/n");		break;	case -1:		adapter->data_sent = false;		dev_err(adapter->dev, "mwifiex_write_data_async failed: 0x%X/n",		       ret);		adapter->dbg.num_tx_host_to_card_failure++;		mwifiex_write_data_complete(adapter, skb, ret);		break;	case -EINPROGRESS:		adapter->data_sent = false;		break;	case 0:		mwifiex_write_data_complete(adapter, skb, ret);		break;	default:		break;	}	return ret;}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:56,


示例9: mwifiex_11h_activate

/* Enable or disable the 11h extensions in the firmware */int mwifiex_11h_activate(struct mwifiex_private *priv, bool flag){	u32 enable = flag;	/* enable master mode radar detection on AP interface */	if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) && enable)		enable |= MWIFIEX_MASTER_RADAR_DET_MASK;	return mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB,				HostCmd_ACT_GEN_SET, DOT11H_I, &enable, true);}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:12,


示例10: mwifiex_11n_form_amsdu_txpd

/* * Adds TxPD to AMSDU header. * * Each AMSDU packet will contain one TxPD at the beginning, * followed by multiple AMSDU subframes. */static voidmwifiex_11n_form_amsdu_txpd(struct mwifiex_private *priv,			    struct sk_buff *skb){	struct txpd *local_tx_pd;	struct mwifiex_txinfo *tx_info = MWIFIEX_SKB_TXCB(skb);	unsigned int pad;	int headroom = (priv->adapter->iface_type ==			MWIFIEX_USB) ? 0 : INTF_HEADER_LEN;	pad = ((void *)skb->data - sizeof(*local_tx_pd) -		headroom - NULL) & (MWIFIEX_DMA_ALIGN_SZ - 1);	skb_push(skb, pad);	skb_push(skb, sizeof(*local_tx_pd));	local_tx_pd = (struct txpd *) skb->data;	memset(local_tx_pd, 0, sizeof(struct txpd));	/* Original priority has been overwritten */	local_tx_pd->priority = (u8) skb->priority;	local_tx_pd->pkt_delay_2ms =		mwifiex_wmm_compute_drv_pkt_delay(priv, skb);	local_tx_pd->bss_num = priv->bss_num;	local_tx_pd->bss_type = priv->bss_type;	/* Always zero as the data is followed by struct txpd */	local_tx_pd->tx_pkt_offset = cpu_to_le16(sizeof(struct txpd) +						 pad);	local_tx_pd->tx_pkt_type = cpu_to_le16(PKT_TYPE_AMSDU);	local_tx_pd->tx_pkt_length = cpu_to_le16(skb->len -						 sizeof(*local_tx_pd) -						 pad);	if (tx_info->flags & MWIFIEX_BUF_FLAG_TDLS_PKT)		local_tx_pd->flags |= MWIFIEX_TXPD_FLAGS_TDLS_PACKET;	if (local_tx_pd->tx_control == 0)		/* TxCtrl set by user or default */		local_tx_pd->tx_control = cpu_to_le32(priv->pkt_tx_ctrl);	if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA &&	    priv->adapter->pps_uapsd_mode) {		if (true == mwifiex_check_last_packet_indication(priv)) {			priv->adapter->tx_lock_flag = true;			local_tx_pd->flags =				MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET;		}	}}
开发者ID:020gzh,项目名称:linux,代码行数:55,


示例11: wlan_11n_dispatch_pkt

/** *  @brief This function will process the rx packet and  *  		forward it to kernel/upper layer *   *  @param priv    	A pointer to mlan_private *  @param payload  A pointer to rx packet payload * *  @return 	   	MLAN_STATUS_SUCCESS or MLAN_STATUS_FAILURE */static mlan_statuswlan_11n_dispatch_pkt(t_void * priv, t_void * payload){    mlan_status ret = MLAN_STATUS_SUCCESS;#ifdef STA_SUPPORT    pmlan_adapter pmadapter = ((pmlan_private) priv)->adapter;#endif#ifdef UAP_SUPPORT    if (GET_BSS_ROLE((mlan_private *) priv) == MLAN_BSS_ROLE_UAP)        return wlan_process_uap_rx_packet(priv, (pmlan_buffer) payload);#endif /* UAP_SUPPORT */#ifdef STA_SUPPORT    ret = wlan_process_rx_packet(pmadapter, (pmlan_buffer) payload);#endif    return ret;}
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:25,


示例12: mwifiex_usb_disconnect

static void mwifiex_usb_disconnect(struct usb_interface *intf){	struct usb_card_rec *card = usb_get_intfdata(intf);	struct mwifiex_adapter *adapter;	int i;	if (!card || !card->adapter) {		pr_err("%s: card or card->adapter is NULL/n", __func__);		return;	}	adapter = card->adapter;	if (!adapter->priv_num)		return;	/* In case driver is removed when asynchronous FW downloading is	 * in progress	 */	wait_for_completion(&adapter->fw_load);	if (user_rmmod) {#ifdef CONFIG_PM		if (adapter->is_suspended)			mwifiex_usb_resume(intf);#endif		for (i = 0; i < adapter->priv_num; i++)			if ((GET_BSS_ROLE(adapter->priv[i]) ==			     MWIFIEX_BSS_ROLE_STA) &&			    adapter->priv[i]->media_connected)				mwifiex_deauthenticate(adapter->priv[i], NULL);		mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter,							  MWIFIEX_BSS_ROLE_ANY),					 MWIFIEX_FUNC_SHUTDOWN);	}	mwifiex_usb_free(card);	dev_dbg(adapter->dev, "%s: removing card/n", __func__);	mwifiex_remove_card(adapter, &add_remove_card_sem);	usb_set_intfdata(intf, NULL);	usb_put_dev(interface_to_usbdev(intf));	kfree(card);	return;}
开发者ID:ARMWorks,项目名称:FA_2451_Linux_Kernel,代码行数:47,


示例13: mwifiex_write_data_complete

/* * Packet send completion callback handler. * * It either frees the buffer directly or forwards it to another * completion callback which checks conditions, updates statistics, * wakes up stalled traffic queue if required, and then frees the buffer. */int mwifiex_write_data_complete(struct mwifiex_adapter *adapter,				struct sk_buff *skb, int status){	struct mwifiex_private *priv, *tpriv;	struct mwifiex_txinfo *tx_info;	int i;	if (!skb)		return 0;	tx_info = MWIFIEX_SKB_TXCB(skb);	priv = mwifiex_get_priv_by_id(adapter, tx_info->bss_num,				      tx_info->bss_type);	if (!priv)		goto done;	mwifiex_set_trans_start(priv->netdev);	if (!status) {		priv->stats.tx_packets++;		priv->stats.tx_bytes += skb->len;	} else {		priv->stats.tx_errors++;	}	if (atomic_dec_return(&adapter->tx_pending) >= LOW_TX_PENDING)		goto done;	for (i = 0; i < adapter->priv_num; i++) {		tpriv = adapter->priv[i];		if ((GET_BSS_ROLE(tpriv) == MWIFIEX_BSS_ROLE_STA) &&		    (tpriv->media_connected)) {			if (netif_queue_stopped(tpriv->netdev))				mwifiex_wake_up_net_dev_queue(tpriv->netdev,							      adapter);		}	}done:	dev_kfree_skb_any(skb);	return 0;}
开发者ID:openube,项目名称:android_kernel_sony_c2305,代码行数:50,


示例14: wlan_11n_update_pktlen_amsdu_txpd

/** *  @brief Update the TxPktLength field in TxPD after the complete AMSDU *  packet is formed * *  @param priv     A pointer to mlan_private structure *  @param mbuf     TxPD buffer * *  @return         N/A */static INLINE voidwlan_11n_update_pktlen_amsdu_txpd(mlan_private * priv, pmlan_buffer mbuf){	TxPD *ptx_pd;	ENTER();	ptx_pd = (TxPD *) mbuf->pbuf;	ptx_pd->tx_pkt_length =		(t_u16) wlan_cpu_to_le16(mbuf->data_len - sizeof(TxPD));#ifdef STA_SUPPORT	if ((GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA) &&	    (priv->adapter->pps_uapsd_mode)) {		if (MTRUE == wlan_check_last_packet_indication(priv)) {			priv->adapter->tx_lock_flag = MTRUE;			ptx_pd->flags |= MRVDRV_TxPD_POWER_MGMT_LAST_PACKET;		}	}#endif /* STA_SUPPORT */	LEAVE();}
开发者ID:acorn-marvell,项目名称:brillo_pxa_kernel,代码行数:29,


示例15: mwifiex_process_tx_pause_event

void mwifiex_process_tx_pause_event(struct mwifiex_private *priv,				    struct sk_buff *event_skb){	struct mwifiex_ie_types_header *tlv;	u16 tlv_type, tlv_len;	int tlv_buf_left;	if (!priv->media_connected) {		mwifiex_dbg(priv->adapter, ERROR,			    "tx_pause event while disconnected; bss_role=%d/n",			    priv->bss_role);		return;	}	tlv_buf_left = event_skb->len - sizeof(u32);	tlv = (void *)event_skb->data + sizeof(u32);	while (tlv_buf_left >= (int)sizeof(struct mwifiex_ie_types_header)) {		tlv_type = le16_to_cpu(tlv->type);		tlv_len  = le16_to_cpu(tlv->len);		if ((sizeof(struct mwifiex_ie_types_header) + tlv_len) >		    tlv_buf_left) {			mwifiex_dbg(priv->adapter, ERROR,				    "wrong tlv: tlvLen=%d, tlvBufLeft=%d/n",				    tlv_len, tlv_buf_left);			break;		}		if (tlv_type == TLV_TYPE_TX_PAUSE) {			if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA)				mwifiex_process_sta_tx_pause(priv, tlv);			else				mwifiex_process_uap_tx_pause(priv, tlv);		}		tlv_buf_left -= sizeof(struct mwifiex_ie_types_header) +				tlv_len;		tlv = (void *)((u8 *)tlv + tlv_len +			       sizeof(struct mwifiex_ie_types_header));	}}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:41,


示例16: mwifiex_sdio_remove

/* * SDIO remove. * * This function removes the interface and frees up the card structure. */static voidmwifiex_sdio_remove(struct sdio_func *func){	struct sdio_mmc_card *card;	struct mwifiex_adapter *adapter;	struct mwifiex_private *priv;	int i;	pr_debug("info: SDIO func num=%d/n", func->num);	card = sdio_get_drvdata(func);	if (!card)		return;	adapter = card->adapter;	if (!adapter || !adapter->priv_num)		return;	/* In case driver is removed when asynchronous FW load is in progress */	wait_for_completion(&adapter->fw_load);	if (user_rmmod) {#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))		if (adapter->is_suspended)			mwifiex_sdio_resume(adapter->dev);#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */		for (i = 0; i < adapter->priv_num; i++)			if ((GET_BSS_ROLE(adapter->priv[i]) ==						MWIFIEX_BSS_ROLE_STA) &&			    adapter->priv[i]->media_connected)				mwifiex_deauthenticate(adapter->priv[i], NULL);		priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);		mwifiex_disable_auto_ds(priv);		mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);	}	mwifiex_remove_card(card->adapter, &add_remove_card_sem);	kfree(card);}
开发者ID:Eijk,项目名称:tlwn722n-linux-install,代码行数:46,


示例17: mwifiex_pcie_remove

static void mwifiex_pcie_remove(struct pci_dev *pdev){	struct pcie_service_card *card;	struct mwifiex_adapter *adapter;	struct mwifiex_private *priv;	int i;	card = pci_get_drvdata(pdev);	if (!card)		return;	adapter = card->adapter;	if (!adapter || !adapter->priv_num)		return;	if (user_rmmod) {#ifdef CONFIG_PM		if (adapter->is_suspended)			mwifiex_pcie_resume(pdev);#endif		for (i = 0; i < adapter->priv_num; i++)			if ((GET_BSS_ROLE(adapter->priv[i]) ==			     MWIFIEX_BSS_ROLE_STA) &&			    adapter->priv[i]->media_connected)				mwifiex_deauthenticate(adapter->priv[i], NULL);		priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);		mwifiex_disable_auto_ds(priv);		mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);	}	mwifiex_remove_card(card->adapter, &add_remove_card_sem);	kfree(card);}
开发者ID:mjduddin,项目名称:B14CKB1RD_kernel_m8,代码行数:37,


示例18: mwifiex_sdio_remove

static voidmwifiex_sdio_remove(struct sdio_func *func){	struct sdio_mmc_card *card;	struct mwifiex_adapter *adapter;	struct mwifiex_private *priv;	int i;	pr_debug("info: SDIO func num=%d/n", func->num);	card = sdio_get_drvdata(func);	if (!card)		return;	adapter = card->adapter;	if (!adapter || !adapter->priv_num)		return;	if (user_rmmod) {		if (adapter->is_suspended)			mwifiex_sdio_resume(adapter->dev);		for (i = 0; i < adapter->priv_num; i++)			if ((GET_BSS_ROLE(adapter->priv[i]) ==						MWIFIEX_BSS_ROLE_STA) &&			    adapter->priv[i]->media_connected)				mwifiex_deauthenticate(adapter->priv[i], NULL);		priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);		mwifiex_disable_auto_ds(priv);		mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);	}	mwifiex_remove_card(card->adapter, &add_remove_card_sem);	kfree(card);}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:36,


示例19: mwifiex_set_encode

/* * Sends IOCTL request to set encoding parameters. * * This function allocates the IOCTL request buffer, fills it * with requisite parameters and calls the IOCTL handler. */int mwifiex_set_encode(struct mwifiex_private *priv, struct key_params *kp,		       const u8 *key, int key_len, u8 key_index,		       const u8 *mac_addr, int disable){	struct mwifiex_ds_encrypt_key encrypt_key;	memset(&encrypt_key, 0, sizeof(struct mwifiex_ds_encrypt_key));	encrypt_key.key_len = key_len;	encrypt_key.key_index = key_index;	if (kp && kp->cipher == WLAN_CIPHER_SUITE_AES_CMAC)		encrypt_key.is_igtk_key = true;	if (!disable) {		if (key_len)			memcpy(encrypt_key.key_material, key, key_len);		else			encrypt_key.is_current_wep_key = true;		if (mac_addr)			memcpy(encrypt_key.mac_addr, mac_addr, ETH_ALEN);		if (kp && kp->seq && kp->seq_len) {			memcpy(encrypt_key.pn, kp->seq, kp->seq_len);			encrypt_key.pn_len = kp->seq_len;			encrypt_key.is_rx_seq_valid = true;		}	} else {		if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP)			return 0;		encrypt_key.key_disable = true;		if (mac_addr)			memcpy(encrypt_key.mac_addr, mac_addr, ETH_ALEN);	}	return mwifiex_sec_ioctl_encrypt_key(priv, &encrypt_key);}
开发者ID:Astralix,项目名称:mainline-dss11,代码行数:42,


示例20: mwifiex_11n_form_amsdu_txpd

/* * Adds TxPD to AMSDU header. * * Each AMSDU packet will contain one TxPD at the beginning, * followed by multiple AMSDU subframes. */static voidmwifiex_11n_form_amsdu_txpd(struct mwifiex_private *priv,			    struct sk_buff *skb){	struct txpd *local_tx_pd;	skb_push(skb, sizeof(*local_tx_pd));	local_tx_pd = (struct txpd *) skb->data;	memset(local_tx_pd, 0, sizeof(struct txpd));	/* Original priority has been overwritten */	local_tx_pd->priority = (u8) skb->priority;	local_tx_pd->pkt_delay_2ms =		mwifiex_wmm_compute_drv_pkt_delay(priv, skb);	local_tx_pd->bss_num = priv->bss_num;	local_tx_pd->bss_type = priv->bss_type;	/* Always zero as the data is followed by struct txpd */	local_tx_pd->tx_pkt_offset = cpu_to_le16(sizeof(struct txpd));	local_tx_pd->tx_pkt_type = cpu_to_le16(PKT_TYPE_AMSDU);	local_tx_pd->tx_pkt_length = cpu_to_le16(skb->len -			sizeof(*local_tx_pd));	if (local_tx_pd->tx_control == 0)		/* TxCtrl set by user or default */		local_tx_pd->tx_control = cpu_to_le32(priv->pkt_tx_ctrl);	if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) &&		(priv->adapter->pps_uapsd_mode)) {		if (true == mwifiex_check_last_packet_indication(priv)) {			priv->adapter->tx_lock_flag = true;			local_tx_pd->flags =				MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET;		}	}}
开发者ID:CSCLOG,项目名称:beaglebone,代码行数:42,


示例21: mwifiex_reset_connect_state

/* * This function resets the connection state. * * The function is invoked after receiving a disconnect event from firmware, * and performs the following actions - *      - Set media status to disconnected *      - Clean up Tx and Rx packets *      - Resets SNR/NF/RSSI value in driver *      - Resets security configurations in driver *      - Enables auto data rate *      - Saves the previous SSID and BSSID so that they can *        be used for re-association, if required *      - Erases current SSID and BSSID information *      - Sends a disconnect event to upper layers/applications. */void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code,				 bool from_ap){	struct mwifiex_adapter *adapter = priv->adapter;	if (!priv->media_connected)		return;	mwifiex_dbg(adapter, INFO,		    "info: handles disconnect event/n");	priv->media_connected = false;	priv->scan_block = false;	priv->port_open = false;	if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) &&	    ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info)) {		mwifiex_disable_all_tdls_links(priv);		if (priv->adapter->auto_tdls)			mwifiex_clean_auto_tdls(priv);	}	/* Free Tx and Rx packets, report disconnect to upper layer */	mwifiex_clean_txrx(priv);	/* Reset SNR/NF/RSSI values */	priv->data_rssi_last = 0;	priv->data_nf_last = 0;	priv->data_rssi_avg = 0;	priv->data_nf_avg = 0;	priv->bcn_rssi_last = 0;	priv->bcn_nf_last = 0;	priv->bcn_rssi_avg = 0;	priv->bcn_nf_avg = 0;	priv->rxpd_rate = 0;	priv->rxpd_htinfo = 0;	priv->sec_info.wpa_enabled = false;	priv->sec_info.wpa2_enabled = false;	priv->wpa_ie_len = 0;	priv->sec_info.wapi_enabled = false;	priv->wapi_ie_len = 0;	priv->sec_info.wapi_key_on = false;	priv->sec_info.encryption_mode = 0;	/* Enable auto data rate */	priv->is_data_rate_auto = true;	priv->data_rate = 0;	priv->assoc_resp_ht_param = 0;	priv->ht_param_present = false;	if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA ||	     GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) && priv->hist_data)		mwifiex_hist_data_reset(priv);	if (priv->bss_mode == NL80211_IFTYPE_ADHOC) {		priv->adhoc_state = ADHOC_IDLE;		priv->adhoc_is_link_sensed = false;	}	/*	 * Memorize the previous SSID and BSSID so	 * it could be used for re-assoc	 */	mwifiex_dbg(adapter, INFO,		    "info: previous SSID=%s, SSID len=%u/n",		    priv->prev_ssid.ssid, priv->prev_ssid.ssid_len);	mwifiex_dbg(adapter, INFO,		    "info: current SSID=%s, SSID len=%u/n",		    priv->curr_bss_params.bss_descriptor.ssid.ssid,		    priv->curr_bss_params.bss_descriptor.ssid.ssid_len);	memcpy(&priv->prev_ssid,	       &priv->curr_bss_params.bss_descriptor.ssid,	       sizeof(struct cfg80211_ssid));	memcpy(priv->prev_bssid,	       priv->curr_bss_params.bss_descriptor.mac_address, ETH_ALEN);//.........这里部分代码省略.........
开发者ID:AlexShiLucky,项目名称:linux,代码行数:101,


示例22: woal_debug_entry

/** *  @brief Create debug proc file * *  @param priv	   A pointer to a moal_private structure * *  @return 	   N/A */voidwoal_debug_entry(moal_private * priv){    struct proc_dir_entry *r;    struct proc_dir_entry *r2;    int i;    int handle_items;    ENTER();    if (priv->proc_entry == NULL) {        LEAVE();        return;    }#ifdef STA_SUPPORT    if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA) {        priv->items_priv.items =            (struct debug_data *) kmalloc(sizeof(items), GFP_KERNEL);        if (!priv->items_priv.items) {            PRINTM(MERROR, "Failed to allocate memory for debug data/n");            LEAVE();            return;        }        memcpy(priv->items_priv.items, items, sizeof(items));        priv->items_priv.num_of_items = sizeof(items) / sizeof(items[0]);        priv->items_priv_hist.num_of_items = 0;    }#endif#ifdef UAP_SUPPORT    if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_UAP) {        priv->items_priv.items =            (struct debug_data *) kmalloc(sizeof(uap_items), GFP_KERNEL);        if (!priv->items_priv.items) {            PRINTM(MERROR, "Failed to allocate memory for debug data/n");            LEAVE();            return;        }        memcpy(priv->items_priv.items, uap_items, sizeof(uap_items));        priv->items_priv.num_of_items =            sizeof(uap_items) / sizeof(uap_items[0]);    }#endif    priv->items_priv.priv = priv;    priv->items_priv_hist.priv = priv;    handle_items = 8;#ifdef SDIO_MMC_DEBUG    handle_items += 2;#endif#if defined(SDIO_SUSPEND_RESUME)    handle_items += 2;#endif    for (i = 1; i <= handle_items; i++)        priv->items_priv.items[priv->items_priv.num_of_items - i].addr +=            (t_ptr) (priv->phandle);    /* Create proc entry */    r = create_proc_entry("debug", 0644, priv->proc_entry);    if (r == NULL) {        LEAVE();        return;    }    r->data = &priv->items_priv;    r->read_proc = woal_debug_read;    r->write_proc = woal_debug_write;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)    r->owner = THIS_MODULE;#endif	/* Initialize hgm data structure */	hgm_seq_init_globals();	/* Create proc entry for driver histogram data */    r2 = create_proc_entry("histogram", 0664, priv->proc_entry);    if (r2 == NULL) {        LEAVE();        return;    }    r2->data = &priv->items_priv_hist;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)    r2->owner = THIS_MODULE;#endif	r2->proc_fops = &hgm_file_ops;	r2->uid = 0;	r2->gid = 1008; // wifi group    LEAVE();}
开发者ID:Akheon23,项目名称:chromecast-mirrored-source.kernel,代码行数:96,


示例23: wlan_process_tx

/** *  @brief This function checks the conditions and sends packet to device * *  @param priv	   A pointer to mlan_private structure *  @param pmbuf   A pointer to the mlan_buffer for process *  @param tx_param A pointer to mlan_tx_param structure * *  @return         MLAN_STATUS_SUCCESS/MLAN_STATUS_PENDING --success, otherwise failure */mlan_statuswlan_process_tx(pmlan_private priv, pmlan_buffer pmbuf,		mlan_tx_param * tx_param){	mlan_status ret = MLAN_STATUS_SUCCESS;	pmlan_adapter pmadapter = priv->adapter;	t_u8 *head_ptr = MNULL;#ifdef DEBUG_LEVEL1	t_u32 sec = 0, usec = 0;#endif#ifdef STA_SUPPORT	TxPD *plocal_tx_pd = MNULL;#endif	ENTER();	head_ptr = (t_u8 *) priv->ops.process_txpd(priv, pmbuf);	if (!head_ptr) {		pmbuf->status_code = MLAN_ERROR_PKT_INVALID;		ret = MLAN_STATUS_FAILURE;		goto done;	}#ifdef STA_SUPPORT	if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA)		plocal_tx_pd = (TxPD *) (head_ptr + INTF_HEADER_LEN);#endif	ret = wlan_sdio_host_to_card(pmadapter, MLAN_TYPE_DATA, pmbuf,				     tx_param);done:	switch (ret) {	case MLAN_STATUS_RESOURCE:#ifdef STA_SUPPORT		if ((GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA) &&		    pmadapter->pps_uapsd_mode &&		    (pmadapter->tx_lock_flag == MTRUE)) {			pmadapter->tx_lock_flag = MFALSE;			plocal_tx_pd->flags = 0;		}#endif		PRINTM(MINFO, "MLAN_STATUS_RESOURCE is returned/n");		break;	case MLAN_STATUS_FAILURE:		pmadapter->data_sent = MFALSE;		PRINTM(MERROR, "Error: host_to_card failed: 0x%X/n", ret);		pmadapter->dbg.num_tx_host_to_card_failure++;		pmbuf->status_code = MLAN_ERROR_DATA_TX_FAIL;		wlan_write_data_complete(pmadapter, pmbuf, ret);		break;	case MLAN_STATUS_PENDING:		DBG_HEXDUMP(MDAT_D, "Tx", head_ptr + INTF_HEADER_LEN,			    MIN(pmbuf->data_len + sizeof(TxPD),				MAX_DATA_DUMP_LEN));		break;	case MLAN_STATUS_SUCCESS:		DBG_HEXDUMP(MDAT_D, "Tx", head_ptr + INTF_HEADER_LEN,			    MIN(pmbuf->data_len + sizeof(TxPD),				MAX_DATA_DUMP_LEN));		wlan_write_data_complete(pmadapter, pmbuf, ret);		break;	default:		break;	}	if ((ret == MLAN_STATUS_SUCCESS) || (ret == MLAN_STATUS_PENDING)) {		PRINTM_GET_SYS_TIME(MDATA, &sec, &usec);		PRINTM_NETINTF(MDATA, priv);		PRINTM(MDATA, "%lu.%06lu : Data => FW/n", sec, usec);	}	LEAVE();	return ret;}
开发者ID:acorn-marvell,项目名称:brillo_pxa_kernel,代码行数:79,


示例24: wlan_11n_aggregate_pkt

/** *  @brief Aggregate multiple packets into one single AMSDU packet * *  @param priv     A pointer to mlan_private structure *  @param pra_list Pointer to the RA List table containing the pointers *                  to packets. *  @param headroom Any interface specific headroom that may be need. TxPD *                  will be formed leaving this headroom. *  @param ptrindex Pointer index * *  @return     Final packet size or MLAN_STATUS_FAILURE */intwlan_11n_aggregate_pkt(mlan_private * priv, raListTbl * pra_list,		       int headroom, int ptrindex){	int pkt_size = 0;	pmlan_adapter pmadapter = priv->adapter;	mlan_buffer *pmbuf_aggr, *pmbuf_src;	t_u8 *data;	int pad = 0;	mlan_status ret = MLAN_STATUS_SUCCESS;#ifdef DEBUG_LEVEL1	t_u32 sec = 0, usec = 0;#endif	mlan_tx_param tx_param;#ifdef STA_SUPPORT	TxPD *ptx_pd = MNULL;#endif	t_u32 max_amsdu_size = MIN(pra_list->max_amsdu, pmadapter->tx_buf_size);	ENTER();	PRINTM(MDAT_D, "Handling Aggr packet/n");	pmbuf_src =		(pmlan_buffer) util_peek_list(pmadapter->pmoal_handle,					      &pra_list->buf_head, MNULL,					      MNULL);	if (pmbuf_src) {		pmbuf_aggr = wlan_alloc_mlan_buffer(pmadapter,						    pmadapter->tx_buf_size, 0,						    MOAL_MALLOC_BUFFER);		if (!pmbuf_aggr) {			PRINTM(MERROR, "Error allocating mlan_buffer/n");			pmadapter->callbacks.moal_spin_unlock(pmadapter->							      pmoal_handle,							      priv->wmm.							      ra_list_spinlock);			LEAVE();			return MLAN_STATUS_FAILURE;		}		data = pmbuf_aggr->pbuf + headroom;		pmbuf_aggr->bss_index = pmbuf_src->bss_index;		pmbuf_aggr->buf_type = pmbuf_src->buf_type;		pmbuf_aggr->priority = pmbuf_src->priority;		pmbuf_aggr->pbuf = data;		pmbuf_aggr->data_offset = 0;		pmbuf_aggr->in_ts_sec = pmbuf_src->in_ts_sec;		pmbuf_aggr->in_ts_usec = pmbuf_src->in_ts_usec;		if (pmbuf_src->flags & MLAN_BUF_FLAG_TDLS)			pmbuf_aggr->flags |= MLAN_BUF_FLAG_TDLS;		/* Form AMSDU */		wlan_11n_form_amsdu_txpd(priv, pmbuf_aggr);		pkt_size = sizeof(TxPD);#ifdef STA_SUPPORT		if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA)			ptx_pd = (TxPD *) pmbuf_aggr->pbuf;#endif	} else {		pmadapter->callbacks.moal_spin_unlock(pmadapter->pmoal_handle,						      priv->wmm.						      ra_list_spinlock);		goto exit;	}	while (pmbuf_src && ((pkt_size + (pmbuf_src->data_len + LLC_SNAP_LEN)			      + headroom) <= max_amsdu_size)) {		pmbuf_src = (pmlan_buffer)			util_dequeue_list(pmadapter->pmoal_handle,					  &pra_list->buf_head, MNULL, MNULL);		pra_list->total_pkts--;		/* decrement for every PDU taken from the list */		priv->wmm.pkts_queued[ptrindex]--;		util_scalar_decrement(pmadapter->pmoal_handle,				      &priv->wmm.tx_pkts_queued, MNULL, MNULL);		pmadapter->callbacks.moal_spin_unlock(pmadapter->pmoal_handle,						      priv->wmm.						      ra_list_spinlock);		if (pmbuf_src->flags & MLAN_BUF_FLAG_TCP_ACK)			pmadapter->callbacks.moal_tcp_ack_tx_ind(pmadapter->								 pmoal_handle,								 pmbuf_src);//.........这里部分代码省略.........
开发者ID:acorn-marvell,项目名称:brillo_pxa_kernel,代码行数:101,


示例25: wlan_11n_deaggregate_pkt

/** *  @brief Deaggregate the received AMSDU packet * *  @param priv		A pointer to mlan_private structure *  @param pmbuf	A pointer to aggregated data packet * *  @return		MLAN_STATUS_SUCCESS --success, otherwise fail */mlan_statuswlan_11n_deaggregate_pkt(mlan_private * priv, pmlan_buffer pmbuf){	t_u16 pkt_len;	int total_pkt_len;	t_u8 *data;	t_u32 max_rx_data_size = MLAN_RX_DATA_BUF_SIZE;	int pad;	mlan_status ret = MLAN_STATUS_FAILURE;	RxPacketHdr_t *prx_pkt;	mlan_buffer *daggr_mbuf = MNULL;	mlan_adapter *pmadapter = priv->adapter;	t_u8 rfc1042_eth_hdr[MLAN_MAC_ADDR_LENGTH] = { 0xaa, 0xaa, 0x03,		0x00, 0x00, 0x00	};	t_u8 hdr_len = sizeof(Eth803Hdr_t);	ENTER();	data = (t_u8 *) (pmbuf->pbuf + pmbuf->data_offset);	total_pkt_len = pmbuf->data_len;	/* Sanity test */	if (total_pkt_len > max_rx_data_size) {		PRINTM(MERROR, "Total packet length greater than tx buffer"		       " size %d/n", total_pkt_len);		goto done;	}	pmbuf->use_count = wlan_11n_get_num_aggrpkts(data, total_pkt_len);	while (total_pkt_len >= hdr_len) {		prx_pkt = (RxPacketHdr_t *) data;		/* Length will be in network format, change it to host */		pkt_len = mlan_ntohs((*(t_u16 *) (data + (2 *							  MLAN_MAC_ADDR_LENGTH))));		if (pkt_len > total_pkt_len) {			PRINTM(MERROR,			       "Error in packet length: total_pkt_len = %d, pkt_len = %d/n",			       total_pkt_len, pkt_len);			break;		}		pad = (((pkt_len + sizeof(Eth803Hdr_t)) & 3)) ?			(4 - ((pkt_len + sizeof(Eth803Hdr_t)) & 3)) : 0;		total_pkt_len -= pkt_len + pad + sizeof(Eth803Hdr_t);		if (memcmp(pmadapter, &prx_pkt->rfc1042_hdr,			   rfc1042_eth_hdr, sizeof(rfc1042_eth_hdr)) == 0) {			memmove(pmadapter, data + LLC_SNAP_LEN, data, (2 *								       MLAN_MAC_ADDR_LENGTH));			data += LLC_SNAP_LEN;			pkt_len += sizeof(Eth803Hdr_t) - LLC_SNAP_LEN;		} else {			*(t_u16 *) (data + (2 * MLAN_MAC_ADDR_LENGTH))				= (t_u16) 0;			pkt_len += sizeof(Eth803Hdr_t);		}		daggr_mbuf =			wlan_alloc_mlan_buffer(pmadapter, pkt_len, 0,					       MOAL_ALLOC_MLAN_BUFFER);		if (daggr_mbuf == MNULL) {			PRINTM(MERROR, "Error allocating daggr mlan_buffer/n");			LEAVE();			return MLAN_STATUS_FAILURE;		}		daggr_mbuf->bss_index = pmbuf->bss_index;		daggr_mbuf->buf_type = pmbuf->buf_type;		daggr_mbuf->data_len = pkt_len;		daggr_mbuf->in_ts_sec = pmbuf->in_ts_sec;		daggr_mbuf->in_ts_usec = pmbuf->in_ts_usec;		daggr_mbuf->pparent = pmbuf;		daggr_mbuf->priority = pmbuf->priority;		memcpy(pmadapter, daggr_mbuf->pbuf + daggr_mbuf->data_offset,		       data, pkt_len);#ifdef UAP_SUPPORT		if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_UAP) {			ret = wlan_uap_recv_packet(priv, daggr_mbuf);		} else {#endif /* UAP_SUPPORT */			ret = pmadapter->callbacks.moal_recv_packet(pmadapter->								    pmoal_handle,								    daggr_mbuf);#ifdef UAP_SUPPORT		}#endif /* UAP_SUPPORT */		switch (ret) {		case MLAN_STATUS_PENDING:			break;		case MLAN_STATUS_FAILURE://.........这里部分代码省略.........
开发者ID:acorn-marvell,项目名称:brillo_pxa_kernel,代码行数:101,


示例26: woal_debug_entry

/** *  @brief Create debug proc file * *  @param priv	   A pointer to a moal_private structure * *  @return 	   N/A */voidwoal_debug_entry(moal_private * priv){    struct proc_dir_entry *r;    ENTER();    if (priv->proc_entry == NULL)        return;#ifdef STA_SUPPORT    if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_STA) {        priv->items_priv.items =            (struct debug_data *) kmalloc(sizeof(items), GFP_KERNEL);        if (!priv->items_priv.items) {            PRINTM(MERROR, "Failed to allocate memory for debug data/n");            LEAVE();            return;        }        memcpy(priv->items_priv.items, items, sizeof(items));        priv->items_priv.num_of_items = sizeof(items) / sizeof(items[0]);    }#endif#ifdef UAP_SUPPORT    if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_UAP) {        priv->items_priv.items =            (struct debug_data *) kmalloc(sizeof(uap_items), GFP_KERNEL);        if (!priv->items_priv.items) {            PRINTM(MERROR, "Failed to allocate memory for debug data/n");            LEAVE();            return;        }        memcpy(priv->items_priv.items, uap_items, sizeof(uap_items));        priv->items_priv.num_of_items =            sizeof(uap_items) / sizeof(uap_items[0]);    }#endif    priv->items_priv.priv = priv;    priv->items_priv.items[priv->items_priv.num_of_items - 1].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 2].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 3].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 4].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 5].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 6].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 7].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 8].addr +=        (t_u32) (priv->phandle);    priv->items_priv.items[priv->items_priv.num_of_items - 9].addr +=        (t_u32) (priv->phandle);    /* Create proc entry */    r = create_proc_entry("debug", 0644, priv->proc_entry);    if (r == NULL) {        LEAVE();        return;    }    r->data = &priv->items_priv;    r->read_proc = woal_debug_read;    r->write_proc = woal_debug_write;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)    r->owner = THIS_MODULE;#endif    LEAVE();}
开发者ID:lshw,项目名称:loongson1-linux-3.0,代码行数:79,


示例27: wlan_11n_create_rxreorder_tbl

/** *  @brief This function will create a entry in rx reordering table for the  *  		given ta/tid and will initialize it with seq_num, win_size *   *  @param priv     A pointer to mlan_private *  @param ta       ta to find in reordering table *  @param tid	    tid to find in reordering table *  @param win_size win_size for the give ta/tid pair. *  @param seq_num  Starting sequence number for current entry. * *  @return 	    N/A */t_voidwlan_11n_create_rxreorder_tbl(mlan_private * priv, t_u8 * ta, int tid,                              int win_size, int seq_num){    int i;    pmlan_adapter pmadapter = priv->adapter;    RxReorderTbl *rx_reor_tbl_ptr, *new_node;#ifdef UAP_SUPPORT    sta_node *sta_ptr = MNULL;#endif    t_u16 last_seq = 0;    ENTER();    /*      * If we get a TID, ta pair which is already present dispatch all the     * the packets and move the window size until the ssn     */    if ((rx_reor_tbl_ptr = wlan_11n_get_rxreorder_tbl(priv, tid, ta))) {        wlan_11n_dispatch_pkt_until_start_win(priv, rx_reor_tbl_ptr, seq_num);    } else {        PRINTM(MDAT_D, "%s: seq_num %d, tid %d, ta %02x:%02x:%02x:%02x:"               "%02x:%02x, win_size %d/n", __FUNCTION__,               seq_num, tid, ta[0], ta[1], ta[2], ta[3],               ta[4], ta[5], win_size);        if (pmadapter->callbacks.            moal_malloc(pmadapter->pmoal_handle, sizeof(RxReorderTbl),                        MLAN_MEM_DEF, (t_u8 **) & new_node)) {            PRINTM(MERROR, "Rx reorder memory allocation failed/n");            return;        }        util_init_list((pmlan_linked_list) new_node);        new_node->tid = tid;        memcpy(pmadapter, new_node->ta, ta, MLAN_MAC_ADDR_LENGTH);        new_node->start_win = seq_num;        if (queuing_ra_based(priv)) {            // TODO for adhoc#ifdef UAP_SUPPORT            if (GET_BSS_ROLE(priv) == MLAN_BSS_ROLE_UAP) {                if ((sta_ptr = wlan_get_station_entry(priv, ta)))                    last_seq = sta_ptr->rx_seq[tid];            }#endif            PRINTM(MINFO, "UAP/ADHOC:last_seq=%d start_win=%d/n", last_seq,                   new_node->start_win);        } else {            last_seq = priv->rx_seq[tid];        }        if (last_seq >= new_node->start_win) {            PRINTM(MDAT_D, "Update start_win: last_seq=%d, start_win=%d/n",                   last_seq, new_node->start_win);            new_node->start_win = last_seq + 1;        }        new_node->win_size = win_size;        if (pmadapter->callbacks.            moal_malloc(pmadapter->pmoal_handle, sizeof(t_void *) * win_size,                        MLAN_MEM_DEF, (t_u8 **) & new_node->rx_reorder_ptr)) {            PRINTM(MERROR, "Rx reorder table memory allocation" "failed/n");            pmadapter->callbacks.moal_mfree(pmadapter->pmoal_handle,                                            (t_u8 *) new_node);            return;        }        PRINTM(MDAT_D, "Create ReorderPtr: %p/n", new_node);        new_node->timer_context.ptr = new_node;        new_node->timer_context.priv = priv;        new_node->timer_context.timer_is_set = MFALSE;        pmadapter->callbacks.moal_init_timer(pmadapter->pmoal_handle,                                             &new_node->timer_context.timer,                                             wlan_flush_data,                                             &new_node->timer_context);        for (i = 0; i < win_size; ++i)            new_node->rx_reorder_ptr[i] = MNULL;        util_enqueue_list_tail(pmadapter->pmoal_handle,                               &priv->rx_reorder_tbl_ptr,                               (pmlan_linked_list) new_node,                               pmadapter->callbacks.moal_spin_lock,                               pmadapter->callbacks.moal_spin_unlock);    }    LEAVE();}
开发者ID:32743069,项目名称:amlogic_common_3050,代码行数:98,


示例28: mwifiex_info_read

/* * Proc info file read handler. * * This function is called when the 'info' file is opened for reading. * It prints the following driver related information - *      - Driver name *      - Driver version *      - Driver extended version *      - Interface name *      - BSS mode *      - Media state (connected or disconnected) *      - MAC address *      - Total number of Tx bytes *      - Total number of Rx bytes *      - Total number of Tx packets *      - Total number of Rx packets *      - Total number of dropped Tx packets *      - Total number of dropped Rx packets *      - Total number of corrupted Tx packets *      - Total number of corrupted Rx packets *      - Carrier status (on or off) *      - Tx queue status (started or stopped) * * For STA mode drivers, it also prints the following extra - *      - ESSID *      - BSSID *      - Channel *      - Region code *      - Multicast count *      - Multicast addresses */static ssize_tmwifiex_info_read(struct file *file, char __user *ubuf,		  size_t count, loff_t *ppos){	struct mwifiex_private *priv =		(struct mwifiex_private *) file->private_data;	struct net_device *netdev = priv->netdev;	struct netdev_hw_addr *ha;	struct netdev_queue *txq;	unsigned long page = get_zeroed_page(GFP_KERNEL);	char *p = (char *) page, fmt[64];	struct mwifiex_bss_info info;	ssize_t ret;	int i = 0;	if (!p)		return -ENOMEM;	memset(&info, 0, sizeof(info));	ret = mwifiex_get_bss_info(priv, &info);	if (ret)		goto free_and_exit;	mwifiex_drv_get_driver_version(priv->adapter, fmt, sizeof(fmt) - 1);	if (!priv->version_str[0])		mwifiex_get_ver_ext(priv);	p += sprintf(p, "driver_name = " "/"mwifiex/"/n");	p += sprintf(p, "driver_version = %s", fmt);	p += sprintf(p, "/nverext = %s", priv->version_str);	p += sprintf(p, "/ninterface_name=/"%s/"/n", netdev->name);	if (info.bss_mode >= ARRAY_SIZE(bss_modes))		p += sprintf(p, "bss_mode=/"%d/"/n", info.bss_mode);	else		p += sprintf(p, "bss_mode=/"%s/"/n", bss_modes[info.bss_mode]);	p += sprintf(p, "media_state=/"%s/"/n",		     (!priv->media_connected ? "Disconnected" : "Connected"));	p += sprintf(p, "mac_address=/"%pM/"/n", netdev->dev_addr);	if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) {		p += sprintf(p, "multicast_count=/"%d/"/n",			     netdev_mc_count(netdev));		p += sprintf(p, "essid=/"%s/"/n", info.ssid.ssid);		p += sprintf(p, "bssid=/"%pM/"/n", info.bssid);		p += sprintf(p, "channel=/"%d/"/n", (int) info.bss_chan);		p += sprintf(p, "country_code = /"%s/"/n", info.country_code);		netdev_for_each_mc_addr(ha, netdev)			p += sprintf(p, "multicast_address[%d]=/"%pM/"/n",					i++, ha->addr);	}	p += sprintf(p, "num_tx_bytes = %lu/n", priv->stats.tx_bytes);	p += sprintf(p, "num_rx_bytes = %lu/n", priv->stats.rx_bytes);	p += sprintf(p, "num_tx_pkts = %lu/n", priv->stats.tx_packets);	p += sprintf(p, "num_rx_pkts = %lu/n", priv->stats.rx_packets);	p += sprintf(p, "num_tx_pkts_dropped = %lu/n", priv->stats.tx_dropped);	p += sprintf(p, "num_rx_pkts_dropped = %lu/n", priv->stats.rx_dropped);	p += sprintf(p, "num_tx_pkts_err = %lu/n", priv->stats.tx_errors);	p += sprintf(p, "num_rx_pkts_err = %lu/n", priv->stats.rx_errors);	p += sprintf(p, "carrier %s/n", ((netif_carrier_ok(priv->netdev))					 ? "on" : "off"));	p += sprintf(p, "tx queue");	for (i = 0; i < netdev->num_tx_queues; i++) {		txq = netdev_get_tx_queue(netdev, i);		p += sprintf(p, " %d:%s", i, netif_tx_queue_stopped(txq) ?//.........这里部分代码省略.........
开发者ID:DenisLug,项目名称:mptcp,代码行数:101,



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


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