1. 21 5月, 2010 1 次提交
  2. 19 5月, 2010 1 次提交
    • O
      can: Fix SJA1000 command register writes on SMP systems · 57c8a456
      Oliver Hartkopp 提交于
      The SJA1000 command register is concurrently written in the rx-path to free
      the receive buffer _and_ in the tx-path to start the transmission.
      
      The SJA1000 data sheet, 6.4.4 COMMAND REGISTER (CMR) states:
      "Between two commands at least one internal clock cycle is needed in
      order to proceed. The internal clock is half of the external oscillator
      frequency."
      
      On SMP systems the current implementation leads to a write stall in the
      tx-path, which can be solved by adding some general locking and some time
      to settle the write_reg() operation for the command register.
      
      Thanks to Klaus Hitschler for the original fix and detailed problem
      description.
      
      This patch applies on net-2.6 and (with some offsets) on net-next-2.6 .
      Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Acked-by: NWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      57c8a456
  3. 10 5月, 2010 1 次提交
  4. 13 4月, 2010 1 次提交
  5. 26 2月, 2010 1 次提交
  6. 15 1月, 2010 1 次提交
  7. 12 1月, 2010 1 次提交
  8. 14 12月, 2009 1 次提交
    • O
      can: Fix data length code handling in rx path · c7cd606f
      Oliver Hartkopp 提交于
      A valid CAN dataframe can have a data length code (DLC) of 0 .. 8 data bytes.
      
      When reading the CAN controllers register the 4-bit value may contain values
      from 0 .. 15 which may exceed the reserved space in the socket buffer!
      
      The ISO 11898-1 Chapter 8.4.2.3 (DLC field) says that register values > 8
      should be reduced to 8 without any error reporting or frame drop.
      
      This patch introduces a new helper macro to cast a given 4-bit data length
      code (dlc) to __u8 and ensure the DLC value to be max. 8 bytes.
      
      The different handlings in the rx path of the CAN netdevice drivers are fixed.
      Signed-off-by: NOliver Hartkopp <oliver@hartkopp.net>
      Signed-off-by: NWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7cd606f
  9. 19 11月, 2009 1 次提交
  10. 27 10月, 2009 1 次提交
  11. 20 10月, 2009 1 次提交
    • W
      can: provide library functions for skb allocation · 7b6856a0
      Wolfgang Grandegger 提交于
      This patch makes the private functions alloc_can_skb() and
      alloc_can_err_skb() of the at91_can driver public and adapts all
      drivers to use these. While making the patch I realized, that
      the skb's are *not* setup consistently. It's now done as shown
      below:
      
        skb->protocol = htons(ETH_P_CAN);
        skb->pkt_type = PACKET_BROADCAST;
        skb->ip_summed = CHECKSUM_UNNECESSARY;
        *cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
        memset(*cf, 0, sizeof(struct can_frame));
      
      The frame is zeroed out to avoid uninitialized data to be passed to
      user space. Some drivers or library code did not set "pkt_type" or
      "ip_summed". Also,  "__constant_htons()" should not be used for
      runtime invocations, as pointed out by David Miller.
      Signed-off-by: NWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7b6856a0
  12. 13 10月, 2009 1 次提交
  13. 04 9月, 2009 1 次提交
  14. 03 9月, 2009 1 次提交
  15. 01 9月, 2009 1 次提交
  16. 21 7月, 2009 1 次提交
  17. 06 7月, 2009 1 次提交
  18. 01 6月, 2009 2 次提交
  19. 19 5月, 2009 1 次提交