Skip to content

Commit a1a3b76

Browse files
jwrdegoedeKalle Valo
authored andcommitted
brcmfmac: Remove firmware-loading code duplication
brcmf_fw_request_next_item and brcmf_fw_request_done both have identical code to complete the fw-request depending on the item-type. This commit adds a new brcmf_fw_complete_request helper removing this code duplication. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
1 parent 6510223 commit a1a3b76

File tree

1 file changed

+31
-31
lines changed
  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

1 file changed

+31
-31
lines changed

drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,34 @@ static int brcmf_fw_request_nvram_done(const struct firmware *fw, void *ctx)
504504
return -ENOENT;
505505
}
506506

507+
static int brcmf_fw_complete_request(const struct firmware *fw,
508+
struct brcmf_fw *fwctx)
509+
{
510+
struct brcmf_fw_item *cur = &fwctx->req->items[fwctx->curpos];
511+
int ret = 0;
512+
513+
brcmf_dbg(TRACE, "firmware %s %sfound\n", cur->path, fw ? "" : "not ");
514+
515+
switch (cur->type) {
516+
case BRCMF_FW_TYPE_NVRAM:
517+
ret = brcmf_fw_request_nvram_done(fw, fwctx);
518+
break;
519+
case BRCMF_FW_TYPE_BINARY:
520+
if (fw)
521+
cur->binary = fw;
522+
else
523+
ret = -ENOENT;
524+
break;
525+
default:
526+
/* something fishy here so bail out early */
527+
brcmf_err("unknown fw type: %d\n", cur->type);
528+
release_firmware(fw);
529+
ret = -EINVAL;
530+
}
531+
532+
return (cur->flags & BRCMF_FW_REQF_OPTIONAL) ? 0 : ret;
533+
}
534+
507535
static int brcmf_fw_request_next_item(struct brcmf_fw *fwctx, bool async)
508536
{
509537
struct brcmf_fw_item *cur;
@@ -525,15 +553,7 @@ static int brcmf_fw_request_next_item(struct brcmf_fw *fwctx, bool async)
525553
if (ret < 0) {
526554
brcmf_fw_request_done(NULL, fwctx);
527555
} else if (!async && fw) {
528-
brcmf_dbg(TRACE, "firmware %s %sfound\n", cur->path,
529-
fw ? "" : "not ");
530-
if (cur->type == BRCMF_FW_TYPE_BINARY)
531-
cur->binary = fw;
532-
else if (cur->type == BRCMF_FW_TYPE_NVRAM)
533-
brcmf_fw_request_nvram_done(fw, fwctx);
534-
else
535-
release_firmware(fw);
536-
556+
brcmf_fw_complete_request(fw, fwctx);
537557
return -EAGAIN;
538558
}
539559
return 0;
@@ -547,28 +567,8 @@ static void brcmf_fw_request_done(const struct firmware *fw, void *ctx)
547567

548568
cur = &fwctx->req->items[fwctx->curpos];
549569

550-
brcmf_dbg(TRACE, "enter: firmware %s %sfound\n", cur->path,
551-
fw ? "" : "not ");
552-
553-
if (!fw)
554-
ret = -ENOENT;
555-
556-
switch (cur->type) {
557-
case BRCMF_FW_TYPE_NVRAM:
558-
ret = brcmf_fw_request_nvram_done(fw, fwctx);
559-
break;
560-
case BRCMF_FW_TYPE_BINARY:
561-
cur->binary = fw;
562-
break;
563-
default:
564-
/* something fishy here so bail out early */
565-
brcmf_err("unknown fw type: %d\n", cur->type);
566-
release_firmware(fw);
567-
ret = -EINVAL;
568-
goto fail;
569-
}
570-
571-
if (ret < 0 && !(cur->flags & BRCMF_FW_REQF_OPTIONAL))
570+
ret = brcmf_fw_complete_request(fw, fwctx);
571+
if (ret < 0)
572572
goto fail;
573573

574574
do {

0 commit comments

Comments
 (0)