static void iwl_testmode_ucode_rx_pkt(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb) { struct ieee80211_hw *hw = priv->hw; struct sk_buff *skb; void *data; int length; data = (void *)rxb_addr(rxb); length = get_event_length(rxb); if (!data || length == 0) return; skb = cfg80211_testmode_alloc_event_skb(hw->wiphy, 20 + length, GFP_ATOMIC); if (skb == NULL) { IWL_DEBUG_INFO(priv, "Run out of memory for messages to user space ?\n"); return; } NLA_PUT_U32(skb, IWL_TM_ATTR_COMMAND, IWL_TM_CMD_DEV2APP_UCODE_RX_PKT); NLA_PUT(skb, IWL_TM_ATTR_UCODE_RX_PKT, length, data); cfg80211_testmode_event(skb, GFP_ATOMIC); return; nla_put_failure: kfree_skb(skb); IWL_DEBUG_INFO(priv, "Ouch, overran buffer, check allocation!\n"); }
void ath6kl_wlan_hb_event(struct ath6kl *ar, u8 value, void *buf, size_t buf_len) { struct sk_buff *skb; if (!buf || buf_len == 0) { printk(KERN_ERR "buf buflen is empty\n"); return; } skb = cfg80211_testmode_alloc_event_skb(ar->wiphy, buf_len, GFP_ATOMIC); if (!skb) { printk(KERN_ERR "failed to allocate testmode event skb!\n"); return; } NLA_PUT_U32(skb, ATH6KL_TM_ATTR_CMD, ATH6KL_TM_CMD_WLAN_HB); NLA_PUT_U32(skb, ATH6KL_TM_ATTR_TYPE, value); NLA_PUT(skb, ATH6KL_TM_ATTR_DATA, buf_len, buf); cfg80211_testmode_event(skb, GFP_ATOMIC); return; #ifdef _NLA_PUT_ERR_RTN nla_put_failure: kfree_skb(skb); printk(KERN_ERR "nla_put failed on testmode event skb!\n"); #endif }
void ath6kl_tm_rx_event(struct ath6kl *ar, void *buf, size_t buf_len) { struct sk_buff *skb; if (!buf || buf_len == 0) { printk(KERN_ERR "buf buflen is empty\n"); return; } skb = cfg80211_testmode_alloc_event_skb(ar->wiphy, buf_len, GFP_ATOMIC); if (!skb) { printk (KERN_ERR "failed to allocate testmode rx skb!\n"); return; } NLA_PUT_U32(skb, ATH6KL_TM_ATTR_CMD, ATH6KL_TM_CMD_TCMD); NLA_PUT(skb, ATH6KL_TM_ATTR_DATA, buf_len, buf); cfg80211_testmode_event(skb, GFP_ATOMIC); return; nla_put_failure: kfree_skb(skb); printk(KERN_ERR "nla_put failed on testmode rx skb!\n"); }
static int wlcore_smart_config_sync_event(struct wl1271 *wl, u8 sync_channel, u8 sync_band) { struct sk_buff *skb; enum ieee80211_band band; int freq; if (sync_band == WLCORE_BAND_5GHZ) band = IEEE80211_BAND_5GHZ; else band = IEEE80211_BAND_2GHZ; freq = ieee80211_channel_to_frequency(sync_channel, band); wl1271_debug(DEBUG_EVENT, "SMART_CONFIG_SYNC_EVENT_ID, freq: %d (chan: %d band %d)", freq, sync_channel, sync_band); skb = cfg80211_testmode_alloc_event_skb(wl->hw->wiphy, 20, GFP_KERNEL); if (nla_put_u8(skb, WL1271_TM_ATTR_SMART_CONFIG_EVENT, WLCORE_TM_SC_EVENT_SYNC) || nla_put_u32(skb, WL1271_TM_ATTR_FREQ, freq)) { kfree_skb(skb); return -EMSGSIZE; } cfg80211_testmode_event(skb, GFP_KERNEL); return 0; }
void ath6kl_tm_rx_event(struct ath6kl *ar, void *buf, size_t buf_len) { struct sk_buff *skb; if (!buf || buf_len == 0) return; skb = cfg80211_testmode_alloc_event_skb(ar->wiphy, buf_len, GFP_KERNEL); if (!skb) { ath6kl_warn("failed to allocate testmode rx skb!\n"); return; } if (nla_put_u32(skb, ATH6KL_TM_ATTR_CMD, ATH6KL_TM_CMD_TCMD) || nla_put(skb, ATH6KL_TM_ATTR_DATA, buf_len, buf)) goto nla_put_failure; cfg80211_testmode_event(skb, GFP_KERNEL); return; nla_put_failure: kfree_skb(skb); ath6kl_warn("nla_put failed on testmode rx skb!\n"); }
static int wlcore_smart_config_decode_event(struct wl1271 *wl, u8 ssid_len, u8 *ssid, u8 pwd_len, u8 *pwd) { struct sk_buff *skb; wl1271_debug(DEBUG_EVENT, "SMART_CONFIG_DECODE_EVENT_ID"); wl1271_dump_ascii(DEBUG_EVENT, "SSID:", ssid, ssid_len); wl1271_dump_ascii(DEBUG_EVENT, "PWD:", pwd, pwd_len); skb = cfg80211_testmode_alloc_event_skb(wl->hw->wiphy, ssid_len + pwd_len + 20, GFP_KERNEL); if (nla_put_u8(skb, WL1271_TM_ATTR_SMART_CONFIG_EVENT, WLCORE_TM_SC_EVENT_DECODE) || nla_put(skb, WL1271_TM_ATTR_SSID, ssid_len, ssid) || nla_put(skb, WL1271_TM_ATTR_PSK, pwd_len, pwd)) { kfree_skb(skb); return -EMSGSIZE; } cfg80211_testmode_event(skb, GFP_KERNEL); return 0; }
void iwl_mvm_testmode_event(struct iwl_op_mode *op_mode, struct sk_buff *skb) { cfg80211_testmode_event(skb, GFP_ATOMIC); }
static void iwl_testmode_event(struct iwl_op_mode *op_mode, struct sk_buff *skb) { return cfg80211_testmode_event(skb, GFP_ATOMIC); }