~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/firewire/nosy-dump.h

Version: ~ [ linux-5.13-rc5 ] ~ [ linux-5.12.9 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.42 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.124 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.193 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.235 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.271 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.271 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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__ */
174 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp