The removed patches were applied upstream. Remove the 300-mac80211-optimize-skb-resizing.patch. This patch was not applied upstream, but it conflicts with upstream changes and needs bigger changes. It was applied with Felix to remove this patch for now. It should be reworked and then send upstream later. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
75 lines
2.1 KiB
Diff
75 lines
2.1 KiB
Diff
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
|
Date: Mon, 8 Jun 2015 16:11:40 +0200
|
|
Subject: [PATCH] brcmfmac: register wiphy(s) during module_init
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
This is needed by OpenWrt which expects all PHYs to be created after
|
|
module loads successfully.
|
|
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
@@ -1554,6 +1554,7 @@ int __init brcmf_core_init(void)
|
|
{
|
|
if (!schedule_work(&brcmf_driver_work))
|
|
return -EBUSY;
|
|
+ flush_work(&brcmf_driver_work);
|
|
|
|
return 0;
|
|
}
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
|
@@ -431,6 +431,7 @@ struct brcmf_fw {
|
|
struct brcmf_fw_request *req;
|
|
u32 curpos;
|
|
void (*done)(struct device *dev, int err, struct brcmf_fw_request *req);
|
|
+ struct completion *completion;
|
|
};
|
|
|
|
static void brcmf_fw_request_done(const struct firmware *fw, void *ctx);
|
|
@@ -638,6 +639,8 @@ static void brcmf_fw_request_done(const
|
|
fwctx->req = NULL;
|
|
}
|
|
fwctx->done(fwctx->dev, ret, fwctx->req);
|
|
+ if (fwctx->completion)
|
|
+ complete(fwctx->completion);
|
|
kfree(fwctx);
|
|
}
|
|
|
|
@@ -662,6 +665,8 @@ int brcmf_fw_get_firmwares(struct device
|
|
{
|
|
struct brcmf_fw_item *first = &req->items[0];
|
|
struct brcmf_fw *fwctx;
|
|
+ struct completion completion;
|
|
+ unsigned long time_left;
|
|
int ret;
|
|
|
|
brcmf_dbg(TRACE, "enter: dev=%s\n", dev_name(dev));
|
|
@@ -678,6 +683,9 @@ int brcmf_fw_get_firmwares(struct device
|
|
fwctx->dev = dev;
|
|
fwctx->req = req;
|
|
fwctx->done = fw_cb;
|
|
+
|
|
+ init_completion(&completion);
|
|
+ fwctx->completion = &completion;
|
|
|
|
ret = request_firmware_nowait(THIS_MODULE, true, first->path,
|
|
fwctx->dev, GFP_KERNEL, fwctx,
|
|
@@ -685,6 +693,12 @@ int brcmf_fw_get_firmwares(struct device
|
|
if (ret < 0)
|
|
brcmf_fw_request_done(NULL, fwctx);
|
|
|
|
+
|
|
+ time_left = wait_for_completion_timeout(&completion,
|
|
+ msecs_to_jiffies(5000));
|
|
+ if (!time_left && fwctx)
|
|
+ fwctx->completion = NULL;
|
|
+
|
|
return 0;
|
|
}
|
|
|