can: introduce CAN midlayer private and allocate it automatically
This patch introduces the CAN midlayer private structure ("struct can_ml_priv") which should be used to hold protocol specific per device data structures. For now it's only member is "struct can_dev_rcv_lists". The CAN midlayer private is allocated via alloc_netdev()'s private and assigned to "struct net_device::ml_priv" during device creation. This is done transparently for CAN drivers using alloc_candev(). The slcan, vcan and vxcan drivers which are not using alloc_candev() have been adopted manually. The memory layout of the netdev_priv allocated via alloc_candev() will looke like this: +-------------------------+ | driver's priv | +-------------------------+ | struct can_ml_priv | +-------------------------+ | array of struct sk_buff | +-------------------------+ Signed-off-by:Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by:
Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by:
Marc Kleine-Budde <mkl@pengutronix.de>
Showing
- drivers/net/can/dev.c 18 additions, 4 deletionsdrivers/net/can/dev.c
- drivers/net/can/slcan.c 4 additions, 1 deletiondrivers/net/can/slcan.c
- drivers/net/can/vcan.c 4 additions, 2 deletionsdrivers/net/can/vcan.c
- drivers/net/can/vxcan.c 2 additions, 1 deletiondrivers/net/can/vxcan.c
- include/linux/can/can-ml.h 66 additions, 0 deletionsinclude/linux/can/can-ml.h
- net/can/af_can.c 1 addition, 0 deletionsnet/can/af_can.c
- net/can/af_can.h 0 additions, 15 deletionsnet/can/af_can.h
- net/can/proc.c 1 addition, 0 deletionsnet/can/proc.c
Please register or sign in to comment