diff options
author | Sathya Perla <sathyap@serverengines.com> | 2009-10-14 16:20:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-15 02:29:54 -0400 |
commit | 73d540f282c0d8ce48fafd7fcc844e91f31d4103 (patch) | |
tree | 65a03c4880b8c0d7ef8d80b53c46d3fdb8e43f23 /drivers | |
parent | 8f7e524ce33ca81b663711404709396165da3cbd (diff) |
be2net: fix promiscuous and multicast promiscuous modes being enabled always
Signed-off-by: Sathya Perla <sathyap@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/benet/be_cmds.c | 8 | ||||
-rw-r--r-- | drivers/net/benet/be_cmds.h | 5 | ||||
-rw-r--r-- | drivers/net/benet/be_main.c | 19 |
3 files changed, 18 insertions, 14 deletions
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 89876ade5e33..b57abc0c9f48 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
@@ -729,8 +729,8 @@ int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q, | |||
729 | /* Create an rx filtering policy configuration on an i/f | 729 | /* Create an rx filtering policy configuration on an i/f |
730 | * Uses mbox | 730 | * Uses mbox |
731 | */ | 731 | */ |
732 | int be_cmd_if_create(struct be_adapter *adapter, u32 flags, u8 *mac, | 732 | int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, u32 en_flags, |
733 | bool pmac_invalid, u32 *if_handle, u32 *pmac_id) | 733 | u8 *mac, bool pmac_invalid, u32 *if_handle, u32 *pmac_id) |
734 | { | 734 | { |
735 | struct be_mcc_wrb *wrb; | 735 | struct be_mcc_wrb *wrb; |
736 | struct be_cmd_req_if_create *req; | 736 | struct be_cmd_req_if_create *req; |
@@ -746,8 +746,8 @@ int be_cmd_if_create(struct be_adapter *adapter, u32 flags, u8 *mac, | |||
746 | be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, | 746 | be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, |
747 | OPCODE_COMMON_NTWK_INTERFACE_CREATE, sizeof(*req)); | 747 | OPCODE_COMMON_NTWK_INTERFACE_CREATE, sizeof(*req)); |
748 | 748 | ||
749 | req->capability_flags = cpu_to_le32(flags); | 749 | req->capability_flags = cpu_to_le32(cap_flags); |
750 | req->enable_flags = cpu_to_le32(flags); | 750 | req->enable_flags = cpu_to_le32(en_flags); |
751 | req->pmac_invalid = pmac_invalid; | 751 | req->pmac_invalid = pmac_invalid; |
752 | if (!pmac_invalid) | 752 | if (!pmac_invalid) |
753 | memcpy(req->mac_addr, mac, ETH_ALEN); | 753 | memcpy(req->mac_addr, mac, ETH_ALEN); |
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h index a86f917f85f4..49953787e41c 100644 --- a/drivers/net/benet/be_cmds.h +++ b/drivers/net/benet/be_cmds.h | |||
@@ -720,8 +720,9 @@ extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr, | |||
720 | extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, | 720 | extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, |
721 | u32 if_id, u32 *pmac_id); | 721 | u32 if_id, u32 *pmac_id); |
722 | extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id); | 722 | extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id); |
723 | extern int be_cmd_if_create(struct be_adapter *adapter, u32 if_flags, u8 *mac, | 723 | extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, |
724 | bool pmac_invalid, u32 *if_handle, u32 *pmac_id); | 724 | u32 en_flags, u8 *mac, bool pmac_invalid, |
725 | u32 *if_handle, u32 *pmac_id); | ||
725 | extern int be_cmd_if_destroy(struct be_adapter *adapter, u32 if_handle); | 726 | extern int be_cmd_if_destroy(struct be_adapter *adapter, u32 if_handle); |
726 | extern int be_cmd_eq_create(struct be_adapter *adapter, | 727 | extern int be_cmd_eq_create(struct be_adapter *adapter, |
727 | struct be_queue_info *eq, int eq_delay); | 728 | struct be_queue_info *eq, int eq_delay); |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 6d5e81f7046f..36cb94869b01 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
@@ -1620,19 +1620,22 @@ static int be_open(struct net_device *netdev) | |||
1620 | static int be_setup(struct be_adapter *adapter) | 1620 | static int be_setup(struct be_adapter *adapter) |
1621 | { | 1621 | { |
1622 | struct net_device *netdev = adapter->netdev; | 1622 | struct net_device *netdev = adapter->netdev; |
1623 | u32 if_flags; | 1623 | u32 cap_flags, en_flags; |
1624 | int status; | 1624 | int status; |
1625 | 1625 | ||
1626 | if_flags = BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_PROMISCUOUS | | 1626 | cap_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | |
1627 | BE_IF_FLAGS_MCAST_PROMISCUOUS | BE_IF_FLAGS_UNTAGGED | | 1627 | BE_IF_FLAGS_MCAST_PROMISCUOUS | |
1628 | BE_IF_FLAGS_PASS_L3L4_ERRORS; | 1628 | BE_IF_FLAGS_PROMISCUOUS | |
1629 | status = be_cmd_if_create(adapter, if_flags, netdev->dev_addr, | 1629 | BE_IF_FLAGS_PASS_L3L4_ERRORS; |
1630 | false/* pmac_invalid */, &adapter->if_handle, | 1630 | en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | |
1631 | &adapter->pmac_id); | 1631 | BE_IF_FLAGS_PASS_L3L4_ERRORS; |
1632 | |||
1633 | status = be_cmd_if_create(adapter, cap_flags, en_flags, | ||
1634 | netdev->dev_addr, false/* pmac_invalid */, | ||
1635 | &adapter->if_handle, &adapter->pmac_id); | ||
1632 | if (status != 0) | 1636 | if (status != 0) |
1633 | goto do_none; | 1637 | goto do_none; |
1634 | 1638 | ||
1635 | |||
1636 | status = be_tx_queues_create(adapter); | 1639 | status = be_tx_queues_create(adapter); |
1637 | if (status != 0) | 1640 | if (status != 0) |
1638 | goto if_destroy; | 1641 | goto if_destroy; |