From 8b7418b6183b93c0278136b7234ac3975d890434 Mon Sep 17 00:00:00 2001 From: Cindy H Kao Date: Fri, 2 Oct 2009 19:31:17 -0700 Subject: [PATCH] --- yaml --- r: 171231 b: refs/heads/master c: 28cff50d99ce9a1db65b7d4dcdcc0f1f8d9f9309 h: refs/heads/master i: 171229: 6cf51f0cc0ff7f0cfc0ddffbaa7706659346e978 171227: 39c0b7b259fc6ec3c4104c4ba183cd9c6a4f8195 171223: 44cf5b47e1d35b5a36cc426d343e46183cdecc66 171215: 214d5b5de717ad6bc799bcd2a2730e4fbbaf6fa1 171199: 6fbfd017935b737faa8ca8880270f5d108b73ad5 v: v3 --- [refs] | 2 +- trunk/drivers/net/wimax/i2400m/fw.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index f229a95ae428..ddeb18231b0e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f4fc90a36fbe87e3003b3f7c8090ecc89bd1353 +refs/heads/master: 28cff50d99ce9a1db65b7d4dcdcc0f1f8d9f9309 diff --git a/trunk/drivers/net/wimax/i2400m/fw.c b/trunk/drivers/net/wimax/i2400m/fw.c index 97ea78406725..fda54bfdf70e 100644 --- a/trunk/drivers/net/wimax/i2400m/fw.c +++ b/trunk/drivers/net/wimax/i2400m/fw.c @@ -1388,15 +1388,16 @@ const struct i2400m_bcf_hdr *i2400m_bcf_hdr_find(struct i2400m *i2400m) */ static int i2400m_fw_dnload(struct i2400m *i2400m, const struct i2400m_bcf_hdr *bcf, - size_t bcf_size, enum i2400m_bri flags) + size_t fw_size, enum i2400m_bri flags) { int ret = 0; struct device *dev = i2400m_dev(i2400m); int count = i2400m->bus_bm_retries; const struct i2400m_bcf_hdr *bcf_hdr; + size_t bcf_size; - d_fnstart(5, dev, "(i2400m %p bcf %p size %zu)\n", - i2400m, bcf, bcf_size); + d_fnstart(5, dev, "(i2400m %p bcf %p fw size %zu)\n", + i2400m, bcf, fw_size); i2400m->boot_mode = 1; wmb(); /* Make sure other readers see it */ hw_reboot: @@ -1434,6 +1435,12 @@ int i2400m_fw_dnload(struct i2400m *i2400m, const struct i2400m_bcf_hdr *bcf, if (ret < 0) goto error_dnload_init; + /* + * bcf_size refers to one header size plus the fw sections size + * indicated by the header,ie. if there are other extended headers + * at the tail, they are not counted + */ + bcf_size = sizeof(u32) * le32_to_cpu(bcf_hdr->size); ret = i2400m_dnload_bcf(i2400m, bcf, bcf_size); if (ret == -ERESTARTSYS) goto error_dev_rebooted; @@ -1464,7 +1471,7 @@ int i2400m_fw_dnload(struct i2400m *i2400m, const struct i2400m_bcf_hdr *bcf, error_bootrom_init: error_too_many_reboots: d_fnend(5, dev, "(i2400m %p bcf %p size %zu) = %d\n", - i2400m, bcf, bcf_size, ret); + i2400m, bcf, fw_size, ret); return ret; error_dev_rebooted: