← Back to team overview

kernel-packages team mailing list archive

[Bug 1239578] Re: No wireless support for Realtek RTL8192EE [10ec:818b]

 

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:

sed -i
's/ieee80211_is_robust_mgmt_frame/_ieee80211_is_robust_mgmt_frame/g'
rtl8*/trx.c

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.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1239578

Title:
  No wireless support for Realtek RTL8192EE [10ec:818b]

Status in HWE Next Project:
  Confirmed
Status in HWE Next trusty series:
  Confirmed
Status in “linux” package in Ubuntu:
  Confirmed

Bug description:
  Open this bug to trace device driver RTL8192EE.

  We have seen this wireless card on some laptops, id is [10ec:818b],
  driver is RTL8192EE.

  Status: waiting for this driver being moved out of staging directory.

To manage notifications about this bug go to:
https://bugs.launchpad.net/hwe-next/+bug/1239578/+subscriptions


Follow ups

References