diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-02-02 12:02:22 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-02-06 12:27:12 +0100 |
commit | 649e766a64a0d001f040dfc225c601b3d0af6f40 (patch) | |
tree | 6399891552e85e9d511546df07932551f60b7549 /package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch | |
parent | 91fce81df6e99cec0876b9d4866bd86e7c49820f (diff) | |
download | upstream-649e766a64a0d001f040dfc225c601b3d0af6f40.tar.gz upstream-649e766a64a0d001f040dfc225c601b3d0af6f40.tar.bz2 upstream-649e766a64a0d001f040dfc225c601b3d0af6f40.zip |
mac80211: update to wireless-testing 2017-01-31
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch')
-rw-r--r-- | package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch b/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch deleted file mode 100644 index 1662eb5dbb..0000000000 --- a/package/kernel/mac80211/patches/356-0002-brcmfmac-proto-add-callback-for-queuing-TX-data.patch +++ /dev/null @@ -1,174 +0,0 @@ -From b073ac1fcf42376018f6db6acc885dfd2cc9ff02 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> -Date: Mon, 26 Sep 2016 23:51:44 +0200 -Subject: [PATCH] brcmfmac: proto: add callback for queuing TX data -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -So far our core code was calling brcmf_fws_process_skb which wasn't -a proper thing to do. If case of devices using msgbuf protocol fwsignal -shouldn't be used. It was an unnecessary extra layer simply calling -a protocol specifix txdata function. - -Please note we already have txdata callback, but it's used for calls -between bcdc and fwsignal so it couldn't be simply used there. - -This makes core code more generic (instead of bcdc/fwsignal specific). - -Signed-off-by: Rafał Miłecki <rafal@milecki.pl> -Signed-off-by: Kalle Valo <kvalo@codeaurora.org> ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 12 ++++++++++++ - drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 8 +++++++- - .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 15 +++++---------- - .../net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h | 1 + - drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 6 +++--- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c | 2 +- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++ - 7 files changed, 38 insertions(+), 15 deletions(-) - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c -@@ -326,6 +326,17 @@ brcmf_proto_bcdc_hdrpull(struct brcmf_pu - return 0; - } - -+static int brcmf_proto_bcdc_tx_queue_data(struct brcmf_pub *drvr, int ifidx, -+ struct sk_buff *skb) -+{ -+ struct brcmf_if *ifp = brcmf_get_ifp(drvr, ifidx); -+ -+ if (!brcmf_fws_queue_skbs(drvr->fws)) -+ return brcmf_proto_txdata(drvr, ifidx, 0, skb); -+ -+ return brcmf_fws_process_skb(ifp, skb); -+} -+ - static int - brcmf_proto_bcdc_txdata(struct brcmf_pub *drvr, int ifidx, u8 offset, - struct sk_buff *pktbuf) -@@ -375,6 +386,7 @@ int brcmf_proto_bcdc_attach(struct brcmf - drvr->proto->hdrpull = brcmf_proto_bcdc_hdrpull; - drvr->proto->query_dcmd = brcmf_proto_bcdc_query_dcmd; - drvr->proto->set_dcmd = brcmf_proto_bcdc_set_dcmd; -+ drvr->proto->tx_queue_data = brcmf_proto_bcdc_tx_queue_data; - drvr->proto->txdata = brcmf_proto_bcdc_txdata; - drvr->proto->configure_addr_mode = brcmf_proto_bcdc_configure_addr_mode; - drvr->proto->delete_peer = brcmf_proto_bcdc_delete_peer; ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -239,7 +239,13 @@ static netdev_tx_t brcmf_netdev_start_xm - if (eh->h_proto == htons(ETH_P_PAE)) - atomic_inc(&ifp->pend_8021x_cnt); - -- ret = brcmf_fws_process_skb(ifp, skb); -+ /* determine the priority */ -+ if ((skb->priority == 0) || (skb->priority > 7)) -+ skb->priority = cfg80211_classify8021d(skb, NULL); -+ -+ ret = brcmf_proto_tx_queue_data(drvr, ifp->ifidx, skb); -+ if (ret < 0) -+ brcmf_txfinalize(ifp, skb, false); - - done: - if (ret) { ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c -@@ -2100,16 +2100,6 @@ int brcmf_fws_process_skb(struct brcmf_i - int rc = 0; - - brcmf_dbg(DATA, "tx proto=0x%X\n", ntohs(eh->h_proto)); -- /* determine the priority */ -- if ((skb->priority == 0) || (skb->priority > 7)) -- skb->priority = cfg80211_classify8021d(skb, NULL); -- -- if (fws->avoid_queueing) { -- rc = brcmf_proto_txdata(drvr, ifp->ifidx, 0, skb); -- if (rc < 0) -- brcmf_txfinalize(ifp, skb, false); -- return rc; -- } - - /* set control buffer information */ - skcb->if_flags = 0; -@@ -2442,6 +2432,11 @@ void brcmf_fws_deinit(struct brcmf_pub * - kfree(fws); - } - -+bool brcmf_fws_queue_skbs(struct brcmf_fws_info *fws) -+{ -+ return !fws->avoid_queueing; -+} -+ - bool brcmf_fws_fc_active(struct brcmf_fws_info *fws) - { - if (!fws->creditmap_received) ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.h -@@ -20,6 +20,7 @@ - - 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); - bool brcmf_fws_fc_active(struct brcmf_fws_info *fws); - void brcmf_fws_hdrpull(struct brcmf_if *ifp, s16 siglen, struct sk_buff *skb); - int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb); ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c -@@ -782,8 +782,8 @@ static int brcmf_msgbuf_schedule_txdata( - } - - --static int brcmf_msgbuf_txdata(struct brcmf_pub *drvr, int ifidx, -- u8 offset, struct sk_buff *skb) -+static int brcmf_msgbuf_tx_queue_data(struct brcmf_pub *drvr, int ifidx, -+ struct sk_buff *skb) - { - struct brcmf_msgbuf *msgbuf = (struct brcmf_msgbuf *)drvr->proto->pd; - struct brcmf_flowring *flow = msgbuf->flow; -@@ -1467,7 +1467,7 @@ int brcmf_proto_msgbuf_attach(struct brc - drvr->proto->hdrpull = brcmf_msgbuf_hdrpull; - drvr->proto->query_dcmd = brcmf_msgbuf_query_dcmd; - drvr->proto->set_dcmd = brcmf_msgbuf_set_dcmd; -- drvr->proto->txdata = brcmf_msgbuf_txdata; -+ drvr->proto->tx_queue_data = brcmf_msgbuf_tx_queue_data; - drvr->proto->configure_addr_mode = brcmf_msgbuf_configure_addr_mode; - drvr->proto->delete_peer = brcmf_msgbuf_delete_peer; - drvr->proto->add_tdls_peer = brcmf_msgbuf_add_tdls_peer; ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.c -@@ -51,7 +51,7 @@ int brcmf_proto_attach(struct brcmf_pub - drvr->bus_if->proto_type); - goto fail; - } -- if ((proto->txdata == NULL) || (proto->hdrpull == NULL) || -+ if (!proto->tx_queue_data || (proto->hdrpull == NULL) || - (proto->query_dcmd == NULL) || (proto->set_dcmd == NULL) || - (proto->configure_addr_mode == NULL) || - (proto->delete_peer == NULL) || (proto->add_tdls_peer == NULL)) { ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h -@@ -33,6 +33,8 @@ struct brcmf_proto { - void *buf, uint len); - int (*set_dcmd)(struct brcmf_pub *drvr, int ifidx, uint cmd, void *buf, - uint len); -+ int (*tx_queue_data)(struct brcmf_pub *drvr, int ifidx, -+ struct sk_buff *skb); - int (*txdata)(struct brcmf_pub *drvr, int ifidx, u8 offset, - struct sk_buff *skb); - void (*configure_addr_mode)(struct brcmf_pub *drvr, int ifidx, -@@ -74,6 +76,13 @@ static inline int brcmf_proto_set_dcmd(s - { - return drvr->proto->set_dcmd(drvr, ifidx, cmd, buf, len); - } -+ -+static inline int brcmf_proto_tx_queue_data(struct brcmf_pub *drvr, int ifidx, -+ struct sk_buff *skb) -+{ -+ return drvr->proto->tx_queue_data(drvr, ifidx, skb); -+} -+ - static inline int brcmf_proto_txdata(struct brcmf_pub *drvr, int ifidx, - u8 offset, struct sk_buff *skb) - { |