diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2012-10-10 18:24:51 -0400 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2013-08-22 14:26:01 -0400 |
commit | f5253d92567b193c6aa137a08e7bb3b06fafc985 (patch) | |
tree | 1eecc53ca7c8010698461451acf93a098c2c23ac | |
parent | 8803e15042fbf5bd53b9b43147a91e3f50cffb03 (diff) |
sfc: Define and use MCDI_POPULATE_DWORD_{1,2,3,4,5,6,7}
There is only one user now, but we're about to add many more.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
-rw-r--r-- | drivers/net/ethernet/sfc/mcdi.h | 54 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/mcdi_port.c | 18 |
2 files changed, 62 insertions, 10 deletions
diff --git a/drivers/net/ethernet/sfc/mcdi.h b/drivers/net/ethernet/sfc/mcdi.h index 69586e02bfca..a465cc154139 100644 --- a/drivers/net/ethernet/sfc/mcdi.h +++ b/drivers/net/ethernet/sfc/mcdi.h | |||
@@ -128,6 +128,60 @@ extern void efx_mcdi_sensor_event(struct efx_nic *efx, efx_qword_t *ev); | |||
128 | EFX_POPULATE_DWORD_1(*_MCDI_DWORD(_buf, _field), EFX_DWORD_0, _value) | 128 | EFX_POPULATE_DWORD_1(*_MCDI_DWORD(_buf, _field), EFX_DWORD_0, _value) |
129 | #define MCDI_DWORD(_buf, _field) \ | 129 | #define MCDI_DWORD(_buf, _field) \ |
130 | EFX_DWORD_FIELD(*_MCDI_DWORD(_buf, _field), EFX_DWORD_0) | 130 | EFX_DWORD_FIELD(*_MCDI_DWORD(_buf, _field), EFX_DWORD_0) |
131 | #define MCDI_POPULATE_DWORD_1(_buf, _field, _name1, _value1) \ | ||
132 | EFX_POPULATE_DWORD_1(*_MCDI_DWORD(_buf, _field), \ | ||
133 | MC_CMD_ ## _name1, _value1) | ||
134 | #define MCDI_POPULATE_DWORD_2(_buf, _field, _name1, _value1, \ | ||
135 | _name2, _value2) \ | ||
136 | EFX_POPULATE_DWORD_2(*_MCDI_DWORD(_buf, _field), \ | ||
137 | MC_CMD_ ## _name1, _value1, \ | ||
138 | MC_CMD_ ## _name2, _value2) | ||
139 | #define MCDI_POPULATE_DWORD_3(_buf, _field, _name1, _value1, \ | ||
140 | _name2, _value2, _name3, _value3) \ | ||
141 | EFX_POPULATE_DWORD_3(*_MCDI_DWORD(_buf, _field), \ | ||
142 | MC_CMD_ ## _name1, _value1, \ | ||
143 | MC_CMD_ ## _name2, _value2, \ | ||
144 | MC_CMD_ ## _name3, _value3) | ||
145 | #define MCDI_POPULATE_DWORD_4(_buf, _field, _name1, _value1, \ | ||
146 | _name2, _value2, _name3, _value3, \ | ||
147 | _name4, _value4) \ | ||
148 | EFX_POPULATE_DWORD_4(*_MCDI_DWORD(_buf, _field), \ | ||
149 | MC_CMD_ ## _name1, _value1, \ | ||
150 | MC_CMD_ ## _name2, _value2, \ | ||
151 | MC_CMD_ ## _name3, _value3, \ | ||
152 | MC_CMD_ ## _name4, _value4) | ||
153 | #define MCDI_POPULATE_DWORD_5(_buf, _field, _name1, _value1, \ | ||
154 | _name2, _value2, _name3, _value3, \ | ||
155 | _name4, _value4, _name5, _value5) \ | ||
156 | EFX_POPULATE_DWORD_5(*_MCDI_DWORD(_buf, _field), \ | ||
157 | MC_CMD_ ## _name1, _value1, \ | ||
158 | MC_CMD_ ## _name2, _value2, \ | ||
159 | MC_CMD_ ## _name3, _value3, \ | ||
160 | MC_CMD_ ## _name4, _value4, \ | ||
161 | MC_CMD_ ## _name5, _value5) | ||
162 | #define MCDI_POPULATE_DWORD_6(_buf, _field, _name1, _value1, \ | ||
163 | _name2, _value2, _name3, _value3, \ | ||
164 | _name4, _value4, _name5, _value5, \ | ||
165 | _name6, _value6) \ | ||
166 | EFX_POPULATE_DWORD_6(*_MCDI_DWORD(_buf, _field), \ | ||
167 | MC_CMD_ ## _name1, _value1, \ | ||
168 | MC_CMD_ ## _name2, _value2, \ | ||
169 | MC_CMD_ ## _name3, _value3, \ | ||
170 | MC_CMD_ ## _name4, _value4, \ | ||
171 | MC_CMD_ ## _name5, _value5, \ | ||
172 | MC_CMD_ ## _name6, _value6) | ||
173 | #define MCDI_POPULATE_DWORD_7(_buf, _field, _name1, _value1, \ | ||
174 | _name2, _value2, _name3, _value3, \ | ||
175 | _name4, _value4, _name5, _value5, \ | ||
176 | _name6, _value6, _name7, _value7) \ | ||
177 | EFX_POPULATE_DWORD_7(*_MCDI_DWORD(_buf, _field), \ | ||
178 | MC_CMD_ ## _name1, _value1, \ | ||
179 | MC_CMD_ ## _name2, _value2, \ | ||
180 | MC_CMD_ ## _name3, _value3, \ | ||
181 | MC_CMD_ ## _name4, _value4, \ | ||
182 | MC_CMD_ ## _name5, _value5, \ | ||
183 | MC_CMD_ ## _name6, _value6, \ | ||
184 | MC_CMD_ ## _name7, _value7) | ||
131 | #define MCDI_SET_QWORD(_buf, _field, _value) \ | 185 | #define MCDI_SET_QWORD(_buf, _field, _value) \ |
132 | do { \ | 186 | do { \ |
133 | EFX_POPULATE_DWORD_1(_MCDI_DWORD(_buf, _field)[0], \ | 187 | EFX_POPULATE_DWORD_1(_MCDI_DWORD(_buf, _field)[0], \ |
diff --git a/drivers/net/ethernet/sfc/mcdi_port.c b/drivers/net/ethernet/sfc/mcdi_port.c index e359227e6b17..30e8a1936fc2 100644 --- a/drivers/net/ethernet/sfc/mcdi_port.c +++ b/drivers/net/ethernet/sfc/mcdi_port.c | |||
@@ -926,21 +926,19 @@ static int efx_mcdi_mac_stats(struct efx_nic *efx, dma_addr_t dma_addr, | |||
926 | { | 926 | { |
927 | MCDI_DECLARE_BUF(inbuf, MC_CMD_MAC_STATS_IN_LEN); | 927 | MCDI_DECLARE_BUF(inbuf, MC_CMD_MAC_STATS_IN_LEN); |
928 | int rc; | 928 | int rc; |
929 | efx_dword_t *cmd_ptr; | ||
930 | int period = enable ? 1000 : 0; | 929 | int period = enable ? 1000 : 0; |
931 | 930 | ||
932 | BUILD_BUG_ON(MC_CMD_MAC_STATS_OUT_DMA_LEN != 0); | 931 | BUILD_BUG_ON(MC_CMD_MAC_STATS_OUT_DMA_LEN != 0); |
933 | 932 | ||
934 | MCDI_SET_QWORD(inbuf, MAC_STATS_IN_DMA_ADDR, dma_addr); | 933 | MCDI_SET_QWORD(inbuf, MAC_STATS_IN_DMA_ADDR, dma_addr); |
935 | cmd_ptr = (efx_dword_t *)MCDI_PTR(inbuf, MAC_STATS_IN_CMD); | 934 | MCDI_POPULATE_DWORD_7(inbuf, MAC_STATS_IN_CMD, |
936 | EFX_POPULATE_DWORD_7(*cmd_ptr, | 935 | MAC_STATS_IN_DMA, !!enable, |
937 | MC_CMD_MAC_STATS_IN_DMA, !!enable, | 936 | MAC_STATS_IN_CLEAR, clear, |
938 | MC_CMD_MAC_STATS_IN_CLEAR, clear, | 937 | MAC_STATS_IN_PERIODIC_CHANGE, 1, |
939 | MC_CMD_MAC_STATS_IN_PERIODIC_CHANGE, 1, | 938 | MAC_STATS_IN_PERIODIC_ENABLE, !!enable, |
940 | MC_CMD_MAC_STATS_IN_PERIODIC_ENABLE, !!enable, | 939 | MAC_STATS_IN_PERIODIC_CLEAR, 0, |
941 | MC_CMD_MAC_STATS_IN_PERIODIC_CLEAR, 0, | 940 | MAC_STATS_IN_PERIODIC_NOEVENT, 1, |
942 | MC_CMD_MAC_STATS_IN_PERIODIC_NOEVENT, 1, | 941 | MAC_STATS_IN_PERIOD_MS, period); |
943 | MC_CMD_MAC_STATS_IN_PERIOD_MS, period); | ||
944 | MCDI_SET_DWORD(inbuf, MAC_STATS_IN_DMA_LEN, dma_len); | 942 | MCDI_SET_DWORD(inbuf, MAC_STATS_IN_DMA_LEN, dma_len); |
945 | 943 | ||
946 | rc = efx_mcdi_rpc(efx, MC_CMD_MAC_STATS, inbuf, sizeof(inbuf), | 944 | rc = efx_mcdi_rpc(efx, MC_CMD_MAC_STATS, inbuf, sizeof(inbuf), |