aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c9
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/fweh.c6
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/fweh.h6
3 files changed, 7 insertions, 14 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index e68500bb63e7..763a84eba216 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -323,13 +323,8 @@ void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list)
323 /* Strip header, count, deliver upward */ 323 /* Strip header, count, deliver upward */
324 skb_pull(skb, ETH_HLEN); 324 skb_pull(skb, ETH_HLEN);
325 325
326 /* Process special event packets and then discard them */ 326 /* Process special event packets */
327 brcmf_fweh_process_skb(drvr, skb, &ifidx); 327 brcmf_fweh_process_skb(drvr, skb);
328
329 if (drvr->iflist[ifidx]) {
330 ifp = drvr->iflist[ifidx];
331 ifp->ndev->last_rx = jiffies;
332 }
333 328
334 if (!(ifp->ndev->flags & IFF_UP)) { 329 if (!(ifp->ndev->flags & IFF_UP)) {
335 brcmu_pkt_buf_free_skb(skb); 330 brcmu_pkt_buf_free_skb(skb);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
index 51ba13d243a5..5a64280e6485 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
@@ -407,13 +407,12 @@ int brcmf_fweh_activate_events(struct brcmf_if *ifp)
407 * 407 *
408 * @drvr: driver information object. 408 * @drvr: driver information object.
409 * @event_packet: event packet to process. 409 * @event_packet: event packet to process.
410 * @ifidx: index of the firmware interface (may change).
411 * 410 *
412 * If the packet buffer contains a firmware event message it will 411 * If the packet buffer contains a firmware event message it will
413 * dispatch the event to a registered handler (using worker). 412 * dispatch the event to a registered handler (using worker).
414 */ 413 */
415void brcmf_fweh_process_event(struct brcmf_pub *drvr, 414void brcmf_fweh_process_event(struct brcmf_pub *drvr,
416 struct brcmf_event *event_packet, u8 *ifidx) 415 struct brcmf_event *event_packet)
417{ 416{
418 enum brcmf_fweh_event_code code; 417 enum brcmf_fweh_event_code code;
419 struct brcmf_fweh_info *fweh = &drvr->fweh; 418 struct brcmf_fweh_info *fweh = &drvr->fweh;
@@ -425,7 +424,6 @@ void brcmf_fweh_process_event(struct brcmf_pub *drvr,
425 /* get event info */ 424 /* get event info */
426 code = get_unaligned_be32(&event_packet->msg.event_type); 425 code = get_unaligned_be32(&event_packet->msg.event_type);
427 datalen = get_unaligned_be32(&event_packet->msg.datalen); 426 datalen = get_unaligned_be32(&event_packet->msg.datalen);
428 *ifidx = event_packet->msg.ifidx;
429 data = &event_packet[1]; 427 data = &event_packet[1];
430 428
431 if (code >= BRCMF_E_LAST) 429 if (code >= BRCMF_E_LAST)
@@ -442,7 +440,7 @@ void brcmf_fweh_process_event(struct brcmf_pub *drvr,
442 return; 440 return;
443 441
444 event->code = code; 442 event->code = code;
445 event->ifidx = *ifidx; 443 event->ifidx = event_packet->msg.ifidx;
446 444
447 /* use memcpy to get aligned event message */ 445 /* use memcpy to get aligned event message */
448 memcpy(&event->emsg, &event_packet->msg, sizeof(event->emsg)); 446 memcpy(&event->emsg, &event_packet->msg, sizeof(event->emsg));
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.h b/drivers/net/wireless/brcm80211/brcmfmac/fweh.h
index 8c39b51dcccf..6ec5db9c60a5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.h
@@ -187,10 +187,10 @@ void brcmf_fweh_unregister(struct brcmf_pub *drvr,
187 enum brcmf_fweh_event_code code); 187 enum brcmf_fweh_event_code code);
188int brcmf_fweh_activate_events(struct brcmf_if *ifp); 188int brcmf_fweh_activate_events(struct brcmf_if *ifp);
189void brcmf_fweh_process_event(struct brcmf_pub *drvr, 189void brcmf_fweh_process_event(struct brcmf_pub *drvr,
190 struct brcmf_event *event_packet, u8 *ifidx); 190 struct brcmf_event *event_packet);
191 191
192static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr, 192static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr,
193 struct sk_buff *skb, u8 *ifidx) 193 struct sk_buff *skb)
194{ 194{
195 struct brcmf_event *event_packet; 195 struct brcmf_event *event_packet;
196 u8 *data; 196 u8 *data;
@@ -213,7 +213,7 @@ static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr,
213 if (usr_stype != BCMILCP_BCM_SUBTYPE_EVENT) 213 if (usr_stype != BCMILCP_BCM_SUBTYPE_EVENT)
214 return; 214 return;
215 215
216 brcmf_fweh_process_event(drvr, event_packet, ifidx); 216 brcmf_fweh_process_event(drvr, event_packet);
217} 217}
218 218
219#endif /* FWEH_H_ */ 219#endif /* FWEH_H_ */