diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/fweh.h | 6 |
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 | */ |
415 | void brcmf_fweh_process_event(struct brcmf_pub *drvr, | 414 | void 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); |
188 | int brcmf_fweh_activate_events(struct brcmf_if *ifp); | 188 | int brcmf_fweh_activate_events(struct brcmf_if *ifp); |
189 | void brcmf_fweh_process_event(struct brcmf_pub *drvr, | 189 | void brcmf_fweh_process_event(struct brcmf_pub *drvr, |
190 | struct brcmf_event *event_packet, u8 *ifidx); | 190 | struct brcmf_event *event_packet); |
191 | 191 | ||
192 | static inline void brcmf_fweh_process_skb(struct brcmf_pub *drvr, | 192 | static 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_ */ |