diff options
author | Kalesh AP <kalesh.purayil@emulex.com> | 2014-09-12 08:09:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-09-13 17:12:15 -0400 |
commit | 936767039cdf9409153fbaafa3127b0c85101097 (patch) | |
tree | 43e24094f7542893cc8f91ca27e4b5d8aca3f4cd | |
parent | 6809cee0ca2139877566d860abc892b4736de8af (diff) |
be2net: send a max of 8 EQs to be_cmd_modify_eqd() on Lancer
The MODIFY_EQ_DELAY FW cmd on Lancer is supported for a max of 8 EQs per cmd.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 85edde6603fe..cd213d967529 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -1783,8 +1783,8 @@ err: | |||
1783 | /* set the EQ delay interval of an EQ to specified value | 1783 | /* set the EQ delay interval of an EQ to specified value |
1784 | * Uses async mcc | 1784 | * Uses async mcc |
1785 | */ | 1785 | */ |
1786 | int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *set_eqd, | 1786 | int __be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *set_eqd, |
1787 | int num) | 1787 | int num) |
1788 | { | 1788 | { |
1789 | struct be_mcc_wrb *wrb; | 1789 | struct be_mcc_wrb *wrb; |
1790 | struct be_cmd_req_modify_eq_delay *req; | 1790 | struct be_cmd_req_modify_eq_delay *req; |
@@ -1817,6 +1817,25 @@ err: | |||
1817 | return status; | 1817 | return status; |
1818 | } | 1818 | } |
1819 | 1819 | ||
1820 | int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *set_eqd, | ||
1821 | int num) | ||
1822 | { | ||
1823 | int num_eqs, i = 0; | ||
1824 | |||
1825 | if (lancer_chip(adapter) && num > 8) { | ||
1826 | while (num) { | ||
1827 | num_eqs = min(num, 8); | ||
1828 | __be_cmd_modify_eqd(adapter, &set_eqd[i], num_eqs); | ||
1829 | i += num_eqs; | ||
1830 | num -= num_eqs; | ||
1831 | } | ||
1832 | } else { | ||
1833 | __be_cmd_modify_eqd(adapter, set_eqd, num); | ||
1834 | } | ||
1835 | |||
1836 | return 0; | ||
1837 | } | ||
1838 | |||
1820 | /* Uses sycnhronous mcc */ | 1839 | /* Uses sycnhronous mcc */ |
1821 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, | 1840 | int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, |
1822 | u32 num) | 1841 | u32 num) |