brcmf_fws_bus_blocked(drvr, state);
 }
 
+void
+brcmf_proto_bcdc_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_bcdc_hdrpull(drvr, false, txp, &ifp))
+                       brcmu_pkt_buf_free_skb(txp);
+               else
+                       brcmf_txfinalize(ifp, txp, success);
+       }
+}
+
 static void
 brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
                                     enum proto_addr_mode addr_mode)
 
 int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
 void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
 void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
+void brcmf_proto_bcdc_txcomplete(struct device *dev, struct sk_buff *txp,
+                                bool success);
 #else
 static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
 static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
 
 /* Indication from bus module that dongle should be reset */
 void brcmf_dev_reset(struct device *dev);
 
-/* 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);
 
 
        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)
 {
 
                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_proto_bcdc_txcomplete(bus->sdiodev->dev, pkt_next,
+                                           ret == 0);
        }
        return ret;
 }
 
                  req->skb);
        brcmf_usb_del_fromq(devinfo, req);
 
-       brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0);
+       brcmf_proto_bcdc_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);