diff options
Diffstat (limited to 'drivers/net/netxen/netxen_nic.h')
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 153 |
1 files changed, 80 insertions, 73 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 59324b1693d6..3f3896e98879 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -63,11 +63,14 @@ | |||
63 | 63 | ||
64 | #include "netxen_nic_hw.h" | 64 | #include "netxen_nic_hw.h" |
65 | 65 | ||
66 | #define NETXEN_NIC_BUILD_NO "2" | ||
67 | #define _NETXEN_NIC_LINUX_MAJOR 3 | 66 | #define _NETXEN_NIC_LINUX_MAJOR 3 |
68 | #define _NETXEN_NIC_LINUX_MINOR 3 | 67 | #define _NETXEN_NIC_LINUX_MINOR 3 |
69 | #define _NETXEN_NIC_LINUX_SUBVERSION 3 | 68 | #define _NETXEN_NIC_LINUX_SUBVERSION 3 |
70 | #define NETXEN_NIC_LINUX_VERSIONID "3.3.3" "-" NETXEN_NIC_BUILD_NO | 69 | #define NETXEN_NIC_LINUX_VERSIONID "3.3.3" |
70 | |||
71 | #define NUM_FLASH_SECTORS (64) | ||
72 | #define FLASH_SECTOR_SIZE (64 * 1024) | ||
73 | #define FLASH_TOTAL_SIZE (NUM_FLASH_SECTORS * FLASH_SECTOR_SIZE) | ||
71 | 74 | ||
72 | #define RCV_DESC_RINGSIZE \ | 75 | #define RCV_DESC_RINGSIZE \ |
73 | (sizeof(struct rcv_desc) * adapter->max_rx_desc_count) | 76 | (sizeof(struct rcv_desc) * adapter->max_rx_desc_count) |
@@ -85,6 +88,7 @@ | |||
85 | #define NETXEN_RCV_PRODUCER_OFFSET 0 | 88 | #define NETXEN_RCV_PRODUCER_OFFSET 0 |
86 | #define NETXEN_RCV_PEG_DB_ID 2 | 89 | #define NETXEN_RCV_PEG_DB_ID 2 |
87 | #define NETXEN_HOST_DUMMY_DMA_SIZE 1024 | 90 | #define NETXEN_HOST_DUMMY_DMA_SIZE 1024 |
91 | #define FLASH_SUCCESS 0 | ||
88 | 92 | ||
89 | #define ADDR_IN_WINDOW1(off) \ | 93 | #define ADDR_IN_WINDOW1(off) \ |
90 | ((off > NETXEN_CRB_PCIX_HOST2) && (off < NETXEN_CRB_MAX)) ? 1 : 0 | 94 | ((off > NETXEN_CRB_PCIX_HOST2) && (off < NETXEN_CRB_MAX)) ? 1 : 0 |
@@ -239,49 +243,39 @@ extern unsigned long long netxen_dma_mask; | |||
239 | 243 | ||
240 | typedef u32 netxen_ctx_msg; | 244 | typedef u32 netxen_ctx_msg; |
241 | 245 | ||
242 | #define _netxen_set_bits(config_word, start, bits, val) {\ | ||
243 | unsigned long long mask = (((1ULL << (bits)) - 1) << (start)); \ | ||
244 | unsigned long long value = (val); \ | ||
245 | (config_word) &= ~mask; \ | ||
246 | (config_word) |= (((value) << (start)) & mask); \ | ||
247 | } | ||
248 | |||
249 | #define netxen_set_msg_peg_id(config_word, val) \ | 246 | #define netxen_set_msg_peg_id(config_word, val) \ |
250 | _netxen_set_bits(config_word, 0, 2, val) | 247 | ((config_word) &= ~3, (config_word) |= val & 3) |
251 | #define netxen_set_msg_privid(config_word) \ | 248 | #define netxen_set_msg_privid(config_word) \ |
252 | set_bit(2, (unsigned long*)&config_word) | 249 | ((config_word) |= 1 << 2) |
253 | #define netxen_set_msg_count(config_word, val) \ | 250 | #define netxen_set_msg_count(config_word, val) \ |
254 | _netxen_set_bits(config_word, 3, 15, val) | 251 | ((config_word) &= ~(0x7fff<<3), (config_word) |= (val & 0x7fff) << 3) |
255 | #define netxen_set_msg_ctxid(config_word, val) \ | 252 | #define netxen_set_msg_ctxid(config_word, val) \ |
256 | _netxen_set_bits(config_word, 18, 10, val) | 253 | ((config_word) &= ~(0x3ff<<18), (config_word) |= (val & 0x3ff) << 18) |
257 | #define netxen_set_msg_opcode(config_word, val) \ | 254 | #define netxen_set_msg_opcode(config_word, val) \ |
258 | _netxen_set_bits(config_word, 28, 4, val) | 255 | ((config_word) &= ~(0xf<<24), (config_word) |= (val & 0xf) << 24) |
259 | 256 | ||
260 | struct netxen_rcv_context { | 257 | struct netxen_rcv_context { |
261 | u32 rcv_ring_addr_lo; | 258 | __le64 rcv_ring_addr; |
262 | u32 rcv_ring_addr_hi; | 259 | __le32 rcv_ring_size; |
263 | u32 rcv_ring_size; | 260 | __le32 rsrvd; |
264 | u32 rsrvd; | ||
265 | }; | 261 | }; |
266 | 262 | ||
267 | struct netxen_ring_ctx { | 263 | struct netxen_ring_ctx { |
268 | 264 | ||
269 | /* one command ring */ | 265 | /* one command ring */ |
270 | u64 cmd_consumer_offset; | 266 | __le64 cmd_consumer_offset; |
271 | u32 cmd_ring_addr_lo; | 267 | __le64 cmd_ring_addr; |
272 | u32 cmd_ring_addr_hi; | 268 | __le32 cmd_ring_size; |
273 | u32 cmd_ring_size; | 269 | __le32 rsrvd; |
274 | u32 rsrvd; | ||
275 | 270 | ||
276 | /* three receive rings */ | 271 | /* three receive rings */ |
277 | struct netxen_rcv_context rcv_ctx[3]; | 272 | struct netxen_rcv_context rcv_ctx[3]; |
278 | 273 | ||
279 | /* one status ring */ | 274 | /* one status ring */ |
280 | u32 sts_ring_addr_lo; | 275 | __le64 sts_ring_addr; |
281 | u32 sts_ring_addr_hi; | 276 | __le32 sts_ring_size; |
282 | u32 sts_ring_size; | ||
283 | 277 | ||
284 | u32 ctx_id; | 278 | __le32 ctx_id; |
285 | } __attribute__ ((aligned(64))); | 279 | } __attribute__ ((aligned(64))); |
286 | 280 | ||
287 | /* | 281 | /* |
@@ -305,81 +299,85 @@ struct netxen_ring_ctx { | |||
305 | ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) | 299 | ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) |
306 | 300 | ||
307 | #define netxen_set_cmd_desc_flags(cmd_desc, val) \ | 301 | #define netxen_set_cmd_desc_flags(cmd_desc, val) \ |
308 | _netxen_set_bits((cmd_desc)->flags_opcode, 0, 7, val) | 302 | ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x7f), \ |
303 | (cmd_desc)->flags_opcode |= cpu_to_le16((val) & 0x7f)) | ||
309 | #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ | 304 | #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ |
310 | _netxen_set_bits((cmd_desc)->flags_opcode, 7, 6, val) | 305 | ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x3f<<7), \ |
306 | (cmd_desc)->flags_opcode |= cpu_to_le16((val) & (0x3f<<7))) | ||
311 | 307 | ||
312 | #define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ | 308 | #define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ |
313 | _netxen_set_bits((cmd_desc)->num_of_buffers_total_length, 0, 8, val); | 309 | ((cmd_desc)->num_of_buffers_total_length &= ~cpu_to_le32(0xff), \ |
310 | (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32((val) & 0xff)) | ||
314 | #define netxen_set_cmd_desc_totallength(cmd_desc, val) \ | 311 | #define netxen_set_cmd_desc_totallength(cmd_desc, val) \ |
315 | _netxen_set_bits((cmd_desc)->num_of_buffers_total_length, 8, 24, val); | 312 | ((cmd_desc)->num_of_buffers_total_length &= cpu_to_le32(0xff), \ |
313 | (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32(val << 24)) | ||
316 | 314 | ||
317 | #define netxen_get_cmd_desc_opcode(cmd_desc) \ | 315 | #define netxen_get_cmd_desc_opcode(cmd_desc) \ |
318 | (((cmd_desc)->flags_opcode >> 7) & 0x003F) | 316 | ((le16_to_cpu((cmd_desc)->flags_opcode) >> 7) & 0x003F) |
319 | #define netxen_get_cmd_desc_totallength(cmd_desc) \ | 317 | #define netxen_get_cmd_desc_totallength(cmd_desc) \ |
320 | (((cmd_desc)->num_of_buffers_total_length >> 8) & 0x0FFFFFF) | 318 | (le32_to_cpu((cmd_desc)->num_of_buffers_total_length) >> 8) |
321 | 319 | ||
322 | struct cmd_desc_type0 { | 320 | struct cmd_desc_type0 { |
323 | u8 tcp_hdr_offset; /* For LSO only */ | 321 | u8 tcp_hdr_offset; /* For LSO only */ |
324 | u8 ip_hdr_offset; /* For LSO only */ | 322 | u8 ip_hdr_offset; /* For LSO only */ |
325 | /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */ | 323 | /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */ |
326 | u16 flags_opcode; | 324 | __le16 flags_opcode; |
327 | /* Bit pattern: 0-7 total number of segments, | 325 | /* Bit pattern: 0-7 total number of segments, |
328 | 8-31 Total size of the packet */ | 326 | 8-31 Total size of the packet */ |
329 | u32 num_of_buffers_total_length; | 327 | __le32 num_of_buffers_total_length; |
330 | union { | 328 | union { |
331 | struct { | 329 | struct { |
332 | u32 addr_low_part2; | 330 | __le32 addr_low_part2; |
333 | u32 addr_high_part2; | 331 | __le32 addr_high_part2; |
334 | }; | 332 | }; |
335 | u64 addr_buffer2; | 333 | __le64 addr_buffer2; |
336 | }; | 334 | }; |
337 | 335 | ||
338 | u16 reference_handle; /* changed to u16 to add mss */ | 336 | __le16 reference_handle; /* changed to u16 to add mss */ |
339 | u16 mss; /* passed by NDIS_PACKET for LSO */ | 337 | __le16 mss; /* passed by NDIS_PACKET for LSO */ |
340 | /* Bit pattern 0-3 port, 0-3 ctx id */ | 338 | /* Bit pattern 0-3 port, 0-3 ctx id */ |
341 | u8 port_ctxid; | 339 | u8 port_ctxid; |
342 | u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */ | 340 | u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */ |
343 | u16 conn_id; /* IPSec offoad only */ | 341 | __le16 conn_id; /* IPSec offoad only */ |
344 | 342 | ||
345 | union { | 343 | union { |
346 | struct { | 344 | struct { |
347 | u32 addr_low_part3; | 345 | __le32 addr_low_part3; |
348 | u32 addr_high_part3; | 346 | __le32 addr_high_part3; |
349 | }; | 347 | }; |
350 | u64 addr_buffer3; | 348 | __le64 addr_buffer3; |
351 | }; | 349 | }; |
352 | union { | 350 | union { |
353 | struct { | 351 | struct { |
354 | u32 addr_low_part1; | 352 | __le32 addr_low_part1; |
355 | u32 addr_high_part1; | 353 | __le32 addr_high_part1; |
356 | }; | 354 | }; |
357 | u64 addr_buffer1; | 355 | __le64 addr_buffer1; |
358 | }; | 356 | }; |
359 | 357 | ||
360 | u16 buffer1_length; | 358 | __le16 buffer1_length; |
361 | u16 buffer2_length; | 359 | __le16 buffer2_length; |
362 | u16 buffer3_length; | 360 | __le16 buffer3_length; |
363 | u16 buffer4_length; | 361 | __le16 buffer4_length; |
364 | 362 | ||
365 | union { | 363 | union { |
366 | struct { | 364 | struct { |
367 | u32 addr_low_part4; | 365 | __le32 addr_low_part4; |
368 | u32 addr_high_part4; | 366 | __le32 addr_high_part4; |
369 | }; | 367 | }; |
370 | u64 addr_buffer4; | 368 | __le64 addr_buffer4; |
371 | }; | 369 | }; |
372 | 370 | ||
373 | u64 unused; | 371 | __le64 unused; |
374 | 372 | ||
375 | } __attribute__ ((aligned(64))); | 373 | } __attribute__ ((aligned(64))); |
376 | 374 | ||
377 | /* Note: sizeof(rcv_desc) should always be a mutliple of 2 */ | 375 | /* Note: sizeof(rcv_desc) should always be a mutliple of 2 */ |
378 | struct rcv_desc { | 376 | struct rcv_desc { |
379 | u16 reference_handle; | 377 | __le16 reference_handle; |
380 | u16 reserved; | 378 | __le16 reserved; |
381 | u32 buffer_length; /* allocated buffer length (usually 2K) */ | 379 | __le32 buffer_length; /* allocated buffer length (usually 2K) */ |
382 | u64 addr_buffer; | 380 | __le64 addr_buffer; |
383 | }; | 381 | }; |
384 | 382 | ||
385 | /* opcode field in status_desc */ | 383 | /* opcode field in status_desc */ |
@@ -405,36 +403,36 @@ struct rcv_desc { | |||
405 | (((status_desc)->lro & 0x80) >> 7) | 403 | (((status_desc)->lro & 0x80) >> 7) |
406 | 404 | ||
407 | #define netxen_get_sts_port(status_desc) \ | 405 | #define netxen_get_sts_port(status_desc) \ |
408 | ((status_desc)->status_desc_data & 0x0F) | 406 | (le64_to_cpu((status_desc)->status_desc_data) & 0x0F) |
409 | #define netxen_get_sts_status(status_desc) \ | 407 | #define netxen_get_sts_status(status_desc) \ |
410 | (((status_desc)->status_desc_data >> 4) & 0x0F) | 408 | ((le64_to_cpu((status_desc)->status_desc_data) >> 4) & 0x0F) |
411 | #define netxen_get_sts_type(status_desc) \ | 409 | #define netxen_get_sts_type(status_desc) \ |
412 | (((status_desc)->status_desc_data >> 8) & 0x0F) | 410 | ((le64_to_cpu((status_desc)->status_desc_data) >> 8) & 0x0F) |
413 | #define netxen_get_sts_totallength(status_desc) \ | 411 | #define netxen_get_sts_totallength(status_desc) \ |
414 | (((status_desc)->status_desc_data >> 12) & 0xFFFF) | 412 | ((le64_to_cpu((status_desc)->status_desc_data) >> 12) & 0xFFFF) |
415 | #define netxen_get_sts_refhandle(status_desc) \ | 413 | #define netxen_get_sts_refhandle(status_desc) \ |
416 | (((status_desc)->status_desc_data >> 28) & 0xFFFF) | 414 | ((le64_to_cpu((status_desc)->status_desc_data) >> 28) & 0xFFFF) |
417 | #define netxen_get_sts_prot(status_desc) \ | 415 | #define netxen_get_sts_prot(status_desc) \ |
418 | (((status_desc)->status_desc_data >> 44) & 0x0F) | 416 | ((le64_to_cpu((status_desc)->status_desc_data) >> 44) & 0x0F) |
419 | #define netxen_get_sts_owner(status_desc) \ | 417 | #define netxen_get_sts_owner(status_desc) \ |
420 | (((status_desc)->status_desc_data >> 56) & 0x03) | 418 | ((le64_to_cpu((status_desc)->status_desc_data) >> 56) & 0x03) |
421 | #define netxen_get_sts_opcode(status_desc) \ | 419 | #define netxen_get_sts_opcode(status_desc) \ |
422 | (((status_desc)->status_desc_data >> 58) & 0x03F) | 420 | ((le64_to_cpu((status_desc)->status_desc_data) >> 58) & 0x03F) |
423 | 421 | ||
424 | #define netxen_clear_sts_owner(status_desc) \ | 422 | #define netxen_clear_sts_owner(status_desc) \ |
425 | ((status_desc)->status_desc_data &= \ | 423 | ((status_desc)->status_desc_data &= \ |
426 | ~(((unsigned long long)3) << 56 )) | 424 | ~cpu_to_le64(((unsigned long long)3) << 56 )) |
427 | #define netxen_set_sts_owner(status_desc, val) \ | 425 | #define netxen_set_sts_owner(status_desc, val) \ |
428 | ((status_desc)->status_desc_data |= \ | 426 | ((status_desc)->status_desc_data |= \ |
429 | (((unsigned long long)((val) & 0x3)) << 56 )) | 427 | cpu_to_le64(((unsigned long long)((val) & 0x3)) << 56 )) |
430 | 428 | ||
431 | struct status_desc { | 429 | struct status_desc { |
432 | /* Bit pattern: 0-3 port, 4-7 status, 8-11 type, 12-27 total_length | 430 | /* Bit pattern: 0-3 port, 4-7 status, 8-11 type, 12-27 total_length |
433 | 28-43 reference_handle, 44-47 protocol, 48-52 unused | 431 | 28-43 reference_handle, 44-47 protocol, 48-52 unused |
434 | 53-55 desc_cnt, 56-57 owner, 58-63 opcode | 432 | 53-55 desc_cnt, 56-57 owner, 58-63 opcode |
435 | */ | 433 | */ |
436 | u64 status_desc_data; | 434 | __le64 status_desc_data; |
437 | u32 hash_value; | 435 | __le32 hash_value; |
438 | u8 hash_type; | 436 | u8 hash_type; |
439 | u8 msg_type; | 437 | u8 msg_type; |
440 | u8 unused; | 438 | u8 unused; |
@@ -1005,9 +1003,9 @@ void netxen_niu_gbe_set_mii_mode(struct netxen_adapter *adapter, int port, | |||
1005 | void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port, | 1003 | void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port, |
1006 | long enable); | 1004 | long enable); |
1007 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, | 1005 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, |
1008 | __le32 * readval); | 1006 | __u32 * readval); |
1009 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, | 1007 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, |
1010 | long reg, __le32 val); | 1008 | long reg, __u32 val); |
1011 | 1009 | ||
1012 | /* Functions available from netxen_nic_hw.c */ | 1010 | /* Functions available from netxen_nic_hw.c */ |
1013 | int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); | 1011 | int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); |
@@ -1034,6 +1032,15 @@ void netxen_phantom_init(struct netxen_adapter *adapter, int pegtune_val); | |||
1034 | void netxen_load_firmware(struct netxen_adapter *adapter); | 1032 | void netxen_load_firmware(struct netxen_adapter *adapter); |
1035 | int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose); | 1033 | int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose); |
1036 | int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr, int *valp); | 1034 | int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr, int *valp); |
1035 | int netxen_rom_fast_read_words(struct netxen_adapter *adapter, int addr, | ||
1036 | u8 *bytes, size_t size); | ||
1037 | int netxen_rom_fast_write_words(struct netxen_adapter *adapter, int addr, | ||
1038 | u8 *bytes, size_t size); | ||
1039 | int netxen_flash_unlock(struct netxen_adapter *adapter); | ||
1040 | int netxen_backup_crbinit(struct netxen_adapter *adapter); | ||
1041 | int netxen_flash_erase_secondary(struct netxen_adapter *adapter); | ||
1042 | int netxen_flash_erase_primary(struct netxen_adapter *adapter); | ||
1043 | |||
1037 | int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); | 1044 | int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); |
1038 | int netxen_rom_se(struct netxen_adapter *adapter, int addr); | 1045 | int netxen_rom_se(struct netxen_adapter *adapter, int addr); |
1039 | int netxen_do_rom_se(struct netxen_adapter *adapter, int addr); | 1046 | int netxen_do_rom_se(struct netxen_adapter *adapter, int addr); |