Bug #310

BQL patch fails on 3.1.1

Added by Dave Täht on Nov 25, 2011. Updated on Apr 21, 2012.
Closed Normal Dave Täht

Description

Same patch works on same kernel version, must be a problem with a .config conflict

make[5]: Entering directory `/home/cero1/src/cerowrt/build_dir/linux-ar71xx_generic/linux-3.1.1’
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC net/core/net-sysfs.o
net/core/net-sysfs.c: In function ‘netdev_queue_attr_show’:
net/core/net-sysfs.c:803:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c:803:31: warning: type defaults to ‘int’ in declaration of ‘__mptr’
net/core/net-sysfs.c:803:31: warning: initialization from incompatible pointer type
net/core/net-sysfs.c:803:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c: In function ‘netdev_queue_attr_store’:
net/core/net-sysfs.c:816:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c:816:31: warning: type defaults to ‘int’ in declaration of ‘__mptr’
net/core/net-sysfs.c:816:31: warning: initialization from incompatible pointer type
net/core/net-sysfs.c:816:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c: In function ‘netdev_queue_release’:
net/core/net-sysfs.c:1194:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c:1194:31: warning: type defaults to ‘int’ in declaration of ‘__mptr’
net/core/net-sysfs.c:1194:31: warning: initialization from incompatible pointer type
net/core/net-sysfs.c:1194:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c: In function ‘netdev_queue_add_kobject’:
net/core/net-sysfs.c:1213:31: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c:1216:18: error: ‘struct net_device’ has no member named ‘queues_kset’
net/core/net-sysfs.c: In function ‘netdev_queue_update_kobjects’:
net/core/net-sysfs.c:1258:28: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c:1260:21: error: ‘struct netdev_queue’ has no member named ‘kobj’
net/core/net-sysfs.c: In function ‘register_queue_kobjects’:
net/core/net-sysfs.c:1274:5: error: ‘struct net_device’ has no member named ‘queues_kset’
net/core/net-sysfs.c:1276:10: error: ‘struct net_device’ has no member named ‘queues_kset’
net/core/net-sysfs.c: In function ‘remove_queue_kobjects’:
net/core/net-sysfs.c:1315:21: error: ‘struct net_device’ has no member named ‘queues_kset’
make[7]: ***** [net/core/net-sysfs.o] Error 1
make[6]: ***** [net/core] Error 2
make[5]: ***** [net] Error 2
make[5]: Leaving directory `/home/cero1/src/cerowrt/build_dir/linux-ar71xx_generic/linux-3.1.1’
make[4]: ***** [/home/cero1/src/cerowrt/build_dir/linux-ar71xx_generic/linux-3.1.1/.image] Error 2
make[4]: Leaving directory `/home/cero1/src/cerowrt/target/linux/ar71xx’
make[3]: ***** [install] Error 2
make[3]: Leaving directory `/home/cero1/src/cerowrt/target/linux’
make[2]: ***** [target/linux/install] Error 2
make[2]: Leaving directory `/home/cero1/src/cerowrt’
make[1]: ***** [/home/cero1/src/cerowrt/staging_dir/target-mips_r2_uClibc-0.9.32/stamp/.target_install] Error 2
make[1]: Leaving directory `/home/cero1/src/cerowrt’

Attachments

History

Updated by Dave Täht on Nov 25, 2011.
just feel the un-merged pain… there are dozens of machines here not in the mainline kernel.

cerowrt/target/linux/ar71xx/files/arch/mips/ar71xx

Updated by Dave Täht on Nov 25, 2011.
and basically the update to 3.2 moved a ton of dirs around.
Updated by Dave Täht on Dec 5, 2011.
It turned out I had deeper problems. It turned out all of 3.1.1 was failing to build.

Still unfixed.

3.0 is also failing to build.

Updated by Dave Täht on Dec 12, 2011.
3.1.5 finally built after backing out multiple changes to find the problem, and getting a new patchset from the net.
Updated by Dave Täht on Jan 28, 2012.
I have successfully backported BQL to 3.2.2 and tested on x86 with the e1000e driver.

My attempt at wedging BQL support into the ag71xx driver, however, fails. It does
get one packet out… So I have to look harder at the relevant drivers and see where
I went wrong.

[ 12.560000] USB Mass Storage support registered.
[ 17.050000] ———–[ cut here ]———–
[ 17.050000] WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0x178/0x280()
[ 17.060000] NETDEV WATCHDOG: eth0 (ag71xx): transmit queue 0 timed out
[ 17.060000] Modules linked in: usb_storage ohci_hcd ehci_hcd sd_mod ext4 jbd2 mbcache usbcore usb_common scsi_mod nls_base crc16 leds_gpio button_hotplug(O) gpio_keys_polled input_polldev input_core
[ 17.080000] Call Trace:
[ 17.080000] [<802818e8>] dump_stack+0x8/0x34
[ 17.090000] [<80075e58>] warn_slowpath_common+0x78/0xa4
[ 17.090000] [<80075f0c>] warn_slowpath_fmt+0x2c/0x38
[ 17.100000] [<801fd2dc>] dev_watchdog+0x178/0x280
[ 17.100000] [<80080528>] run_timer_softirq+0x14c/0x1ec
[ 17.110000] [<8007b674>] __do_softirq+0xac/0x15c
[ 17.110000] [<8007b87c>] do_softirq+0x48/0x68
[ 17.120000] [<80062bec>] ret_from_irq+0x0/0x4
[ 17.120000] [<80062de0>] r4k_wait+0x20/0x40
[ 17.130000] [<800648a8>] cpu_idle+0x24/0x44
[ 17.130000] [<803148c8>] start_kernel+0x37c/0x39c
[ 17.130000]
[ 17.140000] –[ end trace ad0f0a4fc2f62e9d ]–
[ 17.140000] eth0: tx timeout
[ 17.140000] eth0: link down
[ 17.150000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 17.150000] eth0: link up (1000Mbps/Full duplex)
[ 27.050000] eth0: tx timeout
[ 27.050000] eth0: link down
[ 27.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 27.050000] eth0: link up (1000Mbps/Full duplex)
[ 32.830000] eth0: link down
[ 35.940000] Compat-wireless backport release: compat-wireless-2011-11-29
[ 35.940000] Backport based on wireless-testing.git master-2011-12-01
[ 35.970000] cfg80211: Calling CRDA to update world regulatory domain
[ 36.390000] NET: Registered protocol family 10
[ 36.850000] cfg80211: World regulatory domain updated:
[ 36.850000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 36.860000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 36.870000] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 36.880000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 36.880000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 36.890000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 37.870000] PCI: Enabling device 0000:00:11.0 (0000 -> 0002)
[ 37.890000] ath: EEPROM regdomain: 0x0
[ 37.890000] ath: EEPROM indicates default country code should be used
[ 37.890000] ath: doing EEPROM country->regdmn map search
[ 37.890000] ath: country maps to regdmn code: 0x3a
[ 37.890000] ath: Country alpha2 being used: US
[ 37.890000] ath: Regpair used: 0x3a
[ 37.890000] ieee80211 phy0: Selected rate control algorithm ‘minstrel_ht’
[ 37.890000] Registered led device: ath9k-phy0
[ 37.890000] ieee80211 phy0: Atheros AR9280 Rev:2 mem=0xb0000000, irq=40
[ 37.900000] PCI: Enabling device 0000:00:12.0 (0000 -> 0002)
[ 37.910000] ath: eeprom contains invalid mac address: ff:ff:ff:ff:ff:ff
[ 37.920000] ath: random mac address will be used: ea:79:26:a7:81:75
[ 37.920000] ath: EEPROM regdomain: 0x0
[ 37.920000] ath: EEPROM indicates default country code should be used
[ 37.920000] ath: doing EEPROM country->regdmn map search
[ 37.920000] ath: country maps to regdmn code: 0x3a
[ 37.920000] ath: Country alpha2 being used: US
[ 37.920000] ath: Regpair used: 0x3a
[ 37.930000] ieee80211 phy1: Selected rate control algorithm ‘minstrel_ht’
[ 37.930000] Registered led device: ath9k-phy1
[ 37.930000] ieee80211 phy1: Atheros AR9280 Rev:2 mem=0xb0010000, irq=41
[ 37.940000] cfg80211: Calling CRDA for country: US
[ 38.160000] cfg80211: Regulatory domain changed to country: US
[ 38.170000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 38.180000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 38.180000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)
[ 38.190000] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 38.200000] cfg80211: (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 38.210000] cfg80211: (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 38.220000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)
[ 38.360000] PPP generic driver version 2.4.2
[ 38.450000] tun: Universal TUN/TAP device driver, 1.6
[ 38.450000] tun: © 1999-2004 Max Krasnyansky maxk@qualcomm.com
[ 38.480000] IPv6 over IPv4 tunneling driver
[ 38.580000] GRE over IPv4 demultiplexor driver
[ 38.640000] GRE over IPv4 tunneling driver
[ 38.720000] ip_tables: © 2000-2006 Netfilter Core Team
[ 38.890000] NET: Registered protocol family 24
[ 38.950000] nf_conntrack version 0.5.0 (963 buckets, 3852 max)
[ 39.050000] PPTP driver version 0.8.5
[ 39.290000] xt_time: kernel timezone is -0000
[ 39.480000] ip6_tables: © 2000-2006 Netfilter Core Team
[ 41.350000] ADDRCONF (NETDEV_UP): ge00: link is not ready
[ 43.030000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 43.030000] se00: link up (1000Mbps/Full duplex)
[ 48.080000] ADDRCONF (NETDEV_UP): sw00: link is not ready
[ 50.770000] ADDRCONF (NETDEV_UP): gw01: link is not ready
[ 53.050000] se00: tx timeout
[ 53.050000] se00: link down
[ 53.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 53.050000] se00: link up (1000Mbps/Full duplex)
[ 53.470000] ADDRCONF (NETDEV_UP): sw10: link is not ready
[ 57.840000] gw01: Creating new IBSS network, BSSID ce:05:e9:34:0c:37
[ 57.840000] ADDRCONF (NETDEV_CHANGE): gw01: link becomes ready
[ 58.750000] ADDRCONF (NETDEV_UP): gw11: link is not ready
[ 63.050000] se00: tx timeout
[ 63.050000] se00: link down
[ 63.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 63.050000] se00: link up (1000Mbps/Full duplex)
[ 67.040000] gw11: Creating new IBSS network, BSSID a2:37:f6:1d:cc:2e
[ 67.040000] ADDRCONF (NETDEV_CHANGE): gw11: link becomes ready
[ 73.050000] se00: tx timeout
[ 73.050000] se00: link down
[ 73.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 73.050000] se00: link up (1000Mbps/Full duplex)
[ 83.050000] se00: tx timeout
[ 83.050000] se00: link down
[ 83.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 83.050000] se00: link up (1000Mbps/Full duplex)
[ 93.050000] se00: tx timeout
[ 93.050000] se00: link down
[ 93.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 93.050000] se00: link up (1000Mbps/Full duplex)
[ 103.050000] se00: tx timeout
[ 103.050000] se00: link down
[ 103.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 103.050000] se00: link up (1000Mbps/Full duplex)
[ 113.050000] se00: tx timeout
[ 113.050000] se00: link down
[ 113.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 113.050000] se00: link up (1000Mbps/Full duplex)
[ 123.050000] se00: tx timeout
[ 123.050000] se00: link down
[ 123.050000] ar71xx: pll_reg 0xb8050010: 0x11110000
[ 123.050000] se00: link up (1000Mbps/Full duplex)

