/* Rx compl queue may be in unarmed state; rearm it */
        be_cq_notify(adapter, adapter->rx_obj.cq.id, true, 0);
  
 -      status = be_cmd_link_status_query(adapter, &link_up);
 +      status = be_cmd_link_status_query(adapter, &link_up, &mac_speed,
 +                      &link_speed);
        if (status)
-               return status;
+               goto ret_sts;
        be_link_status_update(adapter, link_up);
  
+       status = be_vid_config(adapter);
+       if (status)
+               goto ret_sts;
+ 
+       status = be_cmd_set_flow_control(adapter,
+                                       adapter->tx_fc, adapter->rx_fc);
+       if (status)
+               goto ret_sts;
+ 
        schedule_delayed_work(&adapter->work, msecs_to_jiffies(100));
-       return 0;
+ ret_sts:
+       return status;
  }
  
  static int be_setup(struct be_adapter *adapter)
 
        if (skb == NULL)
                return;
  
-       cf->can_id = msg->msg.can_msg.id;
 -      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);
  
        if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME