* [PATCH 4.12] brcmfmac: move brcmf_txcomplete function to fwsignal.c @ 2017-02-27 12:42 Rafał Miłecki 2017-02-27 18:04 ` kbuild test robot 2017-03-03 6:38 ` [PATCH 4.12 V2] " Rafał Miłecki 0 siblings, 2 replies; 4+ messages in thread From: Rafał Miłecki @ 2017-02-27 12:42 UTC (permalink / raw) To: Kalle Valo Cc: Arend van Spriel, Franky Lin, Hante Meuleman, Pieter-Paul Giesberts, Franky Lin, linux-wireless, brcm80211-dev-list.pdl, Rafał Miłecki From: Rafał Miłecki <rafal@milecki.pl> This function is called by USB and SDIO only, both using BCDC & FW Signalling. Move it out of core.c to make this file more generic and allow making fwsignal optional in the future. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 3 --- .../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 18 ------------------ .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 18 ++++++++++++++++++ .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.h | 5 +++++ .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 2 +- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h index 76693df34742..059e40fdc3d5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h @@ -232,9 +232,6 @@ void brcmf_dev_reset(struct device *dev); /* Indication from bus module to change flow-control state */ void brcmf_txflowblock(struct device *dev, bool state); -/* Notify the bus has transferred the tx packet to firmware */ -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); - /* Configure the "global" bus state used by upper layers */ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 59831dc446d6..47cfb82dbfeb 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -383,24 +383,6 @@ void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success) brcmu_pkt_buf_free_skb(txp); } -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) -{ - struct brcmf_bus *bus_if = dev_get_drvdata(dev); - struct brcmf_pub *drvr = bus_if->drvr; - struct brcmf_if *ifp; - - /* await txstatus signal for firmware if active */ - if (brcmf_fws_fc_active(drvr->fws)) { - if (!success) - brcmf_fws_bustxfail(drvr->fws, txp); - } else { - if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) - brcmu_pkt_buf_free_skb(txp); - else - brcmf_txfinalize(ifp, txp, success); - } -} - static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, struct ethtool_drvinfo *info) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c index 5f1a5929cb30..07f0b3cfd59c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c @@ -2445,6 +2445,24 @@ bool brcmf_fws_fc_active(struct brcmf_fws_info *fws) return fws->fcmode != BRCMF_FWS_FCMODE_NONE; } +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, bool success) +{ + struct brcmf_bus *bus_if = dev_get_drvdata(dev); + struct brcmf_pub *drvr = bus_if->drvr; + struct brcmf_if *ifp; + + /* await txstatus signal for firmware if active */ + if (brcmf_fws_fc_active(drvr->fws)) { + if (!success) + brcmf_fws_bustxfail(drvr->fws, txp); + } else { + if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) + brcmu_pkt_buf_free_skb(txp); + else + brcmf_txfinalize(ifp, txp, success); + } +} + void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb) { u32 hslot; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h index bb4591c4a14a..d534164785de 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h @@ -32,6 +32,11 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb); void brcmf_fws_reset_interface(struct brcmf_if *ifp); void brcmf_fws_add_interface(struct brcmf_if *ifp); void brcmf_fws_del_interface(struct brcmf_if *ifp); + +/* Notify the bus has transferred the tx packet to firmware */ +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, + bool success); + void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb); void brcmf_fws_bus_blocked(struct brcmf_pub *drvr, bool flow_blocked); void brcmf_fws_rxreorder(struct brcmf_if *ifp, struct sk_buff *skb); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 10522edc9750..1d7ca341fb9f 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -2266,7 +2266,7 @@ static int brcmf_sdio_txpkt(struct brcmf_sdio *bus, struct sk_buff_head *pktq, bus->tx_seq = (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WRAP; skb_queue_walk_safe(pktq, pkt_next, tmp) { __skb_unlink(pkt_next, pktq); - brcmf_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); + brcmf_fws_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); } return ret; } diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c index c527aa8a5f8f..29f83a575e4d 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c @@ -484,7 +484,7 @@ static void brcmf_usb_tx_complete(struct urb *urb) req->skb); brcmf_usb_del_fromq(devinfo, req); - brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0); + brcmf_fws_txcomplete(devinfo->dev, req->skb, urb->status == 0); req->skb = NULL; brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_freecount); spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); -- 2.11.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 4.12] brcmfmac: move brcmf_txcomplete function to fwsignal.c 2017-02-27 12:42 [PATCH 4.12] brcmfmac: move brcmf_txcomplete function to fwsignal.c Rafał Miłecki @ 2017-02-27 18:04 ` kbuild test robot 2017-03-03 6:38 ` [PATCH 4.12 V2] " Rafał Miłecki 1 sibling, 0 replies; 4+ messages in thread From: kbuild test robot @ 2017-02-27 18:04 UTC (permalink / raw) To: Rafał Miłecki Cc: kbuild-all, Kalle Valo, Arend van Spriel, Franky Lin, Hante Meuleman, Pieter-Paul Giesberts, Franky Lin, linux-wireless, brcm80211-dev-list.pdl, Rafał Miłecki [-- Attachment #1: Type: text/plain, Size: 2094 bytes --] Hi Rafał, [auto build test ERROR on wireless-drivers-next/master] [also build test ERROR on next-20170227] [cannot apply to v4.10] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Rafa-Mi-ecki/brcmfmac-move-brcmf_txcomplete-function-to-fwsignal-c/20170228-004934 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master config: i386-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function 'brcmf_sdio_txpkt': >> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:2268:3: error: implicit declaration of function 'brcmf_fws_txcomplete' [-Werror=implicit-function-declaration] brcmf_fws_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); ^~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c: In function 'brcmf_usb_tx_complete': >> drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c:485:2: error: implicit declaration of function 'brcmf_fws_txcomplete' [-Werror=implicit-function-declaration] brcmf_fws_txcomplete(devinfo->dev, req->skb, urb->status == 0); ^~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/brcmf_fws_txcomplete +2268 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 2262 done: 2263 brcmf_sdio_txpkt_postp(bus, pktq); 2264 if (ret == 0) 2265 bus->tx_seq = (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WRAP; 2266 skb_queue_walk_safe(pktq, pkt_next, tmp) { 2267 __skb_unlink(pkt_next, pktq); > 2268 brcmf_fws_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); 2269 } 2270 return ret; 2271 } --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 57963 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 4.12 V2] brcmfmac: move brcmf_txcomplete function to fwsignal.c 2017-02-27 12:42 [PATCH 4.12] brcmfmac: move brcmf_txcomplete function to fwsignal.c Rafał Miłecki 2017-02-27 18:04 ` kbuild test robot @ 2017-03-03 6:38 ` Rafał Miłecki 2017-03-03 18:51 ` Franky Lin 1 sibling, 1 reply; 4+ messages in thread From: Rafał Miłecki @ 2017-03-03 6:38 UTC (permalink / raw) To: Kalle Valo Cc: Arend van Spriel, Franky Lin, Hante Meuleman, Pieter-Paul Giesberts, Franky Lin, linux-wireless, brcm80211-dev-list.pdl, Rafał Miłecki From: Rafał Miłecki <rafal@milecki.pl> This function is called by USB and SDIO only, both using BCDC & FW Signalling. Move it out of core.c to make this file more generic and allow making fwsignal optional in the future. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> --- V2: Make code with this patch compile when not based on top of (to be dropped) [PATCH 4.12] brcmfmac: get rid of brcmf_txflowblock helper function --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 3 --- .../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 18 ------------------ .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 18 ++++++++++++++++++ .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.h | 9 +++++++++ .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++- drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 3 ++- 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h index 76693df34742..059e40fdc3d5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h @@ -232,9 +232,6 @@ void brcmf_dev_reset(struct device *dev); /* Indication from bus module to change flow-control state */ void brcmf_txflowblock(struct device *dev, bool state); -/* Notify the bus has transferred the tx packet to firmware */ -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); - /* Configure the "global" bus state used by upper layers */ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 2f2f3a5ad86a..45ed24049b37 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -393,24 +393,6 @@ void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success) brcmu_pkt_buf_free_skb(txp); } -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) -{ - struct brcmf_bus *bus_if = dev_get_drvdata(dev); - struct brcmf_pub *drvr = bus_if->drvr; - struct brcmf_if *ifp; - - /* await txstatus signal for firmware if active */ - if (brcmf_fws_fc_active(drvr->fws)) { - if (!success) - brcmf_fws_bustxfail(drvr->fws, txp); - } else { - if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) - brcmu_pkt_buf_free_skb(txp); - else - brcmf_txfinalize(ifp, txp, success); - } -} - static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, struct ethtool_drvinfo *info) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c index 5f1a5929cb30..07f0b3cfd59c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c @@ -2445,6 +2445,24 @@ bool brcmf_fws_fc_active(struct brcmf_fws_info *fws) return fws->fcmode != BRCMF_FWS_FCMODE_NONE; } +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, bool success) +{ + struct brcmf_bus *bus_if = dev_get_drvdata(dev); + struct brcmf_pub *drvr = bus_if->drvr; + struct brcmf_if *ifp; + + /* await txstatus signal for firmware if active */ + if (brcmf_fws_fc_active(drvr->fws)) { + if (!success) + brcmf_fws_bustxfail(drvr->fws, txp); + } else { + if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) + brcmu_pkt_buf_free_skb(txp); + else + brcmf_txfinalize(ifp, txp, success); + } +} + void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb) { u32 hslot; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h index 96df66073b2a..d534164785de 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h @@ -18,6 +18,10 @@ #ifndef FWSIGNAL_H_ #define FWSIGNAL_H_ +struct brcmf_fws_info; +struct brcmf_if; +struct brcmf_pub; + int brcmf_fws_init(struct brcmf_pub *drvr); void brcmf_fws_deinit(struct brcmf_pub *drvr); bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws); @@ -28,6 +32,11 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb); void brcmf_fws_reset_interface(struct brcmf_if *ifp); void brcmf_fws_add_interface(struct brcmf_if *ifp); void brcmf_fws_del_interface(struct brcmf_if *ifp); + +/* Notify the bus has transferred the tx packet to firmware */ +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, + bool success); + void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb); void brcmf_fws_bus_blocked(struct brcmf_pub *drvr, bool flow_blocked); void brcmf_fws_rxreorder(struct brcmf_if *ifp, struct sk_buff *skb); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index c5744b45ec8f..22d21643ed8c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -42,6 +42,7 @@ #include "sdio.h" #include "chip.h" #include "firmware.h" +#include "fwsignal.h" #include "core.h" #include "common.h" @@ -2265,7 +2266,7 @@ static int brcmf_sdio_txpkt(struct brcmf_sdio *bus, struct sk_buff_head *pktq, bus->tx_seq = (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WRAP; skb_queue_walk_safe(pktq, pkt_next, tmp) { __skb_unlink(pkt_next, pktq); - brcmf_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); + brcmf_fws_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0); } return ret; } diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c index d93ebbdc7737..676c28081dc5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c @@ -26,6 +26,7 @@ #include "bus.h" #include "debug.h" #include "firmware.h" +#include "fwsignal.h" #include "usb.h" #include "core.h" #include "common.h" @@ -482,7 +483,7 @@ static void brcmf_usb_tx_complete(struct urb *urb) req->skb); brcmf_usb_del_fromq(devinfo, req); - brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0); + brcmf_fws_txcomplete(devinfo->dev, req->skb, urb->status == 0); req->skb = NULL; brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_freecount); spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); -- 2.11.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 4.12 V2] brcmfmac: move brcmf_txcomplete function to fwsignal.c 2017-03-03 6:38 ` [PATCH 4.12 V2] " Rafał Miłecki @ 2017-03-03 18:51 ` Franky Lin 0 siblings, 0 replies; 4+ messages in thread From: Franky Lin @ 2017-03-03 18:51 UTC (permalink / raw) To: Rafał Miłecki Cc: Kalle Valo, Arend van Spriel, Hante Meuleman, Pieter-Paul Giesberts, Franky Lin, linux-wireless, open list:BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER, Rafał Miłecki Hi Rafal, On Thu, Mar 2, 2017 at 10:38 PM, Rafa=C5=82 Mi=C5=82ecki <zajec5@gmail.com>= wrote: > From: Rafa=C5=82 Mi=C5=82ecki <rafal@milecki.pl> > > This function is called by USB and SDIO only, both using BCDC & FW > Signalling. Move it out of core.c to make this file more generic and > allow making fwsignal optional in the future. Same with the brcmf_txflowblock patch, it would be better to wrap fwsignal in bcdc as a protocol feature. I am preparing a train to do that for these two functions along with others. Hopefully we will post them next week after internal review. Again, sorry for the stall on this. Thanks, Franky > Signed-off-by: Rafa=C5=82 Mi=C5=82ecki <rafal@milecki.pl> > --- > V2: Make code with this patch compile when not based on top of (to be dro= pped) > [PATCH 4.12] brcmfmac: get rid of brcmf_txflowblock helper function > --- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 3 --- > .../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 18 ------------= ------ > .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 18 ++++++++++++= ++++++ > .../wireless/broadcom/brcm80211/brcmfmac/fwsignal.h | 9 +++++++++ > .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 3 ++- > 6 files changed, 31 insertions(+), 23 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/dri= vers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h > index 76693df34742..059e40fdc3d5 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h > @@ -232,9 +232,6 @@ void brcmf_dev_reset(struct device *dev); > /* Indication from bus module to change flow-control state */ > void brcmf_txflowblock(struct device *dev, bool state); > > -/* Notify the bus has transferred the tx packet to firmware */ > -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool succ= ess); > - > /* Configure the "global" bus state used by upper layers */ > void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state = state); > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/dr= ivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > index 2f2f3a5ad86a..45ed24049b37 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > @@ -393,24 +393,6 @@ void brcmf_txfinalize(struct brcmf_if *ifp, struct s= k_buff *txp, bool success) > brcmu_pkt_buf_free_skb(txp); > } > > -void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool succ= ess) > -{ > - struct brcmf_bus *bus_if =3D dev_get_drvdata(dev); > - struct brcmf_pub *drvr =3D bus_if->drvr; > - struct brcmf_if *ifp; > - > - /* await txstatus signal for firmware if active */ > - if (brcmf_fws_fc_active(drvr->fws)) { > - if (!success) > - brcmf_fws_bustxfail(drvr->fws, txp); > - } else { > - if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) > - brcmu_pkt_buf_free_skb(txp); > - else > - brcmf_txfinalize(ifp, txp, success); > - } > -} > - > static void brcmf_ethtool_get_drvinfo(struct net_device *ndev, > struct ethtool_drvinfo *info) > { > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c = b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c > index 5f1a5929cb30..07f0b3cfd59c 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c > @@ -2445,6 +2445,24 @@ bool brcmf_fws_fc_active(struct brcmf_fws_info *fw= s) > return fws->fcmode !=3D BRCMF_FWS_FCMODE_NONE; > } > > +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, bool = success) > +{ > + struct brcmf_bus *bus_if =3D dev_get_drvdata(dev); > + struct brcmf_pub *drvr =3D bus_if->drvr; > + struct brcmf_if *ifp; > + > + /* await txstatus signal for firmware if active */ > + if (brcmf_fws_fc_active(drvr->fws)) { > + if (!success) > + brcmf_fws_bustxfail(drvr->fws, txp); > + } else { > + if (brcmf_proto_hdrpull(drvr, false, txp, &ifp)) > + brcmu_pkt_buf_free_skb(txp); > + else > + brcmf_txfinalize(ifp, txp, success); > + } > +} > + > void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb= ) > { > u32 hslot; > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h = b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h > index 96df66073b2a..d534164785de 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h > @@ -18,6 +18,10 @@ > #ifndef FWSIGNAL_H_ > #define FWSIGNAL_H_ > > +struct brcmf_fws_info; > +struct brcmf_if; > +struct brcmf_pub; > + > int brcmf_fws_init(struct brcmf_pub *drvr); > void brcmf_fws_deinit(struct brcmf_pub *drvr); > bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws); > @@ -28,6 +32,11 @@ int brcmf_fws_process_skb(struct brcmf_if *ifp, struct= sk_buff *skb); > void brcmf_fws_reset_interface(struct brcmf_if *ifp); > void brcmf_fws_add_interface(struct brcmf_if *ifp); > void brcmf_fws_del_interface(struct brcmf_if *ifp); > + > +/* Notify the bus has transferred the tx packet to firmware */ > +void brcmf_fws_txcomplete(struct device *dev, struct sk_buff *txp, > + bool success); > + > void brcmf_fws_bustxfail(struct brcmf_fws_info *fws, struct sk_buff *skb= ); > void brcmf_fws_bus_blocked(struct brcmf_pub *drvr, bool flow_blocked); > void brcmf_fws_rxreorder(struct brcmf_if *ifp, struct sk_buff *skb); > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/dr= ivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > index c5744b45ec8f..22d21643ed8c 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > @@ -42,6 +42,7 @@ > #include "sdio.h" > #include "chip.h" > #include "firmware.h" > +#include "fwsignal.h" > #include "core.h" > #include "common.h" > > @@ -2265,7 +2266,7 @@ static int brcmf_sdio_txpkt(struct brcmf_sdio *bus,= struct sk_buff_head *pktq, > bus->tx_seq =3D (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WR= AP; > skb_queue_walk_safe(pktq, pkt_next, tmp) { > __skb_unlink(pkt_next, pktq); > - brcmf_txcomplete(bus->sdiodev->dev, pkt_next, ret =3D=3D = 0); > + brcmf_fws_txcomplete(bus->sdiodev->dev, pkt_next, ret =3D= =3D 0); > } > return ret; > } > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/dri= vers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c > index d93ebbdc7737..676c28081dc5 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c > @@ -26,6 +26,7 @@ > #include "bus.h" > #include "debug.h" > #include "firmware.h" > +#include "fwsignal.h" > #include "usb.h" > #include "core.h" > #include "common.h" > @@ -482,7 +483,7 @@ static void brcmf_usb_tx_complete(struct urb *urb) > req->skb); > brcmf_usb_del_fromq(devinfo, req); > > - brcmf_txcomplete(devinfo->dev, req->skb, urb->status =3D=3D 0); > + brcmf_fws_txcomplete(devinfo->dev, req->skb, urb->status =3D=3D 0= ); > req->skb =3D NULL; > brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_free= count); > spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); > -- > 2.11.0 > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-03-03 18:52 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-02-27 12:42 [PATCH 4.12] brcmfmac: move brcmf_txcomplete function to fwsignal.c Rafał Miłecki 2017-02-27 18:04 ` kbuild test robot 2017-03-03 6:38 ` [PATCH 4.12 V2] " Rafał Miłecki 2017-03-03 18:51 ` Franky Lin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox