diff options
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 16 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.h | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 2 |
3 files changed, 16 insertions, 4 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 7fb0edfe3d24..dbcd5262c016 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -1758,7 +1758,7 @@ err: | |||
1758 | 1758 | ||
1759 | /* Uses sycnhronous mcc */ | 1759 | /* Uses sycnhronous mcc */ |
1760 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, | 1760 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, |
1761 | u32 num, bool untagged, bool promiscuous) | 1761 | u32 num, bool promiscuous) |
1762 | { | 1762 | { |
1763 | struct be_mcc_wrb *wrb; | 1763 | struct be_mcc_wrb *wrb; |
1764 | struct be_cmd_req_vlan_config *req; | 1764 | struct be_cmd_req_vlan_config *req; |
@@ -1778,7 +1778,7 @@ int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, | |||
1778 | 1778 | ||
1779 | req->interface_id = if_id; | 1779 | req->interface_id = if_id; |
1780 | req->promiscuous = promiscuous; | 1780 | req->promiscuous = promiscuous; |
1781 | req->untagged = untagged; | 1781 | req->untagged = BE_IF_FLAGS_UNTAGGED & be_if_cap_flags(adapter) ? 1 : 0; |
1782 | req->num_vlan = num; | 1782 | req->num_vlan = num; |
1783 | if (!promiscuous) { | 1783 | if (!promiscuous) { |
1784 | memcpy(req->normal_vlan, vtag_array, | 1784 | memcpy(req->normal_vlan, vtag_array, |
@@ -1847,7 +1847,19 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value) | |||
1847 | memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN); | 1847 | memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN); |
1848 | } | 1848 | } |
1849 | 1849 | ||
1850 | if ((req->if_flags_mask & cpu_to_le32(be_if_cap_flags(adapter))) != | ||
1851 | req->if_flags_mask) { | ||
1852 | dev_warn(&adapter->pdev->dev, | ||
1853 | "Cannot set rx filter flags 0x%x\n", | ||
1854 | req->if_flags_mask); | ||
1855 | dev_warn(&adapter->pdev->dev, | ||
1856 | "Interface is capable of 0x%x flags only\n", | ||
1857 | be_if_cap_flags(adapter)); | ||
1858 | } | ||
1859 | req->if_flags_mask &= cpu_to_le32(be_if_cap_flags(adapter)); | ||
1860 | |||
1850 | status = be_mcc_notify_wait(adapter); | 1861 | status = be_mcc_notify_wait(adapter); |
1862 | |||
1851 | err: | 1863 | err: |
1852 | spin_unlock_bh(&adapter->mcc_lock); | 1864 | spin_unlock_bh(&adapter->mcc_lock); |
1853 | return status; | 1865 | return status; |
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h index edf3e8a0ff83..0075686276aa 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.h +++ b/drivers/net/ethernet/emulex/benet/be_cmds.h | |||
@@ -1984,7 +1984,7 @@ int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver, | |||
1984 | char *fw_on_flash); | 1984 | char *fw_on_flash); |
1985 | int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num); | 1985 | int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num); |
1986 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, | 1986 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, |
1987 | u32 num, bool untagged, bool promiscuous); | 1987 | u32 num, bool promiscuous); |
1988 | int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status); | 1988 | int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status); |
1989 | int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc); | 1989 | int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc); |
1990 | int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc); | 1990 | int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc); |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 741d3bff5ae7..13818d37bbbb 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -1079,7 +1079,7 @@ static int be_vid_config(struct be_adapter *adapter) | |||
1079 | vids[num++] = cpu_to_le16(i); | 1079 | vids[num++] = cpu_to_le16(i); |
1080 | 1080 | ||
1081 | status = be_cmd_vlan_config(adapter, adapter->if_handle, | 1081 | status = be_cmd_vlan_config(adapter, adapter->if_handle, |
1082 | vids, num, 1, 0); | 1082 | vids, num, 0); |
1083 | 1083 | ||
1084 | if (status) { | 1084 | if (status) { |
1085 | /* Set to VLAN promisc mode as setting VLAN filter failed */ | 1085 | /* Set to VLAN promisc mode as setting VLAN filter failed */ |