aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/netxen/netxen_nic.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/netxen/netxen_nic.h')
-rw-r--r--drivers/net/netxen/netxen_nic.h153
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
240typedef u32 netxen_ctx_msg; 244typedef 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
260struct netxen_rcv_context { 257struct 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
267struct netxen_ring_ctx { 263struct 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
322struct cmd_desc_type0 { 320struct 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 */
378struct rcv_desc { 376struct 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
431struct status_desc { 429struct 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,
1005void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port, 1003void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port,
1006 long enable); 1004 long enable);
1007int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, 1005int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg,
1008 __le32 * readval); 1006 __u32 * readval);
1009int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, 1007int 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 */
1013int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); 1011int 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);
1034void netxen_load_firmware(struct netxen_adapter *adapter); 1032void netxen_load_firmware(struct netxen_adapter *adapter);
1035int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose); 1033int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose);
1036int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr, int *valp); 1034int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr, int *valp);
1035int netxen_rom_fast_read_words(struct netxen_adapter *adapter, int addr,
1036 u8 *bytes, size_t size);
1037int netxen_rom_fast_write_words(struct netxen_adapter *adapter, int addr,
1038 u8 *bytes, size_t size);
1039int netxen_flash_unlock(struct netxen_adapter *adapter);
1040int netxen_backup_crbinit(struct netxen_adapter *adapter);
1041int netxen_flash_erase_secondary(struct netxen_adapter *adapter);
1042int netxen_flash_erase_primary(struct netxen_adapter *adapter);
1043
1037int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data); 1044int netxen_rom_fast_write(struct netxen_adapter *adapter, int addr, int data);
1038int netxen_rom_se(struct netxen_adapter *adapter, int addr); 1045int netxen_rom_se(struct netxen_adapter *adapter, int addr);
1039int netxen_do_rom_se(struct netxen_adapter *adapter, int addr); 1046int netxen_do_rom_se(struct netxen_adapter *adapter, int addr);