| On older kernels, we can't do this workaround, so if you use |
| an old 64-bit kernel with compat you'd better upgrade. |
| |
| For more details of this work around refer to this commit |
| upstream that deals with the code added: |
| |
| commit 645e77def93f1dd0e211c7244fbe152dac8a7100 |
| Author: Johannes Berg <johannes.berg@intel.com> |
| Date: Fri Mar 1 14:03:49 2013 +0100 |
| |
| nl80211: increase wiphy dump size dynamically |
| |
| Given a device with many channels capabilities the wiphy |
| information can still overflow even though its size in |
| 3.9 was reduced to 3.8 levels. For new userspace and |
| kernel 3.10 we're going to implement a new "split dump" |
| protocol that can use multiple messages per wiphy. |
| |
| For now though, add a workaround to be able to send more |
| information to userspace. Since generic netlink doesn't |
| have a way to set the minimum dump size globally, and we |
| wouldn't really want to set it globally anyway, increase |
| the size only when needed, as described in the comments. |
| As userspace might not be prepared for large buffers, we |
| can only use 4k. |
| |
| Also increase the size for the get_wiphy command. |
| |
| --- a/net/wireless/nl80211.c |
| +++ b/net/wireless/nl80211.c |
| @@ -1727,6 +1727,7 @@ static int nl80211_dump_wiphy(struct sk_ |
| cb->nlh->nlmsg_seq, |
| NLM_F_MULTI, state); |
| if (ret < 0) { |
| +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) |
| /* |
| * If sending the wiphy data didn't fit (ENOBUFS |
| * or EMSGSIZE returned), this SKB is still |
| @@ -1748,6 +1749,7 @@ static int nl80211_dump_wiphy(struct sk_ |
| rtnl_unlock(); |
| return 1; |
| } |
| +#endif |
| idx--; |
| break; |
| } |