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

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

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

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

kernel.org | git.kernel.org | LWN.net | Project Home | 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.

sflogo.php