Updated by Dave Täht on Jan 28, 2012.
Updated by Dave Täht on Jan 28, 2012.
I got it working… now to test.
Updated by Dave Täht on Jan 29, 2012.
I am happy to report I got bql backported to 3.2.2 successfully. Or so I think.
Updated by Tim Zhang on Feb 9, 2012.
Please enable this option when you configure your kernel, using ‘make menuconfig’.

Networking support --> Networking options --> RPS

Because ‘struct netdev_queue’ has the member ‘kobj’ only when CONFIG_RPS is defined.
So does ‘queues_kset’ in ‘struct net_device’.

You can find the definition in ‘include/linux/netdevice.h’.

struct net_device {
...
#ifdef CONFIG_RPS
    struct kset     *queues_kset;
    struct netdev_rx_queue  *_rx;
    /* Number of RX queues allocated at register_netdev() time */
    unsigned int        num_rx_queues;
    /* Number of RX queues currently active in device */
    unsigned int        real_num_rx_queues;
#ifdef CONFIG_RFS_ACCEL
    /* CPU reverse-mapping for RX completion interrupts, indexed by RX queue number. Assigned by driver.
     * This must only be set if the ndo_rx_flow_steer operation is defined. */
    struct cpu_rmap     *rx_cpu_rmap;
#endif
#endif
...
};
...
struct netdev_queue {
...
#ifdef CONFIG_RPS
    struct kobject      kobj;
#endif
...
} ____cacheline_aligned_in_smp;

Have a good day!

Updated by Dave Täht on Apr 21, 2012.

This is a static export of the original bufferbloat.net issue database. As such, no further commenting is possible; the information is solely here for archival purposes.
RSS feed

Recent Updates

Oct 20, 2023 Wiki page
What Can I Do About Bufferbloat?
Dec 3, 2022 Wiki page
Codel Wiki
Jun 11, 2022 Wiki page
More about Bufferbloat
Jun 11, 2022 Wiki page
Tests for Bufferbloat
Dec 7, 2021 Wiki page
Getting SQM Running Right

Find us elsewhere

Bufferbloat Mailing Lists
#bufferbloat on Twitter
Google+ group
Archived Bufferbloat pages from the Wayback Machine

Sponsors

Comcast Research Innovation Fund
Nlnet Foundation
Shuttleworth Foundation
GoFundMe

Bufferbloat Related Projects

OpenWrt Project
Congestion Control Blog
Flent Network Test Suite
Sqm-Scripts
The Cake shaper
AQMs in BSD
IETF AQM WG
CeroWrt (where it all started)

Network Performance Related Resources


Jim Gettys' Blog - The chairman of the Fjord
Toke's Blog - Karlstad University's work on bloat
Voip Users Conference - Weekly Videoconference mostly about voip
Candelatech - A wifi testing company that "gets it".