diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/util.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/util.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/util.c b/drivers/net/wireless/mwifiex/util.c index 2864c74bdb6f..ae88f80cf86b 100644 --- a/drivers/net/wireless/mwifiex/util.c +++ b/drivers/net/wireless/mwifiex/util.c | |||
@@ -142,6 +142,46 @@ int mwifiex_get_debug_info(struct mwifiex_private *priv, | |||
142 | } | 142 | } |
143 | 143 | ||
144 | /* | 144 | /* |
145 | * This function processes the received management packet and send it | ||
146 | * to the kernel. | ||
147 | */ | ||
148 | int | ||
149 | mwifiex_process_mgmt_packet(struct mwifiex_adapter *adapter, | ||
150 | struct sk_buff *skb) | ||
151 | { | ||
152 | struct rxpd *rx_pd; | ||
153 | struct mwifiex_private *priv; | ||
154 | u16 pkt_len; | ||
155 | |||
156 | if (!skb) | ||
157 | return -1; | ||
158 | |||
159 | rx_pd = (struct rxpd *)skb->data; | ||
160 | priv = mwifiex_get_priv_by_id(adapter, rx_pd->bss_num, rx_pd->bss_type); | ||
161 | if (!priv) | ||
162 | return -1; | ||
163 | |||
164 | skb_pull(skb, le16_to_cpu(rx_pd->rx_pkt_offset)); | ||
165 | skb_pull(skb, sizeof(pkt_len)); | ||
166 | |||
167 | pkt_len = le16_to_cpu(rx_pd->rx_pkt_length); | ||
168 | |||
169 | /* Remove address4 */ | ||
170 | memmove(skb->data + sizeof(struct ieee80211_hdr_3addr), | ||
171 | skb->data + sizeof(struct ieee80211_hdr), | ||
172 | pkt_len - sizeof(struct ieee80211_hdr)); | ||
173 | |||
174 | pkt_len -= ETH_ALEN + sizeof(pkt_len); | ||
175 | rx_pd->rx_pkt_length = cpu_to_le16(pkt_len); | ||
176 | |||
177 | cfg80211_rx_mgmt(priv->wdev, priv->roc_cfg.chan.center_freq, | ||
178 | CAL_RSSI(rx_pd->snr, rx_pd->nf), | ||
179 | skb->data, pkt_len, GFP_ATOMIC); | ||
180 | |||
181 | return 0; | ||
182 | } | ||
183 | |||
184 | /* | ||
145 | * This function processes the received packet before sending it to the | 185 | * This function processes the received packet before sending it to the |
146 | * kernel. | 186 | * kernel. |
147 | * | 187 | * |