Message ID | 4AF54389.1090309@grandegger.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Wolfgang Grandegger <wg@grandegger.com> Date: Sat, 07 Nov 2009 10:53:13 +0100 > On older kernels, e.g. 2.6.27, a WARN_ON dump in rtmsg_ifinfo() > is thrown when the CAN device is registered due to insufficient > skb space, as reported by various users. This patch adds the > rtnl_link_ops "get_size" to fix the problem. I think this patch > is required for more recent kernels as well, even if no WARN_ON > dumps are triggered. Maybe we also need "get_xstats_size" for > the CAN xstats. > > Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Applied to net-2.6, thanks Wolfgang. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Miller wrote: > From: Wolfgang Grandegger <wg@grandegger.com> > Date: Sat, 07 Nov 2009 10:53:13 +0100 > >> On older kernels, e.g. 2.6.27, a WARN_ON dump in rtmsg_ifinfo() >> is thrown when the CAN device is registered due to insufficient >> skb space, as reported by various users. This patch adds the >> rtnl_link_ops "get_size" to fix the problem. I think this patch >> is required for more recent kernels as well, even if no WARN_ON >> dumps are triggered. Maybe we also need "get_xstats_size" for >> the CAN xstats. >> >> Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> > > Applied to net-2.6, thanks Wolfgang. Thanks, the commit message included some questions. What is the rule using the rtnl_link_ops "get_size" or "get_xstats_size". Are these mandatory if the corresponding fill functions are used? Wolfgang. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Wolfgang Grandegger wrote: > David Miller wrote: >> From: Wolfgang Grandegger <wg@grandegger.com> >> Date: Sat, 07 Nov 2009 10:53:13 +0100 >> >>> On older kernels, e.g. 2.6.27, a WARN_ON dump in rtmsg_ifinfo() >>> is thrown when the CAN device is registered due to insufficient >>> skb space, as reported by various users. This patch adds the >>> rtnl_link_ops "get_size" to fix the problem. I think this patch >>> is required for more recent kernels as well, even if no WARN_ON >>> dumps are triggered. Maybe we also need "get_xstats_size" for >>> the CAN xstats. >>> >>> Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> >> Applied to net-2.6, thanks Wolfgang. > > Thanks, the commit message included some questions. What is the rule > using the rtnl_link_ops "get_size" or "get_xstats_size". Are these > mandatory if the corresponding fill functions are used? Yes. You also need a get_xstats_size() function. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patrick McHardy wrote: > Wolfgang Grandegger wrote: >> David Miller wrote: >>> From: Wolfgang Grandegger <wg@grandegger.com> >>> Date: Sat, 07 Nov 2009 10:53:13 +0100 >>> >>>> On older kernels, e.g. 2.6.27, a WARN_ON dump in rtmsg_ifinfo() >>>> is thrown when the CAN device is registered due to insufficient >>>> skb space, as reported by various users. This patch adds the >>>> rtnl_link_ops "get_size" to fix the problem. I think this patch >>>> is required for more recent kernels as well, even if no WARN_ON >>>> dumps are triggered. Maybe we also need "get_xstats_size" for >>>> the CAN xstats. >>>> >>>> Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> >>> Applied to net-2.6, thanks Wolfgang. >> Thanks, the commit message included some questions. What is the rule >> using the rtnl_link_ops "get_size" or "get_xstats_size". Are these >> mandatory if the corresponding fill functions are used? > > Yes. You also need a get_xstats_size() function. Thanks for clarification. I will provide a patch a.s.a.p. Wolfgang. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: net-next-2.6/drivers/net/can/dev.c =================================================================== --- net-next-2.6.orig/drivers/net/can/dev.c +++ net-next-2.6/drivers/net/can/dev.c @@ -637,6 +637,22 @@ static int can_changelink(struct net_dev return 0; } +static size_t can_get_size(const struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + size_t size; + + size = nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */ + size += sizeof(struct can_ctrlmode); /* IFLA_CAN_CTRLMODE */ + size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */ + size += sizeof(struct can_bittiming); /* IFLA_CAN_BITTIMING */ + size += sizeof(struct can_clock); /* IFLA_CAN_CLOCK */ + if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */ + size += sizeof(struct can_bittiming_const); + + return size; +} + static int can_fill_info(struct sk_buff *skb, const struct net_device *dev) { struct can_priv *priv = netdev_priv(dev); @@ -687,6 +703,7 @@ static struct rtnl_link_ops can_link_ops .setup = can_setup, .newlink = can_newlink, .changelink = can_changelink, + .get_size = can_get_size, .fill_info = can_fill_info, .fill_xstats = can_fill_xstats, };
On older kernels, e.g. 2.6.27, a WARN_ON dump in rtmsg_ifinfo() is thrown when the CAN device is registered due to insufficient skb space, as reported by various users. This patch adds the rtnl_link_ops "get_size" to fix the problem. I think this patch is required for more recent kernels as well, even if no WARN_ON dumps are triggered. Maybe we also need "get_xstats_size" for the CAN xstats. Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> --- drivers/net/can/dev.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html