Backport issue net/mac80211/iface.c
When I build backports-3.15-rc1-1 I get the following warnings (my linux kernel version is 3.13.0-24) Mint 17:
Here is my version information:
linuxbox backports-3.15-rc1-1 # uname -r
3.13.0-24-generic
linuxbox backports-3.15-rc1-1 # uname -a
Linux linuxbox 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux linuxbox backports-3.15-rc1-1 #
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/vht.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/ibss.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/iface.o/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning: initialization from incompatible pointer type [enabled by default] .ndo_select_queue = ieee80211_netdev_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default] /usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning: initialization from incompatible pointer type [enabled by default] .ndo_select_queue = ieee80211_monitor_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default] CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/rate.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/michael.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/tkip.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/aes_ccm.o
CC [M] /usr/src/backports-3.15-rc1-1/net/mac80211/aes_cmac.o
When I use backports-3.16-rc1 I get the same warnings:
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/agg-rx.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/vht.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/ibss.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/iface.o/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning: initialization from incompatible pointer type [enabled by default] .ndo_select_queue = ieee80211_netdev_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default] /usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning: initialization from incompatible pointer type [enabled by default] .ndo_select_queue = ieee80211_monitor_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default] CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/rate.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/michael.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/tkip.o
CC [M] /usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o
^Cmake[6]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o] Interrupt
make[5]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211] Interrupt
make[4]: *** [_module_/usr/src/backports-3.16-rc1-1] Interrupt
The reference in iface.c contains:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) static u16 ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv,select_queue_fallback_t fallback)
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) static u16 ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv)
#else
static u16 ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb)
#endif
The linux 3.13 net_device_ops structure has the following arguments for ndo_select_queue:
struct net_device_ops {
int (*ndo_init)(struct net_device *dev);
void (*ndo_uninit)(struct net_device *dev);
int (*ndo_open)(struct net_device *dev);
int (*ndo_stop)(struct net_device *dev);netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,
struct net_device *dev);
u16 (*ndo_select_queue)(struct net_device *dev,
struct sk_buff *skb,
void *accel_priv,select_queue_fallback_t fallback);
When I modify the ifdefs for the function to include the fallback argument, iface.c compiles without warnings. I accomplish this by changing the ifdef:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)
to
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
and the original select_queue function I modify the ifdef to:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)
I also do this for the ieee80211_monitor_select_queue function definiations.
It looks like these conditionals are not aligned properly to the kernel versions.
Thanks in advance
Clyde
Quoted 105 lines · C. McPherson
When I build backports-3.15-rc1-1 I get the following warnings (my linux kernel version is 3.13.0-24) Mint 17:
Here is my version information:
linuxbox backports-3.15-rc1-1 # uname -r
3.13.0-24-generic
linuxbox backports-3.15-rc1-1 # uname -a
Linux linuxbox 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014x86_64x86_64x86_64GNU/Linux
linuxbox backports-3.15-rc1-1 #CC [M]
/usr/src/backports-3.15-rc1-1/net/mac80211/vht.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/ibss.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.o/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/rate.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/michael.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/tkip.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_ccm.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_cmac.oWhen I use backports-3.16-rc1 I get the same warnings:
CC [M]
/usr/src/backports-3.16-rc1-1/net/mac80211/agg-rx.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/vht.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/ibss.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.o/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/rate.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/michael.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/tkip.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o^Cmake[6]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o] Interrupt
make[5]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211] Interrupt make[4]: *** [_module_/usr/src/backports-3.16-rc1-1] InterruptThe reference in
iface.ccontains:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback)
#elifLINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv)
#else
static u16ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb)
#endifThe linux 3.13
net_device_opsstructure has the following arguments forndo_select_queue:
structnet_device_ops{
int (*ndo_init)(structnet_device*dev);
void (*ndo_uninit)(structnet_device*dev);
int (*ndo_open)(structnet_device*dev);
int (*ndo_stop)(structnet_device*dev);netdev_tx_t(*ndo_start_xmit) (structsk_buff*skb,
structnet_device*dev);
u16 (*ndo_select_queue)(structnet_device*dev,
structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback);When I modify the ifdefs for the function to include the fallback argument,
iface.ccompiles without warnings. I accomplish this by changing the ifdef:#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)
to#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)
Quoted 8 lines
and the original
select_queuefunction I modify the ifdef to:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)I also do this for the
ieee80211_monitor_select_queuefunction definiations.It looks like these conditionals are not aligned properly to the kernel versions.
No linux-3.13 has:
u16 (*ndo_select_queue)(struct net_device *dev,
struct sk_buff *skb, void *accel_priv);
Now if Mint decided to cherry pick the commit that added the select_queue_fallback_t fallback argument that's on a distribution specific kernel ABI change. We're try to help distributions do stupid things like this by always overriding a routine with a backports prefix but for data structures and functions like these its a bit harder so the only to fix this is to have a Mint specific check and add that as an exclusion here. You're welcome to add a patch if you can figure out how to do that. RHEL has specific checks, look for RHEL_RELEASE_CODE usage on backports as an example.
Luis
Quoted 131 lines · Luis R. Rodriguez
Quoted 105 lines · C. McPherson
When I build backports-3.15-rc1-1 I get the following warnings (my linux kernel version is 3.13.0-24) Mint 17:
Here is my version information:
linuxbox backports-3.15-rc1-1 # uname -r
3.13.0-24-generic
linuxbox backports-3.15-rc1-1 # uname -a
Linux linuxbox 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014x86_64x86_64x86_64GNU/Linux
linuxbox backports-3.15-rc1-1 #CC [M]
/usr/src/backports-3.15-rc1-1/net/mac80211/vht.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/ibss.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.o/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/rate.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/michael.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/tkip.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_ccm.o
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_cmac.oWhen I use backports-3.16-rc1 I get the same warnings:
CC [M]
/usr/src/backports-3.16-rc1-1/net/mac80211/agg-rx.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/vht.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/ibss.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.o/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning: (near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning: (near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/rate.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/michael.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/tkip.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o^Cmake[6]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o] Interrupt
make[5]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211] Interrupt make[4]: *** [_module_/usr/src/backports-3.16-rc1-1] InterruptThe reference in
iface.ccontains:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback)
#elifLINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv)
#else
static u16ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb)
#endifThe linux 3.13
net_device_opsstructure has the following arguments forndo_select_queue:
structnet_device_ops{
int (*ndo_init)(structnet_device*dev);
void (*ndo_uninit)(structnet_device*dev);
int (*ndo_open)(structnet_device*dev);
int (*ndo_stop)(structnet_device*dev);netdev_tx_t(*ndo_start_xmit) (structsk_buff*skb,
structnet_device*dev);
u16 (*ndo_select_queue)(structnet_device*dev,
structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback);When I modify the ifdefs for the function to include the fallback argument,
iface.ccompiles without warnings. I accomplish this by changing the ifdef:#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)
to#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)Quoted 8 lines
and the original
select_queuefunction I modify the ifdef to:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)I also do this for the
ieee80211_monitor_select_queuefunction definiations.It looks like these conditionals are not aligned properly to the kernel versions.
No linux-3.13 has:
u16 (*ndo_select_queue)(struct
net_device*dev,
structsk_buff*skb, void*accel_priv);Now if Mint decided to cherry pick the commit that added the
select_queue_fallback_tfallback argument that's on a distribution specific kernel ABI change. We're try to help distributions do stupid things like this by always overriding a routine with a backports prefix but for data structures and functions like these its a bit harder so the only to fix this is to have a Mint specific check and add that as an exclusion here. You're welcome to add a patch if you can figure out how to do that. RHEL has specific checks, look forRHEL_RELEASE_CODEusage on backports as an example.
Quoted 1 line
Luis
Hi
This is in the Ubuntu kernel and I created a bug [0], to detect the Ubuntu kernel version in use. I already have a patch for backports pending, hopefully I will find some time at the weekend.
Hauke
[0]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1327619
Quoted 113 lines · C. McPherson
When I build backports-3.15-rc1-1 I get the following warnings (my linux kernel version is 3.13.0-24) Mint 17:
Here is my version information:
linuxbox backports-3.15-rc1-1 # uname -r
3.13.0-24-generic
linuxbox backports-3.15-rc1-1 # uname -a
Linux linuxbox 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014x86_64x86_64x86_64GNU/Linux
linuxbox backports-3.15-rc1-1 #CC [M]
/usr/src/backports-3.15-rc1-1/net/mac80211/vht.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/ibss.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.o/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1080:2: warning:
(near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.15-rc1-1/net/mac80211/iface.c:1122:2: warning:
(near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/rate.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/michael.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/tkip.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_ccm.oCC [M]/usr/src/backports-3.15-rc1-1/net/mac80211/aes_cmac.oWhen I use backports-3.16-rc1 I get the same warnings:
CC [M]
/usr/src/backports-3.16-rc1-1/net/mac80211/agg-rx.oCC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/vht.o
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/ibss.oCC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.o/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_netdev_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1099:2: warning:
(near initialization for ‘ieee80211_dataif_ops.ndo_select_queue’) [enabled by default]/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning:
initialization from incompatible pointer type [enabled by default] .ndo_select_queue =ieee80211_monitor_select_queue,
^/usr/src/backports-3.16-rc1-1/net/mac80211/iface.c:1141:2: warning:
(near initialization for ‘ieee80211_monitorif_ops.ndo_select_queue’) [enabled by default]
CC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/rate.oCC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/michael.oCC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/tkip.oCC [M]/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o^Cmake[6]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211/aes_ccm.o] Interrupt
make[5]: *** [/usr/src/backports-3.16-rc1-1/net/mac80211] Interrupt make[4]: *** [_module_/usr/src/backports-3.16-rc1-1] InterruptThe reference in
iface.ccontains:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback)
#elifLINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)static u16 ieee80211_netdev_select_queue(structnet_device*dev, structsk_buff*skb,
void*accel_priv)
#else
static u16ieee80211_netdev_select_queue(struct net_device *dev, struct sk_buff *skb)
#endifThe linux 3.13
net_device_opsstructure has the following arguments forndo_select_queue:
structnet_device_ops{
int (*ndo_init)(structnet_device*dev);
void (*ndo_uninit)(structnet_device*dev);
int (*ndo_open)(structnet_device*dev);
int (*ndo_stop)(structnet_device*dev);netdev_tx_t(*ndo_start_xmit) (structsk_buff*skb,
structnet_device*dev);
u16 (*ndo_select_queue)(structnet_device*dev,
structsk_buff*skb,
void*accel_priv,select_queue_fallback_tfallback);When I modify the ifdefs for the function to include the fallback argument,
iface.ccompiles without warnings. I accomplish this by changing the ifdef:#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)
to#if
LINUX_VERSION_CODE>=KERNEL_VERSION(3,13,0)and the original
select_queuefunction I modify the ifdef to:
#ifLINUX_VERSION_CODE>=KERNEL_VERSION(3,15,0)I also do this for the
ieee80211_monitor_select_queuefunction definiations.
Quoted 7 lines
It looks like these conditionals are not aligned properly to the kernel versions.
Thanks in advance
Clyde
This is fixed in backports-20140710.
Hauke