The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/tools/firewire/nosy-dump.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #ifndef __nosy_dump_h__
    2 #define __nosy_dump_h__
    3 
    4 #define array_length(array) (sizeof(array) / sizeof(array[0]))
    5 
    6 #define ACK_NO_ACK   0x0
    7 #define ACK_DONE(a)  ((a >> 2) == 0)
    8 #define ACK_BUSY(a)  ((a >> 2) == 1)
    9 #define ACK_ERROR(a) ((a >> 2) == 3)
   10 
   11 #include <stdint.h>
   12 
   13 struct phy_packet {
   14         uint32_t timestamp;
   15         union {
   16                 struct {
   17                         uint32_t zero:24;
   18                         uint32_t phy_id:6;
   19                         uint32_t identifier:2;
   20                 } common, link_on;
   21 
   22                 struct {
   23                         uint32_t zero:16;
   24                         uint32_t gap_count:6;
   25                         uint32_t set_gap_count:1;
   26                         uint32_t set_root:1;
   27                         uint32_t root_id:6;
   28                         uint32_t identifier:2;
   29                 } phy_config;
   30 
   31                 struct {
   32                         uint32_t more_packets:1;
   33                         uint32_t initiated_reset:1;
   34                         uint32_t port2:2;
   35                         uint32_t port1:2;
   36                         uint32_t port0:2;
   37                         uint32_t power_class:3;
   38                         uint32_t contender:1;
   39                         uint32_t phy_delay:2;
   40                         uint32_t phy_speed:2;
   41                         uint32_t gap_count:6;
   42                         uint32_t link_active:1;
   43                         uint32_t extended:1;
   44                         uint32_t phy_id:6;
   45                         uint32_t identifier:2;
   46                 } self_id;
   47 
   48                 struct {
   49                         uint32_t more_packets:1;
   50                         uint32_t reserved1:1;
   51                         uint32_t porth:2;
   52                         uint32_t portg:2;
   53                         uint32_t portf:2;
   54                         uint32_t porte:2;
   55                         uint32_t portd:2;
   56                         uint32_t portc:2;
   57                         uint32_t portb:2;
   58                         uint32_t porta:2;
   59                         uint32_t reserved0:2;
   60                         uint32_t sequence:3;
   61                         uint32_t extended:1;
   62                         uint32_t phy_id:6;
   63                         uint32_t identifier:2;
   64                 } ext_self_id;
   65         };
   66         uint32_t inverted;
   67         uint32_t ack;
   68 };
   69 
   70 #define TCODE_PHY_PACKET 0x10
   71 
   72 #define PHY_PACKET_CONFIGURATION 0x00
   73 #define PHY_PACKET_LINK_ON 0x01
   74 #define PHY_PACKET_SELF_ID 0x02
   75 
   76 struct link_packet {
   77         uint32_t timestamp;
   78         union {
   79                 struct {
   80                         uint32_t priority:4;
   81                         uint32_t tcode:4;
   82                         uint32_t rt:2;
   83                         uint32_t tlabel:6;
   84                         uint32_t destination:16;
   85 
   86                         uint32_t offset_high:16;
   87                         uint32_t source:16;
   88 
   89                         uint32_t offset_low;
   90                 } common;
   91 
   92                 struct {
   93                         uint32_t common[3];
   94                         uint32_t crc;
   95                 } read_quadlet;
   96 
   97                 struct {
   98                         uint32_t common[3];
   99                         uint32_t data;
  100                         uint32_t crc;
  101                 } read_quadlet_response;
  102 
  103                 struct {
  104                         uint32_t common[3];
  105                         uint32_t extended_tcode:16;
  106                         uint32_t data_length:16;
  107                         uint32_t crc;
  108                 } read_block;
  109 
  110                 struct {
  111                         uint32_t common[3];
  112                         uint32_t extended_tcode:16;
  113                         uint32_t data_length:16;
  114                         uint32_t crc;
  115                         uint32_t data[0];
  116                         /* crc and ack follows. */
  117                 } read_block_response;
  118 
  119                 struct {
  120                         uint32_t common[3];
  121                         uint32_t data;
  122                         uint32_t crc;
  123                 } write_quadlet;
  124 
  125                 struct {
  126                         uint32_t common[3];
  127                         uint32_t extended_tcode:16;
  128                         uint32_t data_length:16;
  129                         uint32_t crc;
  130                         uint32_t data[0];
  131                         /* crc and ack follows. */
  132                 } write_block;
  133 
  134                 struct {
  135                         uint32_t common[3];
  136                         uint32_t crc;
  137                 } write_response;
  138 
  139                 struct {
  140                         uint32_t common[3];
  141                         uint32_t data;
  142                         uint32_t crc;
  143                 } cycle_start;
  144 
  145                 struct {
  146                         uint32_t sy:4;
  147                         uint32_t tcode:4;
  148                         uint32_t channel:6;
  149                         uint32_t tag:2;
  150                         uint32_t data_length:16;
  151 
  152                         uint32_t crc;
  153                 } iso_data;
  154         };
  155 };
  156 
  157 struct subaction {
  158         uint32_t ack;
  159         size_t length;
  160         struct list link;
  161         struct link_packet packet;
  162 };
  163 
  164 struct link_transaction {
  165         int request_node, response_node, tlabel;
  166         struct subaction *request, *response;
  167         struct list request_list, response_list;
  168         struct list link;
  169 };
  170 
  171 int decode_fcp(struct link_transaction *t);
  172 
  173 #endif /* __nosy_dump_h__ */

Cache object: 846b5784738f69cf29037fdee8ae3d14


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.