diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2011-06-09 21:27:09 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-06-09 23:38:07 -0400 |
commit | c7ac8679bec9397afe8918f788cbcef88c38da54 (patch) | |
tree | c152712de4c997ea79252ef9ac72aaedb8f88c18 /include/linux | |
parent | 929dd047720785f099e12113780b3d7914ce6d9f (diff) |
rtnetlink: Compute and store minimum ifinfo dump size
The message size allocated for rtnl ifinfo dumps was limited to
a single page. This is not enough for additional interface info
available with devices that support SR-IOV and caused a bug in
which VF info would not be displayed if more than approximately
40 VFs were created per interface.
Implement a new function pointer for the rtnl_register service that will
calculate the amount of data required for the ifinfo dump and allocate
enough data to satisfy the request.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/netlink.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index a9dd89552f9c..fdd0188a167e 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -221,7 +221,8 @@ struct netlink_callback { | |||
221 | int (*dump)(struct sk_buff * skb, | 221 | int (*dump)(struct sk_buff * skb, |
222 | struct netlink_callback *cb); | 222 | struct netlink_callback *cb); |
223 | int (*done)(struct netlink_callback *cb); | 223 | int (*done)(struct netlink_callback *cb); |
224 | int family; | 224 | u16 family; |
225 | u16 min_dump_alloc; | ||
225 | long args[6]; | 226 | long args[6]; |
226 | }; | 227 | }; |
227 | 228 | ||
@@ -259,7 +260,8 @@ __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) | |||
259 | extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, | 260 | extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, |
260 | const struct nlmsghdr *nlh, | 261 | const struct nlmsghdr *nlh, |
261 | int (*dump)(struct sk_buff *skb, struct netlink_callback*), | 262 | int (*dump)(struct sk_buff *skb, struct netlink_callback*), |
262 | int (*done)(struct netlink_callback*)); | 263 | int (*done)(struct netlink_callback*), |
264 | u16 min_dump_alloc); | ||
263 | 265 | ||
264 | 266 | ||
265 | #define NL_NONROOT_RECV 0x1 | 267 | #define NL_NONROOT_RECV 0x1 |