diff options
Diffstat (limited to 'drivers/net/netxen')
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 136 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_ethtool.c | 22 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.c | 43 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.h | 74 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 15 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_isr.c | 4 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 8 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_niu.c | 106 |
8 files changed, 196 insertions, 212 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 59324b1693d6..e8598b809228 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -239,49 +239,39 @@ extern unsigned long long netxen_dma_mask; | |||
239 | 239 | ||
240 | typedef u32 netxen_ctx_msg; | 240 | typedef u32 netxen_ctx_msg; |
241 | 241 | ||
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) \ | 242 | #define netxen_set_msg_peg_id(config_word, val) \ |
250 | _netxen_set_bits(config_word, 0, 2, val) | 243 | ((config_word) &= ~3, (config_word) |= val & 3) |
251 | #define netxen_set_msg_privid(config_word) \ | 244 | #define netxen_set_msg_privid(config_word) \ |
252 | set_bit(2, (unsigned long*)&config_word) | 245 | ((config_word) |= 1 << 2) |
253 | #define netxen_set_msg_count(config_word, val) \ | 246 | #define netxen_set_msg_count(config_word, val) \ |
254 | _netxen_set_bits(config_word, 3, 15, val) | 247 | ((config_word) &= ~(0x7fff<<3), (config_word) |= (val & 0x7fff) << 3) |
255 | #define netxen_set_msg_ctxid(config_word, val) \ | 248 | #define netxen_set_msg_ctxid(config_word, val) \ |
256 | _netxen_set_bits(config_word, 18, 10, val) | 249 | ((config_word) &= ~(0x3ff<<18), (config_word) |= (val & 0x3ff) << 18) |
257 | #define netxen_set_msg_opcode(config_word, val) \ | 250 | #define netxen_set_msg_opcode(config_word, val) \ |
258 | _netxen_set_bits(config_word, 28, 4, val) | 251 | ((config_word) &= ~(0xf<<24), (config_word) |= (val & 0xf) << 24) |
259 | 252 | ||
260 | struct netxen_rcv_context { | 253 | struct netxen_rcv_context { |
261 | u32 rcv_ring_addr_lo; | 254 | __le64 rcv_ring_addr; |
262 | u32 rcv_ring_addr_hi; | 255 | __le32 rcv_ring_size; |
263 | u32 rcv_ring_size; | 256 | __le32 rsrvd; |
264 | u32 rsrvd; | ||
265 | }; | 257 | }; |
266 | 258 | ||
267 | struct netxen_ring_ctx { | 259 | struct netxen_ring_ctx { |
268 | 260 | ||
269 | /* one command ring */ | 261 | /* one command ring */ |
270 | u64 cmd_consumer_offset; | 262 | __le64 cmd_consumer_offset; |
271 | u32 cmd_ring_addr_lo; | 263 | __le64 cmd_ring_addr; |
272 | u32 cmd_ring_addr_hi; | 264 | __le32 cmd_ring_size; |
273 | u32 cmd_ring_size; | 265 | __le32 rsrvd; |
274 | u32 rsrvd; | ||
275 | 266 | ||
276 | /* three receive rings */ | 267 | /* three receive rings */ |
277 | struct netxen_rcv_context rcv_ctx[3]; | 268 | struct netxen_rcv_context rcv_ctx[3]; |
278 | 269 | ||
279 | /* one status ring */ | 270 | /* one status ring */ |
280 | u32 sts_ring_addr_lo; | 271 | __le64 sts_ring_addr; |
281 | u32 sts_ring_addr_hi; | 272 | __le32 sts_ring_size; |
282 | u32 sts_ring_size; | ||
283 | 273 | ||
284 | u32 ctx_id; | 274 | __le32 ctx_id; |
285 | } __attribute__ ((aligned(64))); | 275 | } __attribute__ ((aligned(64))); |
286 | 276 | ||
287 | /* | 277 | /* |
@@ -305,81 +295,85 @@ struct netxen_ring_ctx { | |||
305 | ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) | 295 | ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) |
306 | 296 | ||
307 | #define netxen_set_cmd_desc_flags(cmd_desc, val) \ | 297 | #define netxen_set_cmd_desc_flags(cmd_desc, val) \ |
308 | _netxen_set_bits((cmd_desc)->flags_opcode, 0, 7, val) | 298 | ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x7f), \ |
299 | (cmd_desc)->flags_opcode |= cpu_to_le16((val) & 0x7f)) | ||
309 | #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ | 300 | #define netxen_set_cmd_desc_opcode(cmd_desc, val) \ |
310 | _netxen_set_bits((cmd_desc)->flags_opcode, 7, 6, val) | 301 | ((cmd_desc)->flags_opcode &= ~cpu_to_le16(0x3f<<7), \ |
302 | (cmd_desc)->flags_opcode |= cpu_to_le16((val) & (0x3f<<7))) | ||
311 | 303 | ||
312 | #define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ | 304 | #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); | 305 | ((cmd_desc)->num_of_buffers_total_length &= ~cpu_to_le32(0xff), \ |
306 | (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32((val) & 0xff)) | ||
314 | #define netxen_set_cmd_desc_totallength(cmd_desc, val) \ | 307 | #define netxen_set_cmd_desc_totallength(cmd_desc, val) \ |
315 | _netxen_set_bits((cmd_desc)->num_of_buffers_total_length, 8, 24, val); | 308 | ((cmd_desc)->num_of_buffers_total_length &= cpu_to_le32(0xff), \ |
309 | (cmd_desc)->num_of_buffers_total_length |= cpu_to_le32(val << 24)) | ||
316 | 310 | ||
317 | #define netxen_get_cmd_desc_opcode(cmd_desc) \ | 311 | #define netxen_get_cmd_desc_opcode(cmd_desc) \ |
318 | (((cmd_desc)->flags_opcode >> 7) & 0x003F) | 312 | ((le16_to_cpu((cmd_desc)->flags_opcode) >> 7) & 0x003F) |
319 | #define netxen_get_cmd_desc_totallength(cmd_desc) \ | 313 | #define netxen_get_cmd_desc_totallength(cmd_desc) \ |
320 | (((cmd_desc)->num_of_buffers_total_length >> 8) & 0x0FFFFFF) | 314 | (le32_to_cpu((cmd_desc)->num_of_buffers_total_length) >> 8) |
321 | 315 | ||
322 | struct cmd_desc_type0 { | 316 | struct cmd_desc_type0 { |
323 | u8 tcp_hdr_offset; /* For LSO only */ | 317 | u8 tcp_hdr_offset; /* For LSO only */ |
324 | u8 ip_hdr_offset; /* For LSO only */ | 318 | u8 ip_hdr_offset; /* For LSO only */ |
325 | /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */ | 319 | /* Bit pattern: 0-6 flags, 7-12 opcode, 13-15 unused */ |
326 | u16 flags_opcode; | 320 | __le16 flags_opcode; |
327 | /* Bit pattern: 0-7 total number of segments, | 321 | /* Bit pattern: 0-7 total number of segments, |
328 | 8-31 Total size of the packet */ | 322 | 8-31 Total size of the packet */ |
329 | u32 num_of_buffers_total_length; | 323 | __le32 num_of_buffers_total_length; |
330 | union { | 324 | union { |
331 | struct { | 325 | struct { |
332 | u32 addr_low_part2; | 326 | __le32 addr_low_part2; |
333 | u32 addr_high_part2; | 327 | __le32 addr_high_part2; |
334 | }; | 328 | }; |
335 | u64 addr_buffer2; | 329 | __le64 addr_buffer2; |
336 | }; | 330 | }; |
337 | 331 | ||
338 | u16 reference_handle; /* changed to u16 to add mss */ | 332 | __le16 reference_handle; /* changed to u16 to add mss */ |
339 | u16 mss; /* passed by NDIS_PACKET for LSO */ | 333 | __le16 mss; /* passed by NDIS_PACKET for LSO */ |
340 | /* Bit pattern 0-3 port, 0-3 ctx id */ | 334 | /* Bit pattern 0-3 port, 0-3 ctx id */ |
341 | u8 port_ctxid; | 335 | u8 port_ctxid; |
342 | u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */ | 336 | u8 total_hdr_length; /* LSO only : MAC+IP+TCP Hdr size */ |
343 | u16 conn_id; /* IPSec offoad only */ | 337 | __le16 conn_id; /* IPSec offoad only */ |
344 | 338 | ||
345 | union { | 339 | union { |
346 | struct { | 340 | struct { |
347 | u32 addr_low_part3; | 341 | __le32 addr_low_part3; |
348 | u32 addr_high_part3; | 342 | __le32 addr_high_part3; |
349 | }; | 343 | }; |
350 | u64 addr_buffer3; | 344 | __le64 addr_buffer3; |
351 | }; | 345 | }; |
352 | union { | 346 | union { |
353 | struct { | 347 | struct { |
354 | u32 addr_low_part1; | 348 | __le32 addr_low_part1; |
355 | u32 addr_high_part1; | 349 | __le32 addr_high_part1; |
356 | }; | 350 | }; |
357 | u64 addr_buffer1; | 351 | __le64 addr_buffer1; |
358 | }; | 352 | }; |
359 | 353 | ||
360 | u16 buffer1_length; | 354 | __le16 buffer1_length; |
361 | u16 buffer2_length; | 355 | __le16 buffer2_length; |
362 | u16 buffer3_length; | 356 | __le16 buffer3_length; |
363 | u16 buffer4_length; | 357 | __le16 buffer4_length; |
364 | 358 | ||
365 | union { | 359 | union { |
366 | struct { | 360 | struct { |
367 | u32 addr_low_part4; | 361 | __le32 addr_low_part4; |
368 | u32 addr_high_part4; | 362 | __le32 addr_high_part4; |
369 | }; | 363 | }; |
370 | u64 addr_buffer4; | 364 | __le64 addr_buffer4; |
371 | }; | 365 | }; |
372 | 366 | ||
373 | u64 unused; | 367 | __le64 unused; |
374 | 368 | ||
375 | } __attribute__ ((aligned(64))); | 369 | } __attribute__ ((aligned(64))); |
376 | 370 | ||
377 | /* Note: sizeof(rcv_desc) should always be a mutliple of 2 */ | 371 | /* Note: sizeof(rcv_desc) should always be a mutliple of 2 */ |
378 | struct rcv_desc { | 372 | struct rcv_desc { |
379 | u16 reference_handle; | 373 | __le16 reference_handle; |
380 | u16 reserved; | 374 | __le16 reserved; |
381 | u32 buffer_length; /* allocated buffer length (usually 2K) */ | 375 | __le32 buffer_length; /* allocated buffer length (usually 2K) */ |
382 | u64 addr_buffer; | 376 | __le64 addr_buffer; |
383 | }; | 377 | }; |
384 | 378 | ||
385 | /* opcode field in status_desc */ | 379 | /* opcode field in status_desc */ |
@@ -405,36 +399,36 @@ struct rcv_desc { | |||
405 | (((status_desc)->lro & 0x80) >> 7) | 399 | (((status_desc)->lro & 0x80) >> 7) |
406 | 400 | ||
407 | #define netxen_get_sts_port(status_desc) \ | 401 | #define netxen_get_sts_port(status_desc) \ |
408 | ((status_desc)->status_desc_data & 0x0F) | 402 | (le64_to_cpu((status_desc)->status_desc_data) & 0x0F) |
409 | #define netxen_get_sts_status(status_desc) \ | 403 | #define netxen_get_sts_status(status_desc) \ |
410 | (((status_desc)->status_desc_data >> 4) & 0x0F) | 404 | ((le64_to_cpu((status_desc)->status_desc_data) >> 4) & 0x0F) |
411 | #define netxen_get_sts_type(status_desc) \ | 405 | #define netxen_get_sts_type(status_desc) \ |
412 | (((status_desc)->status_desc_data >> 8) & 0x0F) | 406 | ((le64_to_cpu((status_desc)->status_desc_data) >> 8) & 0x0F) |
413 | #define netxen_get_sts_totallength(status_desc) \ | 407 | #define netxen_get_sts_totallength(status_desc) \ |
414 | (((status_desc)->status_desc_data >> 12) & 0xFFFF) | 408 | ((le64_to_cpu((status_desc)->status_desc_data) >> 12) & 0xFFFF) |
415 | #define netxen_get_sts_refhandle(status_desc) \ | 409 | #define netxen_get_sts_refhandle(status_desc) \ |
416 | (((status_desc)->status_desc_data >> 28) & 0xFFFF) | 410 | ((le64_to_cpu((status_desc)->status_desc_data) >> 28) & 0xFFFF) |
417 | #define netxen_get_sts_prot(status_desc) \ | 411 | #define netxen_get_sts_prot(status_desc) \ |
418 | (((status_desc)->status_desc_data >> 44) & 0x0F) | 412 | ((le64_to_cpu((status_desc)->status_desc_data) >> 44) & 0x0F) |
419 | #define netxen_get_sts_owner(status_desc) \ | 413 | #define netxen_get_sts_owner(status_desc) \ |
420 | (((status_desc)->status_desc_data >> 56) & 0x03) | 414 | ((le64_to_cpu((status_desc)->status_desc_data) >> 56) & 0x03) |
421 | #define netxen_get_sts_opcode(status_desc) \ | 415 | #define netxen_get_sts_opcode(status_desc) \ |
422 | (((status_desc)->status_desc_data >> 58) & 0x03F) | 416 | ((le64_to_cpu((status_desc)->status_desc_data) >> 58) & 0x03F) |
423 | 417 | ||
424 | #define netxen_clear_sts_owner(status_desc) \ | 418 | #define netxen_clear_sts_owner(status_desc) \ |
425 | ((status_desc)->status_desc_data &= \ | 419 | ((status_desc)->status_desc_data &= \ |
426 | ~(((unsigned long long)3) << 56 )) | 420 | ~cpu_to_le64(((unsigned long long)3) << 56 )) |
427 | #define netxen_set_sts_owner(status_desc, val) \ | 421 | #define netxen_set_sts_owner(status_desc, val) \ |
428 | ((status_desc)->status_desc_data |= \ | 422 | ((status_desc)->status_desc_data |= \ |
429 | (((unsigned long long)((val) & 0x3)) << 56 )) | 423 | cpu_to_le64(((unsigned long long)((val) & 0x3)) << 56 )) |
430 | 424 | ||
431 | struct status_desc { | 425 | struct status_desc { |
432 | /* Bit pattern: 0-3 port, 4-7 status, 8-11 type, 12-27 total_length | 426 | /* 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 | 427 | 28-43 reference_handle, 44-47 protocol, 48-52 unused |
434 | 53-55 desc_cnt, 56-57 owner, 58-63 opcode | 428 | 53-55 desc_cnt, 56-57 owner, 58-63 opcode |
435 | */ | 429 | */ |
436 | u64 status_desc_data; | 430 | __le64 status_desc_data; |
437 | u32 hash_value; | 431 | __le32 hash_value; |
438 | u8 hash_type; | 432 | u8 hash_type; |
439 | u8 msg_type; | 433 | u8 msg_type; |
440 | u8 unused; | 434 | u8 unused; |
@@ -1005,9 +999,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, | 999 | void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port, |
1006 | long enable); | 1000 | long enable); |
1007 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, | 1001 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg, |
1008 | __le32 * readval); | 1002 | __u32 * readval); |
1009 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, | 1003 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy, |
1010 | long reg, __le32 val); | 1004 | long reg, __u32 val); |
1011 | 1005 | ||
1012 | /* Functions available from netxen_nic_hw.c */ | 1006 | /* Functions available from netxen_nic_hw.c */ |
1013 | int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); | 1007 | int netxen_nic_set_mtu_xgb(struct netxen_port *port, int new_mtu); |
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index 34044616b3c8..c381d77a7336 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
@@ -218,7 +218,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
218 | { | 218 | { |
219 | struct netxen_port *port = netdev_priv(dev); | 219 | struct netxen_port *port = netdev_priv(dev); |
220 | struct netxen_adapter *adapter = port->adapter; | 220 | struct netxen_adapter *adapter = port->adapter; |
221 | __le32 status; | 221 | __u32 status; |
222 | 222 | ||
223 | /* read which mode */ | 223 | /* read which mode */ |
224 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { | 224 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { |
@@ -226,7 +226,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
226 | if (adapter->phy_write | 226 | if (adapter->phy_write |
227 | && adapter->phy_write(adapter, port->portnum, | 227 | && adapter->phy_write(adapter, port->portnum, |
228 | NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, | 228 | NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, |
229 | (__le32) ecmd->autoneg) != 0) | 229 | ecmd->autoneg) != 0) |
230 | return -EIO; | 230 | return -EIO; |
231 | else | 231 | else |
232 | port->link_autoneg = ecmd->autoneg; | 232 | port->link_autoneg = ecmd->autoneg; |
@@ -279,7 +279,7 @@ static int netxen_nic_get_regs_len(struct net_device *dev) | |||
279 | } | 279 | } |
280 | 280 | ||
281 | struct netxen_niu_regs { | 281 | struct netxen_niu_regs { |
282 | __le32 reg[NETXEN_NIC_REGS_COUNT]; | 282 | __u32 reg[NETXEN_NIC_REGS_COUNT]; |
283 | }; | 283 | }; |
284 | 284 | ||
285 | static struct netxen_niu_regs niu_registers[] = { | 285 | static struct netxen_niu_regs niu_registers[] = { |
@@ -372,7 +372,7 @@ netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p) | |||
372 | { | 372 | { |
373 | struct netxen_port *port = netdev_priv(dev); | 373 | struct netxen_port *port = netdev_priv(dev); |
374 | struct netxen_adapter *adapter = port->adapter; | 374 | struct netxen_adapter *adapter = port->adapter; |
375 | __le32 mode, *regs_buff = p; | 375 | __u32 mode, *regs_buff = p; |
376 | void __iomem *addr; | 376 | void __iomem *addr; |
377 | int i, window; | 377 | int i, window; |
378 | 378 | ||
@@ -415,7 +415,7 @@ static u32 netxen_nic_get_link(struct net_device *dev) | |||
415 | { | 415 | { |
416 | struct netxen_port *port = netdev_priv(dev); | 416 | struct netxen_port *port = netdev_priv(dev); |
417 | struct netxen_adapter *adapter = port->adapter; | 417 | struct netxen_adapter *adapter = port->adapter; |
418 | __le32 status; | 418 | __u32 status; |
419 | 419 | ||
420 | /* read which mode */ | 420 | /* read which mode */ |
421 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { | 421 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { |
@@ -482,13 +482,13 @@ netxen_nic_get_pauseparam(struct net_device *dev, | |||
482 | { | 482 | { |
483 | struct netxen_port *port = netdev_priv(dev); | 483 | struct netxen_port *port = netdev_priv(dev); |
484 | struct netxen_adapter *adapter = port->adapter; | 484 | struct netxen_adapter *adapter = port->adapter; |
485 | __le32 val; | 485 | __u32 val; |
486 | 486 | ||
487 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { | 487 | if (adapter->ahw.board_type == NETXEN_NIC_GBE) { |
488 | /* get flow control settings */ | 488 | /* get flow control settings */ |
489 | netxen_nic_read_w0(adapter, | 489 | netxen_nic_read_w0(adapter, |
490 | NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), | 490 | NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), |
491 | (u32 *) & val); | 491 | &val); |
492 | pause->rx_pause = netxen_gb_get_rx_flowctl(val); | 492 | pause->rx_pause = netxen_gb_get_rx_flowctl(val); |
493 | pause->tx_pause = netxen_gb_get_tx_flowctl(val); | 493 | pause->tx_pause = netxen_gb_get_tx_flowctl(val); |
494 | /* get autoneg settings */ | 494 | /* get autoneg settings */ |
@@ -502,7 +502,7 @@ netxen_nic_set_pauseparam(struct net_device *dev, | |||
502 | { | 502 | { |
503 | struct netxen_port *port = netdev_priv(dev); | 503 | struct netxen_port *port = netdev_priv(dev); |
504 | struct netxen_adapter *adapter = port->adapter; | 504 | struct netxen_adapter *adapter = port->adapter; |
505 | __le32 val; | 505 | __u32 val; |
506 | unsigned int autoneg; | 506 | unsigned int autoneg; |
507 | 507 | ||
508 | /* read mode */ | 508 | /* read mode */ |
@@ -522,13 +522,13 @@ netxen_nic_set_pauseparam(struct net_device *dev, | |||
522 | 522 | ||
523 | netxen_nic_write_w0(adapter, | 523 | netxen_nic_write_w0(adapter, |
524 | NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), | 524 | NETXEN_NIU_GB_MAC_CONFIG_0(port->portnum), |
525 | *(u32 *) (&val)); | 525 | *&val); |
526 | /* set autoneg */ | 526 | /* set autoneg */ |
527 | autoneg = pause->autoneg; | 527 | autoneg = pause->autoneg; |
528 | if (adapter->phy_write | 528 | if (adapter->phy_write |
529 | && adapter->phy_write(adapter, port->portnum, | 529 | && adapter->phy_write(adapter, port->portnum, |
530 | NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, | 530 | NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, |
531 | (__le32) autoneg) != 0) | 531 | autoneg) != 0) |
532 | return -EIO; | 532 | return -EIO; |
533 | else { | 533 | else { |
534 | port->link_autoneg = pause->autoneg; | 534 | port->link_autoneg = pause->autoneg; |
@@ -543,7 +543,7 @@ static int netxen_nic_reg_test(struct net_device *dev) | |||
543 | struct netxen_port *port = netdev_priv(dev); | 543 | struct netxen_port *port = netdev_priv(dev); |
544 | struct netxen_adapter *adapter = port->adapter; | 544 | struct netxen_adapter *adapter = port->adapter; |
545 | u32 data_read, data_written, save; | 545 | u32 data_read, data_written, save; |
546 | __le32 mode; | 546 | __u32 mode; |
547 | 547 | ||
548 | /* | 548 | /* |
549 | * first test the "Read Only" registers by writing which mode | 549 | * first test the "Read Only" registers by writing which mode |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 191e2336e323..f263232f499f 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -95,7 +95,7 @@ void netxen_nic_set_multi(struct net_device *netdev) | |||
95 | struct netxen_port *port = netdev_priv(netdev); | 95 | struct netxen_port *port = netdev_priv(netdev); |
96 | struct netxen_adapter *adapter = port->adapter; | 96 | struct netxen_adapter *adapter = port->adapter; |
97 | struct dev_mc_list *mc_ptr; | 97 | struct dev_mc_list *mc_ptr; |
98 | __le32 netxen_mac_addr_cntl_data = 0; | 98 | __u32 netxen_mac_addr_cntl_data = 0; |
99 | 99 | ||
100 | mc_ptr = netdev->mc_list; | 100 | mc_ptr = netdev->mc_list; |
101 | if (netdev->flags & IFF_PROMISC) { | 101 | if (netdev->flags & IFF_PROMISC) { |
@@ -236,8 +236,9 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter) | |||
236 | } | 236 | } |
237 | memset(addr, 0, sizeof(struct netxen_ring_ctx)); | 237 | memset(addr, 0, sizeof(struct netxen_ring_ctx)); |
238 | adapter->ctx_desc = (struct netxen_ring_ctx *)addr; | 238 | adapter->ctx_desc = (struct netxen_ring_ctx *)addr; |
239 | adapter->ctx_desc->cmd_consumer_offset = adapter->ctx_desc_phys_addr | 239 | adapter->ctx_desc->cmd_consumer_offset = |
240 | + sizeof(struct netxen_ring_ctx); | 240 | cpu_to_le64(adapter->ctx_desc_phys_addr + |
241 | sizeof(struct netxen_ring_ctx)); | ||
241 | adapter->cmd_consumer = (uint32_t *) (((char *)addr) + | 242 | adapter->cmd_consumer = (uint32_t *) (((char *)addr) + |
242 | sizeof(struct netxen_ring_ctx)); | 243 | sizeof(struct netxen_ring_ctx)); |
243 | 244 | ||
@@ -253,11 +254,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter) | |||
253 | return -ENOMEM; | 254 | return -ENOMEM; |
254 | } | 255 | } |
255 | 256 | ||
256 | adapter->ctx_desc->cmd_ring_addr_lo = | 257 | adapter->ctx_desc->cmd_ring_addr = |
257 | hw->cmd_desc_phys_addr & 0xffffffffUL; | 258 | cpu_to_le64(hw->cmd_desc_phys_addr); |
258 | adapter->ctx_desc->cmd_ring_addr_hi = | 259 | adapter->ctx_desc->cmd_ring_size = |
259 | ((u64) hw->cmd_desc_phys_addr >> 32); | 260 | cpu_to_le32(adapter->max_tx_desc_count); |
260 | adapter->ctx_desc->cmd_ring_size = adapter->max_tx_desc_count; | ||
261 | 261 | ||
262 | hw->cmd_desc_head = (struct cmd_desc_type0 *)addr; | 262 | hw->cmd_desc_head = (struct cmd_desc_type0 *)addr; |
263 | 263 | ||
@@ -278,12 +278,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter) | |||
278 | return err; | 278 | return err; |
279 | } | 279 | } |
280 | rcv_desc->desc_head = (struct rcv_desc *)addr; | 280 | rcv_desc->desc_head = (struct rcv_desc *)addr; |
281 | adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr_lo = | 281 | adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr = |
282 | rcv_desc->phys_addr & 0xffffffffUL; | 282 | cpu_to_le64(rcv_desc->phys_addr); |
283 | adapter->ctx_desc->rcv_ctx[ring].rcv_ring_addr_hi = | ||
284 | ((u64) rcv_desc->phys_addr >> 32); | ||
285 | adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size = | 283 | adapter->ctx_desc->rcv_ctx[ring].rcv_ring_size = |
286 | rcv_desc->max_rx_desc_count; | 284 | cpu_to_le32(rcv_desc->max_rx_desc_count); |
287 | } | 285 | } |
288 | 286 | ||
289 | addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE, | 287 | addr = netxen_alloc(adapter->ahw.pdev, STATUS_DESC_RINGSIZE, |
@@ -297,11 +295,10 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter) | |||
297 | return err; | 295 | return err; |
298 | } | 296 | } |
299 | recv_ctx->rcv_status_desc_head = (struct status_desc *)addr; | 297 | recv_ctx->rcv_status_desc_head = (struct status_desc *)addr; |
300 | adapter->ctx_desc->sts_ring_addr_lo = | 298 | adapter->ctx_desc->sts_ring_addr = |
301 | recv_ctx->rcv_status_desc_phys_addr & 0xffffffffUL; | 299 | cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr); |
302 | adapter->ctx_desc->sts_ring_addr_hi = | 300 | adapter->ctx_desc->sts_ring_size = |
303 | ((u64) recv_ctx->rcv_status_desc_phys_addr >> 32); | 301 | cpu_to_le32(adapter->max_rx_desc_count); |
304 | adapter->ctx_desc->sts_ring_size = adapter->max_rx_desc_count; | ||
305 | 302 | ||
306 | } | 303 | } |
307 | /* Window = 1 */ | 304 | /* Window = 1 */ |
@@ -387,10 +384,6 @@ void netxen_tso_check(struct netxen_adapter *adapter, | |||
387 | } | 384 | } |
388 | adapter->stats.xmitcsummed++; | 385 | adapter->stats.xmitcsummed++; |
389 | desc->tcp_hdr_offset = skb->h.raw - skb->data; | 386 | desc->tcp_hdr_offset = skb->h.raw - skb->data; |
390 | netxen_set_cmd_desc_totallength(desc, | ||
391 | cpu_to_le32 | ||
392 | (netxen_get_cmd_desc_totallength | ||
393 | (desc))); | ||
394 | desc->ip_hdr_offset = skb->nh.raw - skb->data; | 387 | desc->ip_hdr_offset = skb->nh.raw - skb->data; |
395 | } | 388 | } |
396 | 389 | ||
@@ -867,9 +860,9 @@ netxen_crb_writelit_adapter(struct netxen_adapter *adapter, unsigned long off, | |||
867 | void netxen_nic_set_link_parameters(struct netxen_port *port) | 860 | void netxen_nic_set_link_parameters(struct netxen_port *port) |
868 | { | 861 | { |
869 | struct netxen_adapter *adapter = port->adapter; | 862 | struct netxen_adapter *adapter = port->adapter; |
870 | __le32 status; | 863 | __u32 status; |
871 | __le32 autoneg; | 864 | __u32 autoneg; |
872 | __le32 mode; | 865 | __u32 mode; |
873 | 866 | ||
874 | netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); | 867 | netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); |
875 | if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ | 868 | if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ |
diff --git a/drivers/net/netxen/netxen_nic_hw.h b/drivers/net/netxen/netxen_nic_hw.h index 0685633a9c1e..ab1112eb1b0d 100644 --- a/drivers/net/netxen/netxen_nic_hw.h +++ b/drivers/net/netxen/netxen_nic_hw.h | |||
@@ -124,28 +124,28 @@ typedef enum { | |||
124 | */ | 124 | */ |
125 | 125 | ||
126 | #define netxen_gb_enable_tx(config_word) \ | 126 | #define netxen_gb_enable_tx(config_word) \ |
127 | set_bit(0, (unsigned long*)(&config_word)) | 127 | ((config_word) |= 1 << 0) |
128 | #define netxen_gb_enable_rx(config_word) \ | 128 | #define netxen_gb_enable_rx(config_word) \ |
129 | set_bit(2, (unsigned long*)(&config_word)) | 129 | ((config_word) |= 1 << 2) |
130 | #define netxen_gb_tx_flowctl(config_word) \ | 130 | #define netxen_gb_tx_flowctl(config_word) \ |
131 | set_bit(4, (unsigned long*)(&config_word)) | 131 | ((config_word) |= 1 << 4) |
132 | #define netxen_gb_rx_flowctl(config_word) \ | 132 | #define netxen_gb_rx_flowctl(config_word) \ |
133 | set_bit(5, (unsigned long*)(&config_word)) | 133 | ((config_word) |= 1 << 5) |
134 | #define netxen_gb_tx_reset_pb(config_word) \ | 134 | #define netxen_gb_tx_reset_pb(config_word) \ |
135 | set_bit(16, (unsigned long*)(&config_word)) | 135 | ((config_word) |= 1 << 16) |
136 | #define netxen_gb_rx_reset_pb(config_word) \ | 136 | #define netxen_gb_rx_reset_pb(config_word) \ |
137 | set_bit(17, (unsigned long*)(&config_word)) | 137 | ((config_word) |= 1 << 17) |
138 | #define netxen_gb_tx_reset_mac(config_word) \ | 138 | #define netxen_gb_tx_reset_mac(config_word) \ |
139 | set_bit(18, (unsigned long*)(&config_word)) | 139 | ((config_word) |= 1 << 18) |
140 | #define netxen_gb_rx_reset_mac(config_word) \ | 140 | #define netxen_gb_rx_reset_mac(config_word) \ |
141 | set_bit(19, (unsigned long*)(&config_word)) | 141 | ((config_word) |= 1 << 19) |
142 | #define netxen_gb_soft_reset(config_word) \ | 142 | #define netxen_gb_soft_reset(config_word) \ |
143 | set_bit(31, (unsigned long*)(&config_word)) | 143 | ((config_word) |= 1 << 31) |
144 | 144 | ||
145 | #define netxen_gb_unset_tx_flowctl(config_word) \ | 145 | #define netxen_gb_unset_tx_flowctl(config_word) \ |
146 | clear_bit(4, (unsigned long *)(&config_word)) | 146 | ((config_word) &= ~(1 << 4)) |
147 | #define netxen_gb_unset_rx_flowctl(config_word) \ | 147 | #define netxen_gb_unset_rx_flowctl(config_word) \ |
148 | clear_bit(5, (unsigned long*)(&config_word)) | 148 | ((config_word) &= ~(1 << 5)) |
149 | 149 | ||
150 | #define netxen_gb_get_tx_synced(config_word) \ | 150 | #define netxen_gb_get_tx_synced(config_word) \ |
151 | _netxen_crb_get_bit((config_word), 1) | 151 | _netxen_crb_get_bit((config_word), 1) |
@@ -171,15 +171,15 @@ typedef enum { | |||
171 | */ | 171 | */ |
172 | 172 | ||
173 | #define netxen_gb_set_duplex(config_word) \ | 173 | #define netxen_gb_set_duplex(config_word) \ |
174 | set_bit(0, (unsigned long*)&config_word) | 174 | ((config_word) |= 1 << 0) |
175 | #define netxen_gb_set_crc_enable(config_word) \ | 175 | #define netxen_gb_set_crc_enable(config_word) \ |
176 | set_bit(1, (unsigned long*)&config_word) | 176 | ((config_word) |= 1 << 1) |
177 | #define netxen_gb_set_padshort(config_word) \ | 177 | #define netxen_gb_set_padshort(config_word) \ |
178 | set_bit(2, (unsigned long*)&config_word) | 178 | ((config_word) |= 1 << 2) |
179 | #define netxen_gb_set_checklength(config_word) \ | 179 | #define netxen_gb_set_checklength(config_word) \ |
180 | set_bit(4, (unsigned long*)&config_word) | 180 | ((config_word) |= 1 << 4) |
181 | #define netxen_gb_set_hugeframes(config_word) \ | 181 | #define netxen_gb_set_hugeframes(config_word) \ |
182 | set_bit(5, (unsigned long*)&config_word) | 182 | ((config_word) |= 1 << 5) |
183 | #define netxen_gb_set_preamblelen(config_word, val) \ | 183 | #define netxen_gb_set_preamblelen(config_word, val) \ |
184 | ((config_word) |= ((val) << 12) & 0xF000) | 184 | ((config_word) |= ((val) << 12) & 0xF000) |
185 | #define netxen_gb_set_intfmode(config_word, val) \ | 185 | #define netxen_gb_set_intfmode(config_word, val) \ |
@@ -190,9 +190,9 @@ typedef enum { | |||
190 | #define netxen_gb_set_mii_mgmt_clockselect(config_word, val) \ | 190 | #define netxen_gb_set_mii_mgmt_clockselect(config_word, val) \ |
191 | ((config_word) |= ((val) & 0x07)) | 191 | ((config_word) |= ((val) & 0x07)) |
192 | #define netxen_gb_mii_mgmt_reset(config_word) \ | 192 | #define netxen_gb_mii_mgmt_reset(config_word) \ |
193 | set_bit(31, (unsigned long*)&config_word) | 193 | ((config_word) |= 1 << 31) |
194 | #define netxen_gb_mii_mgmt_unset(config_word) \ | 194 | #define netxen_gb_mii_mgmt_unset(config_word) \ |
195 | clear_bit(31, (unsigned long*)&config_word) | 195 | ((config_word) &= ~(1 << 31)) |
196 | 196 | ||
197 | /* | 197 | /* |
198 | * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3) | 198 | * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3) |
@@ -201,7 +201,7 @@ typedef enum { | |||
201 | */ | 201 | */ |
202 | 202 | ||
203 | #define netxen_gb_mii_mgmt_set_read_cycle(config_word) \ | 203 | #define netxen_gb_mii_mgmt_set_read_cycle(config_word) \ |
204 | set_bit(0, (unsigned long*)&config_word) | 204 | ((config_word) |= 1 << 0) |
205 | #define netxen_gb_mii_mgmt_reg_addr(config_word, val) \ | 205 | #define netxen_gb_mii_mgmt_reg_addr(config_word, val) \ |
206 | ((config_word) |= ((val) & 0x1F)) | 206 | ((config_word) |= ((val) & 0x1F)) |
207 | #define netxen_gb_mii_mgmt_phy_addr(config_word, val) \ | 207 | #define netxen_gb_mii_mgmt_phy_addr(config_word, val) \ |
@@ -274,9 +274,9 @@ typedef enum { | |||
274 | #define netxen_set_phy_speed(config_word, val) \ | 274 | #define netxen_set_phy_speed(config_word, val) \ |
275 | ((config_word) |= ((val & 0x03) << 14)) | 275 | ((config_word) |= ((val & 0x03) << 14)) |
276 | #define netxen_set_phy_duplex(config_word) \ | 276 | #define netxen_set_phy_duplex(config_word) \ |
277 | set_bit(13, (unsigned long*)&config_word) | 277 | ((config_word) |= 1 << 13) |
278 | #define netxen_clear_phy_duplex(config_word) \ | 278 | #define netxen_clear_phy_duplex(config_word) \ |
279 | clear_bit(13, (unsigned long*)&config_word) | 279 | ((config_word) &= ~(1 << 13)) |
280 | 280 | ||
281 | #define netxen_get_phy_jabber(config_word) \ | 281 | #define netxen_get_phy_jabber(config_word) \ |
282 | _netxen_crb_get_bit(config_word, 0) | 282 | _netxen_crb_get_bit(config_word, 0) |
@@ -350,11 +350,11 @@ typedef enum { | |||
350 | _netxen_crb_get_bit(config_word, 15) | 350 | _netxen_crb_get_bit(config_word, 15) |
351 | 351 | ||
352 | #define netxen_set_phy_int_link_status_changed(config_word) \ | 352 | #define netxen_set_phy_int_link_status_changed(config_word) \ |
353 | set_bit(10, (unsigned long*)&config_word) | 353 | ((config_word) |= 1 << 10) |
354 | #define netxen_set_phy_int_autoneg_completed(config_word) \ | 354 | #define netxen_set_phy_int_autoneg_completed(config_word) \ |
355 | set_bit(11, (unsigned long*)&config_word) | 355 | ((config_word) |= 1 << 11) |
356 | #define netxen_set_phy_int_speed_changed(config_word) \ | 356 | #define netxen_set_phy_int_speed_changed(config_word) \ |
357 | set_bit(14, (unsigned long*)&config_word) | 357 | ((config_word) |= 1 << 14) |
358 | 358 | ||
359 | /* | 359 | /* |
360 | * NIU Mode Register. | 360 | * NIU Mode Register. |
@@ -382,22 +382,22 @@ typedef enum { | |||
382 | */ | 382 | */ |
383 | 383 | ||
384 | #define netxen_set_gb_drop_gb0(config_word) \ | 384 | #define netxen_set_gb_drop_gb0(config_word) \ |
385 | set_bit(0, (unsigned long*)&config_word) | 385 | ((config_word) |= 1 << 0) |
386 | #define netxen_set_gb_drop_gb1(config_word) \ | 386 | #define netxen_set_gb_drop_gb1(config_word) \ |
387 | set_bit(1, (unsigned long*)&config_word) | 387 | ((config_word) |= 1 << 1) |
388 | #define netxen_set_gb_drop_gb2(config_word) \ | 388 | #define netxen_set_gb_drop_gb2(config_word) \ |
389 | set_bit(2, (unsigned long*)&config_word) | 389 | ((config_word) |= 1 << 2) |
390 | #define netxen_set_gb_drop_gb3(config_word) \ | 390 | #define netxen_set_gb_drop_gb3(config_word) \ |
391 | set_bit(3, (unsigned long*)&config_word) | 391 | ((config_word) |= 1 << 3) |
392 | 392 | ||
393 | #define netxen_clear_gb_drop_gb0(config_word) \ | 393 | #define netxen_clear_gb_drop_gb0(config_word) \ |
394 | clear_bit(0, (unsigned long*)&config_word) | 394 | ((config_word) &= ~(1 << 0)) |
395 | #define netxen_clear_gb_drop_gb1(config_word) \ | 395 | #define netxen_clear_gb_drop_gb1(config_word) \ |
396 | clear_bit(1, (unsigned long*)&config_word) | 396 | ((config_word) &= ~(1 << 1)) |
397 | #define netxen_clear_gb_drop_gb2(config_word) \ | 397 | #define netxen_clear_gb_drop_gb2(config_word) \ |
398 | clear_bit(2, (unsigned long*)&config_word) | 398 | ((config_word) &= ~(1 << 2)) |
399 | #define netxen_clear_gb_drop_gb3(config_word) \ | 399 | #define netxen_clear_gb_drop_gb3(config_word) \ |
400 | clear_bit(3, (unsigned long*)&config_word) | 400 | ((config_word) &= ~(1 << 3)) |
401 | 401 | ||
402 | /* | 402 | /* |
403 | * NIU XG MAC Config Register | 403 | * NIU XG MAC Config Register |
@@ -413,7 +413,7 @@ typedef enum { | |||
413 | */ | 413 | */ |
414 | 414 | ||
415 | #define netxen_xg_soft_reset(config_word) \ | 415 | #define netxen_xg_soft_reset(config_word) \ |
416 | set_bit(4, (unsigned long*)&config_word) | 416 | ((config_word) |= 1 << 4) |
417 | 417 | ||
418 | /* | 418 | /* |
419 | * MAC Control Register | 419 | * MAC Control Register |
@@ -433,19 +433,19 @@ typedef enum { | |||
433 | #define netxen_nic_mcr_set_id_pool0(config, val) \ | 433 | #define netxen_nic_mcr_set_id_pool0(config, val) \ |
434 | ((config) |= ((val) &0x03)) | 434 | ((config) |= ((val) &0x03)) |
435 | #define netxen_nic_mcr_set_enable_xtnd0(config) \ | 435 | #define netxen_nic_mcr_set_enable_xtnd0(config) \ |
436 | (set_bit(3, (unsigned long *)&(config))) | 436 | ((config) |= 1 << 3) |
437 | #define netxen_nic_mcr_set_id_pool1(config, val) \ | 437 | #define netxen_nic_mcr_set_id_pool1(config, val) \ |
438 | ((config) |= (((val) & 0x03) << 4)) | 438 | ((config) |= (((val) & 0x03) << 4)) |
439 | #define netxen_nic_mcr_set_enable_xtnd1(config) \ | 439 | #define netxen_nic_mcr_set_enable_xtnd1(config) \ |
440 | (set_bit(6, (unsigned long *)&(config))) | 440 | ((config) |= 1 << 6) |
441 | #define netxen_nic_mcr_set_id_pool2(config, val) \ | 441 | #define netxen_nic_mcr_set_id_pool2(config, val) \ |
442 | ((config) |= (((val) & 0x03) << 8)) | 442 | ((config) |= (((val) & 0x03) << 8)) |
443 | #define netxen_nic_mcr_set_enable_xtnd2(config) \ | 443 | #define netxen_nic_mcr_set_enable_xtnd2(config) \ |
444 | (set_bit(10, (unsigned long *)&(config))) | 444 | ((config) |= 1 << 10) |
445 | #define netxen_nic_mcr_set_id_pool3(config, val) \ | 445 | #define netxen_nic_mcr_set_id_pool3(config, val) \ |
446 | ((config) |= (((val) & 0x03) << 12)) | 446 | ((config) |= (((val) & 0x03) << 12)) |
447 | #define netxen_nic_mcr_set_enable_xtnd3(config) \ | 447 | #define netxen_nic_mcr_set_enable_xtnd3(config) \ |
448 | (set_bit(14, (unsigned long *)&(config))) | 448 | ((config) |= 1 << 14) |
449 | #define netxen_nic_mcr_set_mode_select(config, val) \ | 449 | #define netxen_nic_mcr_set_mode_select(config, val) \ |
450 | ((config) |= (((val) & 0x03) << 24)) | 450 | ((config) |= (((val) & 0x03) << 24)) |
451 | #define netxen_nic_mcr_set_enable_pool(config, val) \ | 451 | #define netxen_nic_mcr_set_enable_pool(config, val) \ |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index c3e41f368554..973af96337a9 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -690,8 +690,7 @@ int netxen_nic_rx_has_work(struct netxen_adapter *adapter) | |||
690 | desc_head = recv_ctx->rcv_status_desc_head; | 690 | desc_head = recv_ctx->rcv_status_desc_head; |
691 | desc = &desc_head[consumer]; | 691 | desc = &desc_head[consumer]; |
692 | 692 | ||
693 | if (((le16_to_cpu(netxen_get_sts_owner(desc))) | 693 | if (netxen_get_sts_owner(desc) & STATUS_OWNER_HOST) |
694 | & STATUS_OWNER_HOST)) | ||
695 | return 1; | 694 | return 1; |
696 | } | 695 | } |
697 | 696 | ||
@@ -787,11 +786,11 @@ netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, | |||
787 | struct netxen_port *port = adapter->port[netxen_get_sts_port(desc)]; | 786 | struct netxen_port *port = adapter->port[netxen_get_sts_port(desc)]; |
788 | struct pci_dev *pdev = port->pdev; | 787 | struct pci_dev *pdev = port->pdev; |
789 | struct net_device *netdev = port->netdev; | 788 | struct net_device *netdev = port->netdev; |
790 | int index = le16_to_cpu(netxen_get_sts_refhandle(desc)); | 789 | int index = netxen_get_sts_refhandle(desc); |
791 | struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctxid]); | 790 | struct netxen_recv_context *recv_ctx = &(adapter->recv_ctx[ctxid]); |
792 | struct netxen_rx_buffer *buffer; | 791 | struct netxen_rx_buffer *buffer; |
793 | struct sk_buff *skb; | 792 | struct sk_buff *skb; |
794 | u32 length = le16_to_cpu(netxen_get_sts_totallength(desc)); | 793 | u32 length = netxen_get_sts_totallength(desc); |
795 | u32 desc_ctx; | 794 | u32 desc_ctx; |
796 | struct netxen_rcv_desc_ctx *rcv_desc; | 795 | struct netxen_rcv_desc_ctx *rcv_desc; |
797 | int ret; | 796 | int ret; |
@@ -918,16 +917,14 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max) | |||
918 | */ | 917 | */ |
919 | while (count < max) { | 918 | while (count < max) { |
920 | desc = &desc_head[consumer]; | 919 | desc = &desc_head[consumer]; |
921 | if (! | 920 | if (!(netxen_get_sts_owner(desc) & STATUS_OWNER_HOST)) { |
922 | (le16_to_cpu(netxen_get_sts_owner(desc)) & | ||
923 | STATUS_OWNER_HOST)) { | ||
924 | DPRINTK(ERR, "desc %p ownedby %x\n", desc, | 921 | DPRINTK(ERR, "desc %p ownedby %x\n", desc, |
925 | netxen_get_sts_owner(desc)); | 922 | netxen_get_sts_owner(desc)); |
926 | break; | 923 | break; |
927 | } | 924 | } |
928 | netxen_process_rcv(adapter, ctxid, desc); | 925 | netxen_process_rcv(adapter, ctxid, desc); |
929 | netxen_clear_sts_owner(desc); | 926 | netxen_clear_sts_owner(desc); |
930 | netxen_set_sts_owner(desc, cpu_to_le16(STATUS_OWNER_PHANTOM)); | 927 | netxen_set_sts_owner(desc, STATUS_OWNER_PHANTOM); |
931 | consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1); | 928 | consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1); |
932 | count++; | 929 | count++; |
933 | } | 930 | } |
@@ -1232,7 +1229,7 @@ void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, uint32_t ctx, | |||
1232 | 1229 | ||
1233 | /* make a rcv descriptor */ | 1230 | /* make a rcv descriptor */ |
1234 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); | 1231 | pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); |
1235 | pdesc->buffer_length = cpu_to_le16(rcv_desc->dma_size); | 1232 | pdesc->buffer_length = cpu_to_le32(rcv_desc->dma_size); |
1236 | pdesc->addr_buffer = cpu_to_le64(buffer->dma); | 1233 | pdesc->addr_buffer = cpu_to_le64(buffer->dma); |
1237 | DPRINTK(INFO, "done writing descripter\n"); | 1234 | DPRINTK(INFO, "done writing descripter\n"); |
1238 | producer = | 1235 | producer = |
diff --git a/drivers/net/netxen/netxen_nic_isr.c b/drivers/net/netxen/netxen_nic_isr.c index 06847d4252c3..be366e48007c 100644 --- a/drivers/net/netxen/netxen_nic_isr.c +++ b/drivers/net/netxen/netxen_nic_isr.c | |||
@@ -79,7 +79,7 @@ void netxen_indicate_link_status(struct netxen_adapter *adapter, u32 portno, | |||
79 | void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno, | 79 | void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno, |
80 | u32 enable) | 80 | u32 enable) |
81 | { | 81 | { |
82 | __le32 int_src; | 82 | __u32 int_src; |
83 | struct netxen_port *port; | 83 | struct netxen_port *port; |
84 | 84 | ||
85 | /* This should clear the interrupt source */ | 85 | /* This should clear the interrupt source */ |
@@ -110,7 +110,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 portno, | |||
110 | /* write it down later.. */ | 110 | /* write it down later.. */ |
111 | if ((netxen_get_phy_int_speed_changed(int_src)) | 111 | if ((netxen_get_phy_int_speed_changed(int_src)) |
112 | || (netxen_get_phy_int_link_status_changed(int_src))) { | 112 | || (netxen_get_phy_int_link_status_changed(int_src))) { |
113 | __le32 status; | 113 | __u32 status; |
114 | 114 | ||
115 | DPRINTK(INFO, "SPEED CHANGED OR LINK STATUS CHANGED \n"); | 115 | DPRINTK(INFO, "SPEED CHANGED OR LINK STATUS CHANGED \n"); |
116 | 116 | ||
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 96e1bee19ba0..69c1b9d23a1a 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -117,7 +117,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
117 | void __iomem *mem_ptr1 = NULL; | 117 | void __iomem *mem_ptr1 = NULL; |
118 | void __iomem *mem_ptr2 = NULL; | 118 | void __iomem *mem_ptr2 = NULL; |
119 | 119 | ||
120 | u8 *db_ptr = NULL; | 120 | u8 __iomem *db_ptr = NULL; |
121 | unsigned long mem_base, mem_len, db_base, db_len; | 121 | unsigned long mem_base, mem_len, db_base, db_len; |
122 | int pci_using_dac, i, err; | 122 | int pci_using_dac, i, err; |
123 | int ring; | 123 | int ring; |
@@ -191,7 +191,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
191 | db_len); | 191 | db_len); |
192 | 192 | ||
193 | db_ptr = ioremap(db_base, NETXEN_DB_MAPSIZE_BYTES); | 193 | db_ptr = ioremap(db_base, NETXEN_DB_MAPSIZE_BYTES); |
194 | if (db_ptr == 0UL) { | 194 | if (!db_ptr) { |
195 | printk(KERN_ERR "%s: Failed to allocate doorbell map.", | 195 | printk(KERN_ERR "%s: Failed to allocate doorbell map.", |
196 | netxen_nic_driver_name); | 196 | netxen_nic_driver_name); |
197 | err = -EIO; | 197 | err = -EIO; |
@@ -818,7 +818,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
818 | /* Take skb->data itself */ | 818 | /* Take skb->data itself */ |
819 | pbuf = &adapter->cmd_buf_arr[producer]; | 819 | pbuf = &adapter->cmd_buf_arr[producer]; |
820 | if ((netdev->features & NETIF_F_TSO) && skb_shinfo(skb)->gso_size > 0) { | 820 | if ((netdev->features & NETIF_F_TSO) && skb_shinfo(skb)->gso_size > 0) { |
821 | pbuf->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); | 821 | pbuf->mss = skb_shinfo(skb)->gso_size; |
822 | hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); | 822 | hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); |
823 | } else { | 823 | } else { |
824 | pbuf->mss = 0; | 824 | pbuf->mss = 0; |
@@ -882,7 +882,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
882 | hwdesc->addr_buffer3 = cpu_to_le64(temp_dma); | 882 | hwdesc->addr_buffer3 = cpu_to_le64(temp_dma); |
883 | break; | 883 | break; |
884 | case 3: | 884 | case 3: |
885 | hwdesc->buffer4_length = temp_len; | 885 | hwdesc->buffer4_length = cpu_to_le16(temp_len); |
886 | hwdesc->addr_buffer4 = cpu_to_le64(temp_dma); | 886 | hwdesc->addr_buffer4 = cpu_to_le64(temp_dma); |
887 | break; | 887 | break; |
888 | } | 888 | } |
diff --git a/drivers/net/netxen/netxen_nic_niu.c b/drivers/net/netxen/netxen_nic_niu.c index 4987dc765d99..40d7003a371c 100644 --- a/drivers/net/netxen/netxen_nic_niu.c +++ b/drivers/net/netxen/netxen_nic_niu.c | |||
@@ -89,15 +89,15 @@ static inline int phy_unlock(struct netxen_adapter *adapter) | |||
89 | * | 89 | * |
90 | */ | 90 | */ |
91 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, | 91 | int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, |
92 | long reg, __le32 * readval) | 92 | long reg, __u32 * readval) |
93 | { | 93 | { |
94 | long timeout = 0; | 94 | long timeout = 0; |
95 | long result = 0; | 95 | long result = 0; |
96 | long restore = 0; | 96 | long restore = 0; |
97 | __le32 address; | 97 | __u32 address; |
98 | __le32 command; | 98 | __u32 command; |
99 | __le32 status; | 99 | __u32 status; |
100 | __le32 mac_cfg0; | 100 | __u32 mac_cfg0; |
101 | 101 | ||
102 | if (phy_lock(adapter) != 0) { | 102 | if (phy_lock(adapter) != 0) { |
103 | return -1; | 103 | return -1; |
@@ -112,7 +112,7 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, | |||
112 | &mac_cfg0, 4)) | 112 | &mac_cfg0, 4)) |
113 | return -EIO; | 113 | return -EIO; |
114 | if (netxen_gb_get_soft_reset(mac_cfg0)) { | 114 | if (netxen_gb_get_soft_reset(mac_cfg0)) { |
115 | __le32 temp; | 115 | __u32 temp; |
116 | temp = 0; | 116 | temp = 0; |
117 | netxen_gb_tx_reset_pb(temp); | 117 | netxen_gb_tx_reset_pb(temp); |
118 | netxen_gb_rx_reset_pb(temp); | 118 | netxen_gb_rx_reset_pb(temp); |
@@ -184,15 +184,15 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, | |||
184 | * | 184 | * |
185 | */ | 185 | */ |
186 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, | 186 | int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, |
187 | long phy, long reg, __le32 val) | 187 | long phy, long reg, __u32 val) |
188 | { | 188 | { |
189 | long timeout = 0; | 189 | long timeout = 0; |
190 | long result = 0; | 190 | long result = 0; |
191 | long restore = 0; | 191 | long restore = 0; |
192 | __le32 address; | 192 | __u32 address; |
193 | __le32 command; | 193 | __u32 command; |
194 | __le32 status; | 194 | __u32 status; |
195 | __le32 mac_cfg0; | 195 | __u32 mac_cfg0; |
196 | 196 | ||
197 | /* | 197 | /* |
198 | * MII mgmt all goes through port 0 MAC interface, so it | 198 | * MII mgmt all goes through port 0 MAC interface, so it |
@@ -203,7 +203,7 @@ int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, | |||
203 | &mac_cfg0, 4)) | 203 | &mac_cfg0, 4)) |
204 | return -EIO; | 204 | return -EIO; |
205 | if (netxen_gb_get_soft_reset(mac_cfg0)) { | 205 | if (netxen_gb_get_soft_reset(mac_cfg0)) { |
206 | __le32 temp; | 206 | __u32 temp; |
207 | temp = 0; | 207 | temp = 0; |
208 | netxen_gb_tx_reset_pb(temp); | 208 | netxen_gb_tx_reset_pb(temp); |
209 | netxen_gb_rx_reset_pb(temp); | 209 | netxen_gb_rx_reset_pb(temp); |
@@ -269,7 +269,7 @@ int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter, | |||
269 | int port) | 269 | int port) |
270 | { | 270 | { |
271 | int result = 0; | 271 | int result = 0; |
272 | __le32 enable = 0; | 272 | __u32 enable = 0; |
273 | netxen_set_phy_int_link_status_changed(enable); | 273 | netxen_set_phy_int_link_status_changed(enable); |
274 | netxen_set_phy_int_autoneg_completed(enable); | 274 | netxen_set_phy_int_autoneg_completed(enable); |
275 | netxen_set_phy_int_speed_changed(enable); | 275 | netxen_set_phy_int_speed_changed(enable); |
@@ -402,7 +402,7 @@ void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, | |||
402 | int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port) | 402 | int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port) |
403 | { | 403 | { |
404 | int result = 0; | 404 | int result = 0; |
405 | __le32 status; | 405 | __u32 status; |
406 | if (adapter->disable_phy_interrupts) | 406 | if (adapter->disable_phy_interrupts) |
407 | adapter->disable_phy_interrupts(adapter, port); | 407 | adapter->disable_phy_interrupts(adapter, port); |
408 | mdelay(2); | 408 | mdelay(2); |
@@ -410,7 +410,7 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port) | |||
410 | if (0 == | 410 | if (0 == |
411 | netxen_niu_gbe_phy_read(adapter, port, | 411 | netxen_niu_gbe_phy_read(adapter, port, |
412 | NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, | 412 | NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, |
413 | (__le32 *) & status)) { | 413 | &status)) { |
414 | if (netxen_get_phy_link(status)) { | 414 | if (netxen_get_phy_link(status)) { |
415 | if (netxen_get_phy_speed(status) == 2) { | 415 | if (netxen_get_phy_speed(status) == 2) { |
416 | netxen_niu_gbe_set_gmii_mode(adapter, port, 1); | 416 | netxen_niu_gbe_set_gmii_mode(adapter, port, 1); |
@@ -489,7 +489,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter, | |||
489 | int port, long enable) | 489 | int port, long enable) |
490 | { | 490 | { |
491 | int result = 0; | 491 | int result = 0; |
492 | __le32 int_src; | 492 | __u32 int_src; |
493 | 493 | ||
494 | printk(KERN_INFO PFX "NETXEN: Handling PHY interrupt on port %d" | 494 | printk(KERN_INFO PFX "NETXEN: Handling PHY interrupt on port %d" |
495 | " (device enable = %d)\n", (int)port, (int)enable); | 495 | " (device enable = %d)\n", (int)port, (int)enable); |
@@ -530,7 +530,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter, | |||
530 | printk(KERN_INFO PFX "autoneg_error "); | 530 | printk(KERN_INFO PFX "autoneg_error "); |
531 | if ((netxen_get_phy_int_speed_changed(int_src)) | 531 | if ((netxen_get_phy_int_speed_changed(int_src)) |
532 | || (netxen_get_phy_int_link_status_changed(int_src))) { | 532 | || (netxen_get_phy_int_link_status_changed(int_src))) { |
533 | __le32 status; | 533 | __u32 status; |
534 | 534 | ||
535 | printk(KERN_INFO PFX | 535 | printk(KERN_INFO PFX |
536 | "speed_changed or link status changed"); | 536 | "speed_changed or link status changed"); |
@@ -583,9 +583,9 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter, | |||
583 | int netxen_niu_macaddr_get(struct netxen_adapter *adapter, | 583 | int netxen_niu_macaddr_get(struct netxen_adapter *adapter, |
584 | int phy, netxen_ethernet_macaddr_t * addr) | 584 | int phy, netxen_ethernet_macaddr_t * addr) |
585 | { | 585 | { |
586 | u64 result = 0; | 586 | u32 stationhigh; |
587 | __le32 stationhigh; | 587 | u32 stationlow; |
588 | __le32 stationlow; | 588 | u8 val[8]; |
589 | 589 | ||
590 | if (addr == NULL) | 590 | if (addr == NULL) |
591 | return -EINVAL; | 591 | return -EINVAL; |
@@ -598,10 +598,10 @@ int netxen_niu_macaddr_get(struct netxen_adapter *adapter, | |||
598 | if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), | 598 | if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), |
599 | &stationlow, 4)) | 599 | &stationlow, 4)) |
600 | return -EIO; | 600 | return -EIO; |
601 | ((__le32 *)val)[1] = cpu_to_le32(stationhigh); | ||
602 | ((__le32 *)val)[0] = cpu_to_le32(stationlow); | ||
601 | 603 | ||
602 | result = (u64) netxen_gb_get_stationaddress_low(stationlow); | 604 | memcpy(addr, val + 2, 6); |
603 | result |= (u64) stationhigh << 16; | ||
604 | memcpy(*addr, &result, sizeof(netxen_ethernet_macaddr_t)); | ||
605 | 605 | ||
606 | return 0; | 606 | return 0; |
607 | } | 607 | } |
@@ -613,24 +613,25 @@ int netxen_niu_macaddr_get(struct netxen_adapter *adapter, | |||
613 | int netxen_niu_macaddr_set(struct netxen_port *port, | 613 | int netxen_niu_macaddr_set(struct netxen_port *port, |
614 | netxen_ethernet_macaddr_t addr) | 614 | netxen_ethernet_macaddr_t addr) |
615 | { | 615 | { |
616 | __le32 temp = 0; | 616 | u8 temp[4]; |
617 | u32 val; | ||
617 | struct netxen_adapter *adapter = port->adapter; | 618 | struct netxen_adapter *adapter = port->adapter; |
618 | int phy = port->portnum; | 619 | int phy = port->portnum; |
619 | unsigned char mac_addr[6]; | 620 | unsigned char mac_addr[6]; |
620 | int i; | 621 | int i; |
621 | 622 | ||
622 | for (i = 0; i < 10; i++) { | 623 | for (i = 0; i < 10; i++) { |
623 | memcpy(&temp, addr, 2); | 624 | temp[0] = temp[1] = 0; |
624 | temp <<= 16; | 625 | memcpy(temp + 2, addr, 2); |
626 | val = le32_to_cpu(*(__le32 *)temp); | ||
625 | if (netxen_nic_hw_write_wx | 627 | if (netxen_nic_hw_write_wx |
626 | (adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), &temp, 4)) | 628 | (adapter, NETXEN_NIU_GB_STATION_ADDR_1(phy), &val, 4)) |
627 | return -EIO; | 629 | return -EIO; |
628 | 630 | ||
629 | temp = 0; | 631 | memcpy(temp, ((u8 *) addr) + 2, sizeof(__le32)); |
630 | 632 | val = le32_to_cpu(*(__le32 *)temp); | |
631 | memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32)); | ||
632 | if (netxen_nic_hw_write_wx | 633 | if (netxen_nic_hw_write_wx |
633 | (adapter, NETXEN_NIU_GB_STATION_ADDR_0(phy), &temp, 4)) | 634 | (adapter, NETXEN_NIU_GB_STATION_ADDR_0(phy), &val, 4)) |
634 | return -2; | 635 | return -2; |
635 | 636 | ||
636 | netxen_niu_macaddr_get(adapter, phy, | 637 | netxen_niu_macaddr_get(adapter, phy, |
@@ -659,9 +660,9 @@ int netxen_niu_macaddr_set(struct netxen_port *port, | |||
659 | int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter, | 660 | int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter, |
660 | int port, netxen_niu_gbe_ifmode_t mode) | 661 | int port, netxen_niu_gbe_ifmode_t mode) |
661 | { | 662 | { |
662 | __le32 mac_cfg0; | 663 | __u32 mac_cfg0; |
663 | __le32 mac_cfg1; | 664 | __u32 mac_cfg1; |
664 | __le32 mii_cfg; | 665 | __u32 mii_cfg; |
665 | 666 | ||
666 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) | 667 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) |
667 | return -EINVAL; | 668 | return -EINVAL; |
@@ -736,7 +737,7 @@ int netxen_niu_enable_gbe_port(struct netxen_adapter *adapter, | |||
736 | /* Disable a GbE interface */ | 737 | /* Disable a GbE interface */ |
737 | int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port) | 738 | int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port) |
738 | { | 739 | { |
739 | __le32 mac_cfg0; | 740 | __u32 mac_cfg0; |
740 | 741 | ||
741 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) | 742 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) |
742 | return -EINVAL; | 743 | return -EINVAL; |
@@ -752,7 +753,7 @@ int netxen_niu_disable_gbe_port(struct netxen_adapter *adapter, int port) | |||
752 | /* Disable an XG interface */ | 753 | /* Disable an XG interface */ |
753 | int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port) | 754 | int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port) |
754 | { | 755 | { |
755 | __le32 mac_cfg; | 756 | __u32 mac_cfg; |
756 | 757 | ||
757 | if (port != 0) | 758 | if (port != 0) |
758 | return -EINVAL; | 759 | return -EINVAL; |
@@ -769,7 +770,7 @@ int netxen_niu_disable_xg_port(struct netxen_adapter *adapter, int port) | |||
769 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port, | 770 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port, |
770 | netxen_niu_prom_mode_t mode) | 771 | netxen_niu_prom_mode_t mode) |
771 | { | 772 | { |
772 | __le32 reg; | 773 | __u32 reg; |
773 | 774 | ||
774 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) | 775 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) |
775 | return -EINVAL; | 776 | return -EINVAL; |
@@ -826,22 +827,21 @@ int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, int port, | |||
826 | int netxen_niu_xg_macaddr_set(struct netxen_port *port, | 827 | int netxen_niu_xg_macaddr_set(struct netxen_port *port, |
827 | netxen_ethernet_macaddr_t addr) | 828 | netxen_ethernet_macaddr_t addr) |
828 | { | 829 | { |
829 | __le32 temp = 0; | 830 | u8 temp[4]; |
831 | u32 val; | ||
830 | struct netxen_adapter *adapter = port->adapter; | 832 | struct netxen_adapter *adapter = port->adapter; |
831 | 833 | ||
832 | memcpy(&temp, addr, 2); | 834 | temp[0] = temp[1] = 0; |
833 | temp = cpu_to_le32(temp); | 835 | memcpy(temp + 2, addr, 2); |
834 | temp <<= 16; | 836 | val = le32_to_cpu(*(__le32 *)temp); |
835 | if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, | 837 | if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, |
836 | &temp, 4)) | 838 | &val, 4)) |
837 | return -EIO; | 839 | return -EIO; |
838 | 840 | ||
839 | temp = 0; | ||
840 | |||
841 | memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32)); | 841 | memcpy(&temp, ((u8 *) addr) + 2, sizeof(__le32)); |
842 | temp = cpu_to_le32(temp); | 842 | val = le32_to_cpu(*(__le32 *)temp); |
843 | if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_HI, | 843 | if (netxen_nic_hw_write_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_HI, |
844 | &temp, 4)) | 844 | &val, 4)) |
845 | return -EIO; | 845 | return -EIO; |
846 | 846 | ||
847 | return 0; | 847 | return 0; |
@@ -854,9 +854,9 @@ int netxen_niu_xg_macaddr_set(struct netxen_port *port, | |||
854 | int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy, | 854 | int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy, |
855 | netxen_ethernet_macaddr_t * addr) | 855 | netxen_ethernet_macaddr_t * addr) |
856 | { | 856 | { |
857 | __le32 stationhigh; | 857 | u32 stationhigh; |
858 | __le32 stationlow; | 858 | u32 stationlow; |
859 | u64 result; | 859 | u8 val[8]; |
860 | 860 | ||
861 | if (addr == NULL) | 861 | if (addr == NULL) |
862 | return -EINVAL; | 862 | return -EINVAL; |
@@ -869,10 +869,10 @@ int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy, | |||
869 | if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, | 869 | if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_STATION_ADDR_0_1, |
870 | &stationlow, 4)) | 870 | &stationlow, 4)) |
871 | return -EIO; | 871 | return -EIO; |
872 | ((__le32 *)val)[1] = cpu_to_le32(stationhigh); | ||
873 | ((__le32 *)val)[0] = cpu_to_le32(stationlow); | ||
872 | 874 | ||
873 | result = ((u64) stationlow) >> 16; | 875 | memcpy(addr, val + 2, 6); |
874 | result |= (u64) stationhigh << 16; | ||
875 | memcpy(*addr, &result, sizeof(netxen_ethernet_macaddr_t)); | ||
876 | 876 | ||
877 | return 0; | 877 | return 0; |
878 | } | 878 | } |
@@ -880,7 +880,7 @@ int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy, | |||
880 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, | 880 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, |
881 | int port, netxen_niu_prom_mode_t mode) | 881 | int port, netxen_niu_prom_mode_t mode) |
882 | { | 882 | { |
883 | __le32 reg; | 883 | __u32 reg; |
884 | 884 | ||
885 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) | 885 | if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS)) |
886 | return -EINVAL; | 886 | return -EINVAL; |