2007-12-07 02:12:36

by Dave Young

[permalink] [raw]
Subject: Re: 2.6.24-rc4-mm1

Hi,

2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available

fix it with adjust the order of inline function body.

Signed-off-by: Dave Young <[email protected]>

---
drivers/net/wireless/ath5k/base.c | 67 ++++++++++++++++----------------------
1 file changed, 29 insertions(+), 38 deletions(-)

diff -upr linux/drivers/net/wireless/ath5k/base.c linux.new/drivers/net/wireless/ath5k/base.c
--- linux/drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:42.000000000 +0800
+++ linux.new/drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:49.000000000 +0800
@@ -250,8 +250,19 @@ static int ath5k_rxbuf_setup(struct ath
static int ath5k_txbuf_setup(struct ath5k_softc *sc,
struct ath5k_buf *bf,
struct ieee80211_tx_control *ctl);
+
static inline void ath5k_txbuf_free(struct ath5k_softc *sc,
- struct ath5k_buf *bf);
+ struct ath5k_buf *bf)
+{
+ BUG_ON(!bf);
+ if (!bf->skb)
+ return;
+ pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
+ PCI_DMA_TODEVICE);
+ dev_kfree_skb(bf->skb);
+ bf->skb = NULL;
+}
+
/* Queues setup */
static struct ath5k_txq *ath5k_txq_setup(struct ath5k_softc *sc,
int qtype, int subtype);
@@ -278,14 +289,29 @@ static int ath5k_beacon_setup(struct at
struct ieee80211_tx_control *ctl);
static void ath5k_beacon_send(struct ath5k_softc *sc);
static void ath5k_beacon_config(struct ath5k_softc *sc);
-static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp);
+
+static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
+{
+ u64 tsf = ath5k_hw_get_tsf64(ah);
+
+ if ((tsf & 0x7fff) < rstamp)
+ tsf -= 0x8000;
+
+ return (tsf & ~0x7fff) | rstamp;
+}
+
/* Interrupt handling */
static int ath5k_init(struct ath5k_softc *sc);
static int ath5k_stop_locked(struct ath5k_softc *sc);
static int ath5k_stop_hw(struct ath5k_softc *sc);
static irqreturn_t ath5k_intr(int irq, void *dev_id);
static void ath5k_tasklet_reset(unsigned long data);
-static inline void ath5k_update_txpow(struct ath5k_softc *sc);
+
+static inline void ath5k_update_txpow(struct ath5k_softc *sc)
+{
+ ath5k_hw_set_txpower_limit(sc->ah, 0);
+}
+
static void ath5k_calibrate(unsigned long data);
/* LED functions */
static void ath5k_led_off(unsigned long data);
@@ -1341,21 +1367,6 @@ err_unmap:
return ret;
}

-static inline void
-ath5k_txbuf_free(struct ath5k_softc *sc, struct ath5k_buf *bf)
-{
- BUG_ON(!bf);
- if (!bf->skb)
- return;
- pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
- PCI_DMA_TODEVICE);
- dev_kfree_skb(bf->skb);
- bf->skb = NULL;
-}
-
-
-
-
/**************\
* Queues setup *
\**************/
@@ -2046,20 +2057,6 @@ ath5k_beacon_config(struct ath5k_softc *
#undef TSF_TO_TU
}

-static inline
-u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
-{
- u64 tsf = ath5k_hw_get_tsf64(ah);
-
- if ((tsf & 0x7fff) < rstamp)
- tsf -= 0x8000;
-
- return (tsf & ~0x7fff) | rstamp;
-}
-
-
-
-
/********************\
* Interrupt handling *
\********************/
@@ -2295,12 +2292,6 @@ ath5k_tasklet_reset(unsigned long data)
ath5k_reset(sc->hw);
}

-static inline void
-ath5k_update_txpow(struct ath5k_softc *sc)
-{
- ath5k_hw_set_txpower_limit(sc->ah, 0);
-}
-
/*
* Periodically recalibrate the PHY to account
* for temperature/environment changes.


2007-12-09 17:55:31

by Nick Kossifidis

[permalink] [raw]
Subject: Re: 2.6.24-rc4-mm1

2007/12/7, Dave Young <[email protected]>:
> Hi,
>
> 2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
> drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available
>
> fix it with adjust the order of inline function body.
>
> Signed-off-by: Dave Young <[email protected]>
>
> ---
> drivers/net/wireless/ath5k/base.c | 67 ++++++++++++++++----------------------
> 1 file changed, 29 insertions(+), 38 deletions(-)
>
> diff -upr linux/drivers/net/wireless/ath5k/base.c linux.new/drivers/net/wireless/ath5k/base.c
> --- linux/drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:42.000000000 +0800
> +++ linux.new/drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:49.000000000 +0800
> @@ -250,8 +250,19 @@ static int ath5k_rxbuf_setup(struct ath
> static int ath5k_txbuf_setup(struct ath5k_softc *sc,
> struct ath5k_buf *bf,
> struct ieee80211_tx_control *ctl);
> +
> static inline void ath5k_txbuf_free(struct ath5k_softc *sc,
> - struct ath5k_buf *bf);
> + struct ath5k_buf *bf)
> +{
> + BUG_ON(!bf);
> + if (!bf->skb)
> + return;
> + pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
> + PCI_DMA_TODEVICE);
> + dev_kfree_skb(bf->skb);
> + bf->skb = NULL;
> +}
> +
> /* Queues setup */
> static struct ath5k_txq *ath5k_txq_setup(struct ath5k_softc *sc,
> int qtype, int subtype);
> @@ -278,14 +289,29 @@ static int ath5k_beacon_setup(struct at
> struct ieee80211_tx_control *ctl);
> static void ath5k_beacon_send(struct ath5k_softc *sc);
> static void ath5k_beacon_config(struct ath5k_softc *sc);
> -static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp);
> +
> +static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
> +{
> + u64 tsf = ath5k_hw_get_tsf64(ah);
> +
> + if ((tsf & 0x7fff) < rstamp)
> + tsf -= 0x8000;
> +
> + return (tsf & ~0x7fff) | rstamp;
> +}
> +
> /* Interrupt handling */
> static int ath5k_init(struct ath5k_softc *sc);
> static int ath5k_stop_locked(struct ath5k_softc *sc);
> static int ath5k_stop_hw(struct ath5k_softc *sc);
> static irqreturn_t ath5k_intr(int irq, void *dev_id);
> static void ath5k_tasklet_reset(unsigned long data);
> -static inline void ath5k_update_txpow(struct ath5k_softc *sc);
> +
> +static inline void ath5k_update_txpow(struct ath5k_softc *sc)
> +{
> + ath5k_hw_set_txpower_limit(sc->ah, 0);
> +}
> +
> static void ath5k_calibrate(unsigned long data);
> /* LED functions */
> static void ath5k_led_off(unsigned long data);
> @@ -1341,21 +1367,6 @@ err_unmap:
> return ret;
> }
>
> -static inline void
> -ath5k_txbuf_free(struct ath5k_softc *sc, struct ath5k_buf *bf)
> -{
> - BUG_ON(!bf);
> - if (!bf->skb)
> - return;
> - pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
> - PCI_DMA_TODEVICE);
> - dev_kfree_skb(bf->skb);
> - bf->skb = NULL;
> -}
> -
> -
> -
> -
> /**************\
> * Queues setup *
> \**************/
> @@ -2046,20 +2057,6 @@ ath5k_beacon_config(struct ath5k_softc *
> #undef TSF_TO_TU
> }
>
> -static inline
> -u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
> -{
> - u64 tsf = ath5k_hw_get_tsf64(ah);
> -
> - if ((tsf & 0x7fff) < rstamp)
> - tsf -= 0x8000;
> -
> - return (tsf & ~0x7fff) | rstamp;
> -}
> -
> -
> -
> -
> /********************\
> * Interrupt handling *
> \********************/
> @@ -2295,12 +2292,6 @@ ath5k_tasklet_reset(unsigned long data)
> ath5k_reset(sc->hw);
> }
>
> -static inline void
> -ath5k_update_txpow(struct ath5k_softc *sc)
> -{
> - ath5k_hw_set_txpower_limit(sc->ah, 0);
> -}
> -
> /*
> * Periodically recalibrate the PHY to account
> * for temperature/environment changes.
>

We'll change their order in the code, plz keep prototype declarations
clean. I'll submit a patch asap on this.

--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2007-12-10 01:07:30

by Dave Young

[permalink] [raw]
Subject: Re: 2.6.24-rc4-mm1

On Dec 8, 2007 6:22 AM, Luis R. Rodriguez <[email protected]> wrote:
> On Dec 6, 2007 9:12 PM, Dave Young <[email protected]> wrote:
> > Hi,
> >
> > 2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
> > drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available
> >
> > fix it with adjust the order of inline function body.
> >
> > Signed-off-by: Dave Young <[email protected]>
>
> Acked-by: Luis R. Rodriguez <[email protected]>

Thanks.

>
> Thanks Dave. What version of gcc were you using? I haven't run into this.

gcc 3.4.6

>
> BTW, nothing new was added in this patch, things were just shifted,
> but even that may be copyrightable. Is it fair to assume you are
> licensing these changes under the same license the file is in?

Ok, I don't care.

>
> For this file we'd usually use:
>
> Changes-licensed-under: 3-clause-BSD
>
> For future reference:
>
> http://linuxwireless.org/en/developers/Documentation/SubmittingPatches#Changes-licensed-undertag
>
> Luis
>

2007-12-07 22:22:27

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: 2.6.24-rc4-mm1

On Dec 6, 2007 9:12 PM, Dave Young <[email protected]> wrote:
> Hi,
>
> 2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
> drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available
>
> fix it with adjust the order of inline function body.
>
> Signed-off-by: Dave Young <[email protected]>

Acked-by: Luis R. Rodriguez <[email protected]>

Thanks Dave. What version of gcc were you using? I haven't run into this.

BTW, nothing new was added in this patch, things were just shifted,
but even that may be copyrightable. Is it fair to assume you are
licensing these changes under the same license the file is in?

For this file we'd usually use:

Changes-licensed-under: 3-clause-BSD

For future reference:

http://linuxwireless.org/en/developers/Documentation/SubmittingPatches#Changes-licensed-undertag

Luis