diff options
author | Dhananjay Phadke <dhananjay@netxen.com> | 2008-08-01 06:14:59 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-08-07 02:11:10 -0400 |
commit | 9ad27643f3a054dff9211bb9938f2323907c2ffe (patch) | |
tree | c1603233131cd7183e959c48357f6ade905714f1 /drivers/net/netxen | |
parent | 83821a078a1617e120d76954f455204cec78fe9d (diff) |
netxen: fix promisc mode, mtu setting
For NX3031, multicast filtering, promisc mode, and max frame size
setting is handled by firmware, driver needs to send request to
enable/disable it.
For old chip revisions / firmware, driver still sets it directly.
Added function pointer to set mtu according to chip revision.
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/netxen')
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 35 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_ctx.c | 9 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.c | 77 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.h | 13 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 5 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 4 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_niu.c | 4 |
7 files changed, 94 insertions, 53 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 07a59dc83dba..93a7b9b668d5 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -1172,6 +1172,36 @@ typedef struct { | |||
1172 | nx_nic_intr_coalesce_data_t irq; | 1172 | nx_nic_intr_coalesce_data_t irq; |
1173 | } nx_nic_intr_coalesce_t; | 1173 | } nx_nic_intr_coalesce_t; |
1174 | 1174 | ||
1175 | #define NX_HOST_REQUEST 0x13 | ||
1176 | #define NX_NIC_REQUEST 0x14 | ||
1177 | |||
1178 | #define NX_MAC_EVENT 0x1 | ||
1179 | |||
1180 | enum { | ||
1181 | NX_NIC_H2C_OPCODE_START = 0, | ||
1182 | NX_NIC_H2C_OPCODE_CONFIG_RSS, | ||
1183 | NX_NIC_H2C_OPCODE_CONFIG_RSS_TBL, | ||
1184 | NX_NIC_H2C_OPCODE_CONFIG_INTR_COALESCE, | ||
1185 | NX_NIC_H2C_OPCODE_CONFIG_LED, | ||
1186 | NX_NIC_H2C_OPCODE_CONFIG_PROMISCUOUS, | ||
1187 | NX_NIC_H2C_OPCODE_CONFIG_L2_MAC, | ||
1188 | NX_NIC_H2C_OPCODE_LRO_REQUEST, | ||
1189 | NX_NIC_H2C_OPCODE_GET_SNMP_STATS, | ||
1190 | NX_NIC_H2C_OPCODE_PROXY_START_REQUEST, | ||
1191 | NX_NIC_H2C_OPCODE_PROXY_STOP_REQUEST, | ||
1192 | NX_NIC_H2C_OPCODE_PROXY_SET_MTU, | ||
1193 | NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE, | ||
1194 | NX_H2P_OPCODE_GET_FINGER_PRINT_REQUEST, | ||
1195 | NX_H2P_OPCODE_INSTALL_LICENSE_REQUEST, | ||
1196 | NX_H2P_OPCODE_GET_LICENSE_CAPABILITY_REQUEST, | ||
1197 | NX_NIC_H2C_OPCODE_GET_NET_STATS, | ||
1198 | NX_NIC_H2C_OPCODE_LAST | ||
1199 | }; | ||
1200 | |||
1201 | #define VPORT_MISS_MODE_DROP 0 /* drop all unmatched */ | ||
1202 | #define VPORT_MISS_MODE_ACCEPT_ALL 1 /* accept all packets */ | ||
1203 | #define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */ | ||
1204 | |||
1175 | typedef struct { | 1205 | typedef struct { |
1176 | u64 qhdr; | 1206 | u64 qhdr; |
1177 | u64 req_hdr; | 1207 | u64 req_hdr; |
@@ -1290,7 +1320,7 @@ struct netxen_adapter { | |||
1290 | int (*disable_phy_interrupts) (struct netxen_adapter *); | 1320 | int (*disable_phy_interrupts) (struct netxen_adapter *); |
1291 | int (*macaddr_set) (struct netxen_adapter *, netxen_ethernet_macaddr_t); | 1321 | int (*macaddr_set) (struct netxen_adapter *, netxen_ethernet_macaddr_t); |
1292 | int (*set_mtu) (struct netxen_adapter *, int); | 1322 | int (*set_mtu) (struct netxen_adapter *, int); |
1293 | int (*set_promisc) (struct netxen_adapter *, netxen_niu_prom_mode_t); | 1323 | int (*set_promisc) (struct netxen_adapter *, u32); |
1294 | int (*phy_read) (struct netxen_adapter *, long reg, u32 *); | 1324 | int (*phy_read) (struct netxen_adapter *, long reg, u32 *); |
1295 | int (*phy_write) (struct netxen_adapter *, long reg, u32 val); | 1325 | int (*phy_write) (struct netxen_adapter *, long reg, u32 val); |
1296 | int (*init_port) (struct netxen_adapter *, int); | 1326 | int (*init_port) (struct netxen_adapter *, int); |
@@ -1467,9 +1497,10 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter); | |||
1467 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); | 1497 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); |
1468 | void netxen_p2_nic_set_multi(struct net_device *netdev); | 1498 | void netxen_p2_nic_set_multi(struct net_device *netdev); |
1469 | void netxen_p3_nic_set_multi(struct net_device *netdev); | 1499 | void netxen_p3_nic_set_multi(struct net_device *netdev); |
1500 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32); | ||
1470 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter); | 1501 | int netxen_config_intr_coalesce(struct netxen_adapter *adapter); |
1471 | 1502 | ||
1472 | u32 nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu); | 1503 | int nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, int mtu); |
1473 | int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu); | 1504 | int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu); |
1474 | 1505 | ||
1475 | int netxen_nic_set_mac(struct net_device *netdev, void *p); | 1506 | int netxen_nic_set_mac(struct net_device *netdev, void *p); |
diff --git a/drivers/net/netxen/netxen_nic_ctx.c b/drivers/net/netxen/netxen_nic_ctx.c index 64babc59e699..64b51643c626 100644 --- a/drivers/net/netxen/netxen_nic_ctx.c +++ b/drivers/net/netxen/netxen_nic_ctx.c | |||
@@ -145,8 +145,8 @@ netxen_issue_cmd(struct netxen_adapter *adapter, | |||
145 | return rcode; | 145 | return rcode; |
146 | } | 146 | } |
147 | 147 | ||
148 | u32 | 148 | int |
149 | nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu) | 149 | nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, int mtu) |
150 | { | 150 | { |
151 | u32 rcode = NX_RCODE_SUCCESS; | 151 | u32 rcode = NX_RCODE_SUCCESS; |
152 | struct netxen_recv_context *recv_ctx = &adapter->recv_ctx[0]; | 152 | struct netxen_recv_context *recv_ctx = &adapter->recv_ctx[0]; |
@@ -160,7 +160,10 @@ nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu) | |||
160 | 0, | 160 | 0, |
161 | NX_CDRP_CMD_SET_MTU); | 161 | NX_CDRP_CMD_SET_MTU); |
162 | 162 | ||
163 | return rcode; | 163 | if (rcode != NX_RCODE_SUCCESS) |
164 | return -EIO; | ||
165 | |||
166 | return 0; | ||
164 | } | 167 | } |
165 | 168 | ||
166 | static int | 169 | static int |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index d0c6935881e7..4259f3fb899d 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -285,14 +285,7 @@ static unsigned crb_hub_agt[64] = | |||
285 | #define ADDR_IN_RANGE(addr, low, high) \ | 285 | #define ADDR_IN_RANGE(addr, low, high) \ |
286 | (((addr) <= (high)) && ((addr) >= (low))) | 286 | (((addr) <= (high)) && ((addr) >= (low))) |
287 | 287 | ||
288 | #define NETXEN_MAX_MTU 8000 + NETXEN_ENET_HEADER_SIZE + NETXEN_ETH_FCS_SIZE | ||
289 | #define NETXEN_MIN_MTU 64 | ||
290 | #define NETXEN_ETH_FCS_SIZE 4 | ||
291 | #define NETXEN_ENET_HEADER_SIZE 14 | ||
292 | #define NETXEN_WINDOW_ONE 0x2000000 /*CRB Window: bit 25 of CRB address */ | 288 | #define NETXEN_WINDOW_ONE 0x2000000 /*CRB Window: bit 25 of CRB address */ |
293 | #define NETXEN_FIRMWARE_LEN ((16 * 1024) / 4) | ||
294 | #define NETXEN_NIU_HDRSIZE (0x1 << 6) | ||
295 | #define NETXEN_NIU_TLRSIZE (0x1 << 5) | ||
296 | 289 | ||
297 | #define NETXEN_NIC_ZERO_PAUSE_ADDR 0ULL | 290 | #define NETXEN_NIC_ZERO_PAUSE_ADDR 0ULL |
298 | #define NETXEN_NIC_UNIT_PAUSE_ADDR 0x200ULL | 291 | #define NETXEN_NIC_UNIT_PAUSE_ADDR 0x200ULL |
@@ -541,9 +534,6 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter, | |||
541 | return 0; | 534 | return 0; |
542 | } | 535 | } |
543 | 536 | ||
544 | #define NIC_REQUEST 0x14 | ||
545 | #define NETXEN_MAC_EVENT 0x1 | ||
546 | |||
547 | static int nx_p3_sre_macaddr_change(struct net_device *dev, | 537 | static int nx_p3_sre_macaddr_change(struct net_device *dev, |
548 | u8 *addr, unsigned op) | 538 | u8 *addr, unsigned op) |
549 | { | 539 | { |
@@ -553,8 +543,8 @@ static int nx_p3_sre_macaddr_change(struct net_device *dev, | |||
553 | int rv; | 543 | int rv; |
554 | 544 | ||
555 | memset(&req, 0, sizeof(nx_nic_req_t)); | 545 | memset(&req, 0, sizeof(nx_nic_req_t)); |
556 | req.qhdr |= (NIC_REQUEST << 23); | 546 | req.qhdr |= (NX_NIC_REQUEST << 23); |
557 | req.req_hdr |= NETXEN_MAC_EVENT; | 547 | req.req_hdr |= NX_MAC_EVENT; |
558 | req.req_hdr |= ((u64)adapter->portnum << 16); | 548 | req.req_hdr |= ((u64)adapter->portnum << 16); |
559 | mac_req.op = op; | 549 | mac_req.op = op; |
560 | memcpy(&mac_req.mac_addr, addr, 6); | 550 | memcpy(&mac_req.mac_addr, addr, 6); |
@@ -575,31 +565,35 @@ void netxen_p3_nic_set_multi(struct net_device *netdev) | |||
575 | nx_mac_list_t *cur, *next, *del_list, *add_list = NULL; | 565 | nx_mac_list_t *cur, *next, *del_list, *add_list = NULL; |
576 | struct dev_mc_list *mc_ptr; | 566 | struct dev_mc_list *mc_ptr; |
577 | u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; | 567 | u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; |
578 | 568 | u32 mode = VPORT_MISS_MODE_DROP; | |
579 | adapter->set_promisc(adapter, NETXEN_NIU_PROMISC_MODE); | ||
580 | |||
581 | /* | ||
582 | * Programming mac addresses will automaticly enabling L2 filtering. | ||
583 | * HW will replace timestamp with L2 conid when L2 filtering is | ||
584 | * enabled. This causes problem for LSA. Do not enabling L2 filtering | ||
585 | * until that problem is fixed. | ||
586 | */ | ||
587 | if ((netdev->flags & IFF_PROMISC) || | ||
588 | (netdev->mc_count > adapter->max_mc_count)) | ||
589 | return; | ||
590 | 569 | ||
591 | del_list = adapter->mac_list; | 570 | del_list = adapter->mac_list; |
592 | adapter->mac_list = NULL; | 571 | adapter->mac_list = NULL; |
593 | 572 | ||
594 | nx_p3_nic_add_mac(adapter, netdev->dev_addr, &add_list, &del_list); | 573 | nx_p3_nic_add_mac(adapter, netdev->dev_addr, &add_list, &del_list); |
574 | nx_p3_nic_add_mac(adapter, bcast_addr, &add_list, &del_list); | ||
575 | |||
576 | if (netdev->flags & IFF_PROMISC) { | ||
577 | mode = VPORT_MISS_MODE_ACCEPT_ALL; | ||
578 | goto send_fw_cmd; | ||
579 | } | ||
580 | |||
581 | if ((netdev->flags & IFF_ALLMULTI) || | ||
582 | (netdev->mc_count > adapter->max_mc_count)) { | ||
583 | mode = VPORT_MISS_MODE_ACCEPT_MULTI; | ||
584 | goto send_fw_cmd; | ||
585 | } | ||
586 | |||
595 | if (netdev->mc_count > 0) { | 587 | if (netdev->mc_count > 0) { |
596 | nx_p3_nic_add_mac(adapter, bcast_addr, &add_list, &del_list); | ||
597 | for (mc_ptr = netdev->mc_list; mc_ptr; | 588 | for (mc_ptr = netdev->mc_list; mc_ptr; |
598 | mc_ptr = mc_ptr->next) { | 589 | mc_ptr = mc_ptr->next) { |
599 | nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr, | 590 | nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr, |
600 | &add_list, &del_list); | 591 | &add_list, &del_list); |
601 | } | 592 | } |
602 | } | 593 | } |
594 | |||
595 | send_fw_cmd: | ||
596 | adapter->set_promisc(adapter, mode); | ||
603 | for (cur = del_list; cur;) { | 597 | for (cur = del_list; cur;) { |
604 | nx_p3_sre_macaddr_change(netdev, cur->mac_addr, NETXEN_MAC_DEL); | 598 | nx_p3_sre_macaddr_change(netdev, cur->mac_addr, NETXEN_MAC_DEL); |
605 | next = cur->next; | 599 | next = cur->next; |
@@ -615,6 +609,21 @@ void netxen_p3_nic_set_multi(struct net_device *netdev) | |||
615 | } | 609 | } |
616 | } | 610 | } |
617 | 611 | ||
612 | int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) | ||
613 | { | ||
614 | nx_nic_req_t req; | ||
615 | |||
616 | memset(&req, 0, sizeof(nx_nic_req_t)); | ||
617 | |||
618 | req.qhdr |= (NX_HOST_REQUEST << 23); | ||
619 | req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE; | ||
620 | req.req_hdr |= ((u64)adapter->portnum << 16); | ||
621 | req.words[0] = cpu_to_le64(mode); | ||
622 | |||
623 | return netxen_send_cmd_descs(adapter, | ||
624 | (struct cmd_desc_type0 *)&req, 1); | ||
625 | } | ||
626 | |||
618 | #define NETXEN_CONFIG_INTR_COALESCE 3 | 627 | #define NETXEN_CONFIG_INTR_COALESCE 3 |
619 | 628 | ||
620 | /* | 629 | /* |
@@ -627,7 +636,7 @@ int netxen_config_intr_coalesce(struct netxen_adapter *adapter) | |||
627 | 636 | ||
628 | memset(&req, 0, sizeof(nx_nic_req_t)); | 637 | memset(&req, 0, sizeof(nx_nic_req_t)); |
629 | 638 | ||
630 | req.qhdr |= (NIC_REQUEST << 23); | 639 | req.qhdr |= (NX_NIC_REQUEST << 23); |
631 | req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE; | 640 | req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE; |
632 | req.req_hdr |= ((u64)adapter->portnum << 16); | 641 | req.req_hdr |= ((u64)adapter->portnum << 16); |
633 | 642 | ||
@@ -653,6 +662,7 @@ int netxen_nic_change_mtu(struct net_device *netdev, int mtu) | |||
653 | { | 662 | { |
654 | struct netxen_adapter *adapter = netdev_priv(netdev); | 663 | struct netxen_adapter *adapter = netdev_priv(netdev); |
655 | int max_mtu; | 664 | int max_mtu; |
665 | int rc = 0; | ||
656 | 666 | ||
657 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) | 667 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) |
658 | max_mtu = P3_MAX_MTU; | 668 | max_mtu = P3_MAX_MTU; |
@@ -666,16 +676,12 @@ int netxen_nic_change_mtu(struct net_device *netdev, int mtu) | |||
666 | } | 676 | } |
667 | 677 | ||
668 | if (adapter->set_mtu) | 678 | if (adapter->set_mtu) |
669 | adapter->set_mtu(adapter, mtu); | 679 | rc = adapter->set_mtu(adapter, mtu); |
670 | netdev->mtu = mtu; | ||
671 | 680 | ||
672 | mtu += MTU_FUDGE_FACTOR; | 681 | if (!rc) |
673 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) | 682 | netdev->mtu = mtu; |
674 | nx_fw_cmd_set_mtu(adapter, mtu); | ||
675 | else if (adapter->set_mtu) | ||
676 | adapter->set_mtu(adapter, mtu); | ||
677 | 683 | ||
678 | return 0; | 684 | return rc; |
679 | } | 685 | } |
680 | 686 | ||
681 | int netxen_is_flash_supported(struct netxen_adapter *adapter) | 687 | int netxen_is_flash_supported(struct netxen_adapter *adapter) |
@@ -2047,6 +2053,7 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter) | |||
2047 | 2053 | ||
2048 | int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu) | 2054 | int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu) |
2049 | { | 2055 | { |
2056 | new_mtu += MTU_FUDGE_FACTOR; | ||
2050 | netxen_nic_write_w0(adapter, | 2057 | netxen_nic_write_w0(adapter, |
2051 | NETXEN_NIU_GB_MAX_FRAME_SIZE(adapter->physical_port), | 2058 | NETXEN_NIU_GB_MAX_FRAME_SIZE(adapter->physical_port), |
2052 | new_mtu); | 2059 | new_mtu); |
@@ -2055,7 +2062,7 @@ int netxen_nic_set_mtu_gb(struct netxen_adapter *adapter, int new_mtu) | |||
2055 | 2062 | ||
2056 | int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) | 2063 | int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu) |
2057 | { | 2064 | { |
2058 | new_mtu += NETXEN_NIU_HDRSIZE + NETXEN_NIU_TLRSIZE; | 2065 | new_mtu += MTU_FUDGE_FACTOR; |
2059 | if (adapter->physical_port == 0) | 2066 | if (adapter->physical_port == 0) |
2060 | netxen_nic_write_w0(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, | 2067 | netxen_nic_write_w0(adapter, NETXEN_NIU_XGE_MAX_FRAME_SIZE, |
2061 | new_mtu); | 2068 | new_mtu); |
diff --git a/drivers/net/netxen/netxen_nic_hw.h b/drivers/net/netxen/netxen_nic_hw.h index b8e0030f03d7..aae737dc77a8 100644 --- a/drivers/net/netxen/netxen_nic_hw.h +++ b/drivers/net/netxen/netxen_nic_hw.h | |||
@@ -419,12 +419,9 @@ typedef enum { | |||
419 | #define netxen_get_niu_enable_ge(config_word) \ | 419 | #define netxen_get_niu_enable_ge(config_word) \ |
420 | _netxen_crb_get_bit(config_word, 1) | 420 | _netxen_crb_get_bit(config_word, 1) |
421 | 421 | ||
422 | /* Promiscous mode options (GbE mode only) */ | 422 | #define NETXEN_NIU_NON_PROMISC_MODE 0 |
423 | typedef enum { | 423 | #define NETXEN_NIU_PROMISC_MODE 1 |
424 | NETXEN_NIU_PROMISC_MODE = 0, | 424 | #define NETXEN_NIU_ALLMULTI_MODE 2 |
425 | NETXEN_NIU_NON_PROMISC_MODE, | ||
426 | NETXEN_NIU_ALLMULTI_MODE | ||
427 | } netxen_niu_prom_mode_t; | ||
428 | 425 | ||
429 | /* | 426 | /* |
430 | * NIU GB Drop CRC Register | 427 | * NIU GB Drop CRC Register |
@@ -471,9 +468,9 @@ typedef enum { | |||
471 | 468 | ||
472 | /* Set promiscuous mode for a GbE interface */ | 469 | /* Set promiscuous mode for a GbE interface */ |
473 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, | 470 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, |
474 | netxen_niu_prom_mode_t mode); | 471 | u32 mode); |
475 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, | 472 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, |
476 | netxen_niu_prom_mode_t mode); | 473 | u32 mode); |
477 | 474 | ||
478 | /* set the MAC address for a given MAC */ | 475 | /* set the MAC address for a given MAC */ |
479 | int netxen_niu_macaddr_set(struct netxen_adapter *adapter, | 476 | int netxen_niu_macaddr_set(struct netxen_adapter *adapter, |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 01ab31b34a85..519fc860e17e 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -364,6 +364,11 @@ void netxen_initialize_adapter_ops(struct netxen_adapter *adapter) | |||
364 | default: | 364 | default: |
365 | break; | 365 | break; |
366 | } | 366 | } |
367 | |||
368 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { | ||
369 | adapter->set_mtu = nx_fw_cmd_set_mtu; | ||
370 | adapter->set_promisc = netxen_p3_nic_set_promisc; | ||
371 | } | ||
367 | } | 372 | } |
368 | 373 | ||
369 | /* | 374 | /* |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 311a4bdfa855..7615c715e66e 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -1113,9 +1113,7 @@ static int netxen_nic_open(struct net_device *netdev) | |||
1113 | netxen_nic_set_link_parameters(adapter); | 1113 | netxen_nic_set_link_parameters(adapter); |
1114 | 1114 | ||
1115 | netdev->set_multicast_list(netdev); | 1115 | netdev->set_multicast_list(netdev); |
1116 | if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) | 1116 | if (adapter->set_mtu) |
1117 | nx_fw_cmd_set_mtu(adapter, netdev->mtu); | ||
1118 | else | ||
1119 | adapter->set_mtu(adapter, netdev->mtu); | 1117 | adapter->set_mtu(adapter, netdev->mtu); |
1120 | 1118 | ||
1121 | mod_timer(&adapter->watchdog_timer, jiffies); | 1119 | mod_timer(&adapter->watchdog_timer, jiffies); |
diff --git a/drivers/net/netxen/netxen_nic_niu.c b/drivers/net/netxen/netxen_nic_niu.c index c9493e2df200..27f07f6a45b1 100644 --- a/drivers/net/netxen/netxen_nic_niu.c +++ b/drivers/net/netxen/netxen_nic_niu.c | |||
@@ -764,7 +764,7 @@ int netxen_niu_disable_xg_port(struct netxen_adapter *adapter) | |||
764 | 764 | ||
765 | /* Set promiscuous mode for a GbE interface */ | 765 | /* Set promiscuous mode for a GbE interface */ |
766 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, | 766 | int netxen_niu_set_promiscuous_mode(struct netxen_adapter *adapter, |
767 | netxen_niu_prom_mode_t mode) | 767 | u32 mode) |
768 | { | 768 | { |
769 | __u32 reg; | 769 | __u32 reg; |
770 | u32 port = adapter->physical_port; | 770 | u32 port = adapter->physical_port; |
@@ -906,7 +906,7 @@ int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, | |||
906 | #endif /* 0 */ | 906 | #endif /* 0 */ |
907 | 907 | ||
908 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, | 908 | int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter, |
909 | netxen_niu_prom_mode_t mode) | 909 | u32 mode) |
910 | { | 910 | { |
911 | __u32 reg; | 911 | __u32 reg; |
912 | u32 port = adapter->physical_port; | 912 | u32 port = adapter->physical_port; |