Since my various (incompetent and unsuccessful ) attempts to install a driver for the RTL8192 Wifi card in my Lenovo Thinkpad 540p, I always get an error message whenever I (successfuly) install new software from the Ubuntu software centre.

------------------------------Deleting module version: 0017.1016.2013~sutton1completely from the DKMS tree.------------------------------Done.Loading new oem-wireless-rtl-92ce-92se-92de-8723ae-88ee-8723be-92ee-0017.1016.2013~sutton1 DKMS files...First Installation: checking all kernels...Building only for 3.13.0-24-genericBuilding for architecture amd64Building initial module for 3.13.0-24-genericError! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive whichdoes not match this kernel/arch. This indicates that it should not be built.dpkg: error processing package oem-wireless-rtl-92ce-92se-92de-8723ae-88ee-8723be-92ee-dkms (--configure): subprocess installed post-installation script returned error exit status 9Setting up sgt-puzzles (9872-1) ...

I am beginning to understand this problem, but I do not have a general fix.

In kernel 3.14, the authors of mac80211 changed the API (applications interface) for routine ieee80211_is_robust_mgmt_frame() to be able to intercept a certain kind of error. For those drivers that could not fit the new model, which includes the Realtek codes, they created a new entry point that used the old method. It was named _ieee80211_is_robust_mgmt_frame(), i.e. it has an underscore. For out-of-kernel drivers such as those in the rtlwifi_new repo, there must be code that determines at compile time which API needs to be used. Such code is in these drivers. If the kernel version is 3.14 or newer, use the underscored version. If older use the one without.

Why does it fail here? The reason is that Ubuntu applied the API change to their 3.13 kernels! Now the decision gets harder. If the kernel is 3.14, or if this is Ubuntu with version 3.13.11 + some unknown patch level, use the new API. That gets quite difficult; however, if I take the simple step of having all 3.13 versions use the new API, then I break every user of 3.13 that does not run Ubuntu. I refuse to do that for the following reason. Ubuntu should not have changed the API in mid 3.13!! In doing so, they make this kind of problem for everyone trying to provide out-of-kernel drivers. For me to fix the problem for Ubuntu users by breaking every other distro's users would be effectively to reward Ubuntu for what I consider to be their bad behavior.

How do I know this is the problem. First of all, the make log that was posted shows "warning: passing argument 1 of ‘ieee80211_is_robust_mgmt_frame’ from incompatible pointer type [enabled by default]". It is true that warnings can usually be ignored; however, when arguments have an incompatible pointer type, the end result will usually be a kernel crash. When that warning occurs for a routine that has changed API, it really sticks out. Secondly, I see this change in Ubuntu's 3.11.0-36 patch file.

What can Ubuntu users do? To my thinking, switching to a 3.14 or newer kernel would be best. If you really want to stay with Ubuntu's 3.13.0-36 kernel, then run the following command in the rtlwifi_new directory:

That will change the code to the new API for every kernel. Of course, that will break every kernel older than 3.13, and the command should be run *ONLY* if you see warnings of the kind noted above. To revert that change, you will need to run 'git checkout -f'.

Sorry that it has taken so long to sort this out, but I really never expected the API to change in the middle of kernel 3.13 for any distro. If the tone seems to be too bitchy, remember that I'm really angry about what has happened, and all the time I have wasted on sorting it out. My comments here are a lot milder than the way I really want to say them.

What can Ubuntu users do? To my thinking, switching to a 3.14 or newer kernel would be best. If you really want to stay with Ubuntu's 3.13.0-36 kernel, then run the following command in the rtlwifi_new directory:

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum