diff options
author | Arend van Spriel <arend@broadcom.com> | 2013-01-02 09:22:42 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-01-07 15:16:56 -0500 |
commit | 3aa7aad2b2da32dd897900ab3eb62348a54d2dc1 (patch) | |
tree | 3c4b5b01d7035767163b5ed0b2d6c1d5904e62c1 | |
parent | 79d7c4e8da4ac3cfa98e8e622a17baaeb3c9d29d (diff) |
brcmfmac: remove rx helper function from bus interface
The bus interface provided a wrapper function to pass a single
packet to the common driver part filling a skb queue with one
packet. For clarity the caller now sets up the skb queue and
call the rx bus interface function.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4 files changed, 13 insertions, 16 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h index 358b54fff795..639bc2a2d03c 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | |||
@@ -138,17 +138,8 @@ extern bool brcmf_c_prec_enq(struct device *dev, struct pktq *q, | |||
138 | struct sk_buff *pkt, int prec); | 138 | struct sk_buff *pkt, int prec); |
139 | 139 | ||
140 | /* Receive frame for delivery to OS. Callee disposes of rxp. */ | 140 | /* Receive frame for delivery to OS. Callee disposes of rxp. */ |
141 | extern void brcmf_rx_frame(struct device *dev, u8 ifidx, | 141 | extern void brcmf_rx_frames(struct device *dev, u8 ifidx, |
142 | struct sk_buff_head *rxlist); | 142 | struct sk_buff_head *rxlist); |
143 | static inline void brcmf_rx_packet(struct device *dev, int ifidx, | ||
144 | struct sk_buff *pkt) | ||
145 | { | ||
146 | struct sk_buff_head q; | ||
147 | |||
148 | skb_queue_head_init(&q); | ||
149 | skb_queue_tail(&q, pkt); | ||
150 | brcmf_rx_frame(dev, ifidx, &q); | ||
151 | } | ||
152 | 143 | ||
153 | /* Indication from bus module regarding presence/insertion of dongle. */ | 144 | /* Indication from bus module regarding presence/insertion of dongle. */ |
154 | extern int brcmf_attach(uint bus_hdrlen, struct device *dev); | 145 | extern int brcmf_attach(uint bus_hdrlen, struct device *dev); |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index 6520b587d4c8..a820f58100b7 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | |||
@@ -248,8 +248,8 @@ void brcmf_txflowblock(struct device *dev, bool state) | |||
248 | } | 248 | } |
249 | } | 249 | } |
250 | 250 | ||
251 | void brcmf_rx_frame(struct device *dev, u8 ifidx, | 251 | void brcmf_rx_frames(struct device *dev, u8 ifidx, |
252 | struct sk_buff_head *skb_list) | 252 | struct sk_buff_head *skb_list) |
253 | { | 253 | { |
254 | unsigned char *eth; | 254 | unsigned char *eth; |
255 | uint len; | 255 | uint len; |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 651474bc1ce3..13ea9b48acdb 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
@@ -1405,7 +1405,7 @@ static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq) | |||
1405 | } | 1405 | } |
1406 | /* sent any remaining packets up */ | 1406 | /* sent any remaining packets up */ |
1407 | if (bus->glom.qlen) | 1407 | if (bus->glom.qlen) |
1408 | brcmf_rx_frame(bus->sdiodev->dev, ifidx, &bus->glom); | 1408 | brcmf_rx_frames(bus->sdiodev->dev, ifidx, &bus->glom); |
1409 | 1409 | ||
1410 | bus->sdcnt.rxglomframes++; | 1410 | bus->sdcnt.rxglomframes++; |
1411 | bus->sdcnt.rxglompkts += bus->glom.qlen; | 1411 | bus->sdcnt.rxglompkts += bus->glom.qlen; |
@@ -1556,6 +1556,7 @@ static void brcmf_pad(struct brcmf_sdio *bus, u16 *pad, u16 *rdlen) | |||
1556 | static uint brcmf_sdio_readframes(struct brcmf_sdio *bus, uint maxframes) | 1556 | static uint brcmf_sdio_readframes(struct brcmf_sdio *bus, uint maxframes) |
1557 | { | 1557 | { |
1558 | struct sk_buff *pkt; /* Packet for event or data frames */ | 1558 | struct sk_buff *pkt; /* Packet for event or data frames */ |
1559 | struct sk_buff_head pktlist; /* needed for bus interface */ | ||
1559 | u16 pad; /* Number of pad bytes to read */ | 1560 | u16 pad; /* Number of pad bytes to read */ |
1560 | uint rxleft = 0; /* Remaining number of frames allowed */ | 1561 | uint rxleft = 0; /* Remaining number of frames allowed */ |
1561 | int sdret; /* Return code from calls */ | 1562 | int sdret; /* Return code from calls */ |
@@ -1766,7 +1767,9 @@ static uint brcmf_sdio_readframes(struct brcmf_sdio *bus, uint maxframes) | |||
1766 | continue; | 1767 | continue; |
1767 | } | 1768 | } |
1768 | 1769 | ||
1769 | brcmf_rx_packet(bus->sdiodev->dev, ifidx, pkt); | 1770 | skb_queue_head_init(&pktlist); |
1771 | skb_queue_tail(&pktlist, pkt); | ||
1772 | brcmf_rx_frames(bus->sdiodev->dev, ifidx, &pktlist); | ||
1770 | } | 1773 | } |
1771 | 1774 | ||
1772 | rxcount = maxframes - rxleft; | 1775 | rxcount = maxframes - rxleft; |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/brcm80211/brcmfmac/usb.c index 1df85955ad93..34342ff718db 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c | |||
@@ -443,6 +443,7 @@ static void brcmf_usb_rx_complete(struct urb *urb) | |||
443 | struct brcmf_usbreq *req = (struct brcmf_usbreq *)urb->context; | 443 | struct brcmf_usbreq *req = (struct brcmf_usbreq *)urb->context; |
444 | struct brcmf_usbdev_info *devinfo = req->devinfo; | 444 | struct brcmf_usbdev_info *devinfo = req->devinfo; |
445 | struct sk_buff *skb; | 445 | struct sk_buff *skb; |
446 | struct sk_buff_head skbq; | ||
446 | int ifidx = 0; | 447 | int ifidx = 0; |
447 | 448 | ||
448 | brcmf_dbg(USB, "Enter, urb->status=%d\n", urb->status); | 449 | brcmf_dbg(USB, "Enter, urb->status=%d\n", urb->status); |
@@ -460,13 +461,15 @@ static void brcmf_usb_rx_complete(struct urb *urb) | |||
460 | } | 461 | } |
461 | 462 | ||
462 | if (devinfo->bus_pub.state == BRCMFMAC_USB_STATE_UP) { | 463 | if (devinfo->bus_pub.state == BRCMFMAC_USB_STATE_UP) { |
464 | skb_queue_head_init(&skbq); | ||
465 | skb_queue_tail(&skbq, skb); | ||
463 | skb_put(skb, urb->actual_length); | 466 | skb_put(skb, urb->actual_length); |
464 | if (brcmf_proto_hdrpull(devinfo->dev, &ifidx, skb) != 0) { | 467 | if (brcmf_proto_hdrpull(devinfo->dev, &ifidx, skb) != 0) { |
465 | brcmf_err("rx protocol error\n"); | 468 | brcmf_err("rx protocol error\n"); |
466 | brcmu_pkt_buf_free_skb(skb); | 469 | brcmu_pkt_buf_free_skb(skb); |
467 | devinfo->bus_pub.bus->dstats.rx_errors++; | 470 | devinfo->bus_pub.bus->dstats.rx_errors++; |
468 | } else | 471 | } else |
469 | brcmf_rx_packet(devinfo->dev, ifidx, skb); | 472 | brcmf_rx_frames(devinfo->dev, ifidx, &skbq); |
470 | /* zero lenght packets indicate usb "failure". Do not refill */ | 473 | /* zero lenght packets indicate usb "failure". Do not refill */ |
471 | if (urb->actual_length) | 474 | if (urb->actual_length) |
472 | brcmf_usb_rx_refill(devinfo, req); | 475 | brcmf_usb_rx_refill(devinfo, req); |