]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/can/usb/ems_usb.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[mv-sheeva.git] / drivers / net / can / usb / ems_usb.c
index abdbd9c2b788bb20ae93b848788636efd07be6bd..3e4419054c81efc0c593527d6069b5d6e699120d 100644 (file)
@@ -232,7 +232,7 @@ MODULE_DEVICE_TABLE(usb, ems_usb_table);
 #define INTR_IN_BUFFER_SIZE 4
 
 #define MAX_RX_URBS 10
-#define MAX_TX_URBS CAN_ECHO_SKB_MAX
+#define MAX_TX_URBS 10
 
 struct ems_usb;
 
@@ -311,14 +311,10 @@ static void ems_usb_rx_can_msg(struct ems_usb *dev, struct ems_cpc_msg *msg)
        int i;
        struct net_device_stats *stats = &dev->netdev->stats;
 
-       skb = netdev_alloc_skb(dev->netdev, sizeof(struct can_frame));
+       skb = alloc_can_skb(dev->netdev, &cf);
        if (skb == NULL)
                return;
 
-       skb->protocol = htons(ETH_P_CAN);
-
-       cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
-
        cf->can_id = le32_to_cpu(msg->msg.can_msg.id);
        cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8);
 
@@ -346,18 +342,10 @@ static void ems_usb_rx_err(struct ems_usb *dev, struct ems_cpc_msg *msg)
        struct sk_buff *skb;
        struct net_device_stats *stats = &dev->netdev->stats;
 
-       skb = netdev_alloc_skb(dev->netdev, sizeof(struct can_frame));
+       skb = alloc_can_err_skb(dev->netdev, &cf);
        if (skb == NULL)
                return;
 
-       skb->protocol = htons(ETH_P_CAN);
-
-       cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
-       memset(cf, 0, sizeof(struct can_frame));
-
-       cf->can_id = CAN_ERR_FLAG;
-       cf->can_dlc = CAN_ERR_DLC;
-
        if (msg->type == CPC_MSG_TYPE_CAN_STATE) {
                u8 state = msg->msg.can_state;
 
@@ -1015,7 +1003,7 @@ static int ems_usb_probe(struct usb_interface *intf,
        struct ems_usb *dev;
        int i, err = -ENOMEM;
 
-       netdev = alloc_candev(sizeof(struct ems_usb));
+       netdev = alloc_candev(sizeof(struct ems_usb), MAX_TX_URBS);
        if (!netdev) {
                dev_err(netdev->dev.parent, "Couldn't alloc candev\n");
                return -ENOMEM;