diff options
author | Bert Kenward <bkenward@solarflare.com> | 2017-12-18 11:57:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-18 13:07:50 -0500 |
commit | d8d8ccf277419b6feb281a2d08d9f881b2b724be (patch) | |
tree | 1493c4ca0d9d105ba9f1c2d7a25e8c89eeb2c56b | |
parent | acaef3c15612d7b0f5a4835f57e87a290e054839 (diff) |
sfc: update EF10 register definitions
The RX_L4_CLASS field has shrunk from 3 bits to 2 bits. The upper
bit was never used in previous hardware, so we can use the new
definition throughout.
The TSO OUTER_IPID field was previously spelt differently from the
external definitions.
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/sfc/ef10.c | 16 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/ef10_regs.h | 46 |
2 files changed, 37 insertions, 25 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c index 009bf28bdba5..56a6bc60dac1 100644 --- a/drivers/net/ethernet/sfc/ef10.c +++ b/drivers/net/ethernet/sfc/ef10.c | |||
@@ -3292,8 +3292,8 @@ static u16 efx_ef10_handle_rx_event_errors(struct efx_channel *channel, | |||
3292 | if (unlikely(rx_encap_hdr != ESE_EZ_ENCAP_HDR_VXLAN && | 3292 | if (unlikely(rx_encap_hdr != ESE_EZ_ENCAP_HDR_VXLAN && |
3293 | ((rx_l3_class != ESE_DZ_L3_CLASS_IP4 && | 3293 | ((rx_l3_class != ESE_DZ_L3_CLASS_IP4 && |
3294 | rx_l3_class != ESE_DZ_L3_CLASS_IP6) || | 3294 | rx_l3_class != ESE_DZ_L3_CLASS_IP6) || |
3295 | (rx_l4_class != ESE_DZ_L4_CLASS_TCP && | 3295 | (rx_l4_class != ESE_FZ_L4_CLASS_TCP && |
3296 | rx_l4_class != ESE_DZ_L4_CLASS_UDP)))) | 3296 | rx_l4_class != ESE_FZ_L4_CLASS_UDP)))) |
3297 | netdev_WARN(efx->net_dev, | 3297 | netdev_WARN(efx->net_dev, |
3298 | "invalid class for RX_TCPUDP_CKSUM_ERR: event=" | 3298 | "invalid class for RX_TCPUDP_CKSUM_ERR: event=" |
3299 | EFX_QWORD_FMT "\n", | 3299 | EFX_QWORD_FMT "\n", |
@@ -3330,8 +3330,8 @@ static u16 efx_ef10_handle_rx_event_errors(struct efx_channel *channel, | |||
3330 | EFX_QWORD_VAL(*event)); | 3330 | EFX_QWORD_VAL(*event)); |
3331 | else if (unlikely((rx_l3_class != ESE_DZ_L3_CLASS_IP4 && | 3331 | else if (unlikely((rx_l3_class != ESE_DZ_L3_CLASS_IP4 && |
3332 | rx_l3_class != ESE_DZ_L3_CLASS_IP6) || | 3332 | rx_l3_class != ESE_DZ_L3_CLASS_IP6) || |
3333 | (rx_l4_class != ESE_DZ_L4_CLASS_TCP && | 3333 | (rx_l4_class != ESE_FZ_L4_CLASS_TCP && |
3334 | rx_l4_class != ESE_DZ_L4_CLASS_UDP))) | 3334 | rx_l4_class != ESE_FZ_L4_CLASS_UDP))) |
3335 | netdev_WARN(efx->net_dev, | 3335 | netdev_WARN(efx->net_dev, |
3336 | "invalid class for RX_TCP_UDP_INNER_CHKSUM_ERR: event=" | 3336 | "invalid class for RX_TCP_UDP_INNER_CHKSUM_ERR: event=" |
3337 | EFX_QWORD_FMT "\n", | 3337 | EFX_QWORD_FMT "\n", |
@@ -3366,7 +3366,7 @@ static int efx_ef10_handle_rx_event(struct efx_channel *channel, | |||
3366 | next_ptr_lbits = EFX_QWORD_FIELD(*event, ESF_DZ_RX_DSC_PTR_LBITS); | 3366 | next_ptr_lbits = EFX_QWORD_FIELD(*event, ESF_DZ_RX_DSC_PTR_LBITS); |
3367 | rx_queue_label = EFX_QWORD_FIELD(*event, ESF_DZ_RX_QLABEL); | 3367 | rx_queue_label = EFX_QWORD_FIELD(*event, ESF_DZ_RX_QLABEL); |
3368 | rx_l3_class = EFX_QWORD_FIELD(*event, ESF_DZ_RX_L3_CLASS); | 3368 | rx_l3_class = EFX_QWORD_FIELD(*event, ESF_DZ_RX_L3_CLASS); |
3369 | rx_l4_class = EFX_QWORD_FIELD(*event, ESF_DZ_RX_L4_CLASS); | 3369 | rx_l4_class = EFX_QWORD_FIELD(*event, ESF_FZ_RX_L4_CLASS); |
3370 | rx_cont = EFX_QWORD_FIELD(*event, ESF_DZ_RX_CONT); | 3370 | rx_cont = EFX_QWORD_FIELD(*event, ESF_DZ_RX_CONT); |
3371 | rx_encap_hdr = | 3371 | rx_encap_hdr = |
3372 | nic_data->datapath_caps & | 3372 | nic_data->datapath_caps & |
@@ -3444,8 +3444,8 @@ static int efx_ef10_handle_rx_event(struct efx_channel *channel, | |||
3444 | rx_l3_class, rx_l4_class, | 3444 | rx_l3_class, rx_l4_class, |
3445 | event); | 3445 | event); |
3446 | } else { | 3446 | } else { |
3447 | bool tcpudp = rx_l4_class == ESE_DZ_L4_CLASS_TCP || | 3447 | bool tcpudp = rx_l4_class == ESE_FZ_L4_CLASS_TCP || |
3448 | rx_l4_class == ESE_DZ_L4_CLASS_UDP; | 3448 | rx_l4_class == ESE_FZ_L4_CLASS_UDP; |
3449 | 3449 | ||
3450 | switch (rx_encap_hdr) { | 3450 | switch (rx_encap_hdr) { |
3451 | case ESE_EZ_ENCAP_HDR_VXLAN: /* VxLAN or GENEVE */ | 3451 | case ESE_EZ_ENCAP_HDR_VXLAN: /* VxLAN or GENEVE */ |
@@ -3466,7 +3466,7 @@ static int efx_ef10_handle_rx_event(struct efx_channel *channel, | |||
3466 | } | 3466 | } |
3467 | } | 3467 | } |
3468 | 3468 | ||
3469 | if (rx_l4_class == ESE_DZ_L4_CLASS_TCP) | 3469 | if (rx_l4_class == ESE_FZ_L4_CLASS_TCP) |
3470 | flags |= EFX_RX_PKT_TCP; | 3470 | flags |= EFX_RX_PKT_TCP; |
3471 | 3471 | ||
3472 | channel->irq_mod_score += 2 * n_packets; | 3472 | channel->irq_mod_score += 2 * n_packets; |
diff --git a/drivers/net/ethernet/sfc/ef10_regs.h b/drivers/net/ethernet/sfc/ef10_regs.h index 2c4bf9476c37..6a56778cf06c 100644 --- a/drivers/net/ethernet/sfc/ef10_regs.h +++ b/drivers/net/ethernet/sfc/ef10_regs.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | * Driver for Solarflare network controllers and boards | 2 | * Driver for Solarflare network controllers and boards |
3 | * Copyright 2012-2015 Solarflare Communications Inc. | 3 | * Copyright 2012-2017 Solarflare Communications Inc. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 5 | * This program is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License version 2 as published | 6 | * under the terms of the GNU General Public License version 2 as published |
@@ -79,6 +79,8 @@ | |||
79 | #define ER_DZ_EVQ_TMR 0x00000420 | 79 | #define ER_DZ_EVQ_TMR 0x00000420 |
80 | #define ER_DZ_EVQ_TMR_STEP 8192 | 80 | #define ER_DZ_EVQ_TMR_STEP 8192 |
81 | #define ER_DZ_EVQ_TMR_ROWS 2048 | 81 | #define ER_DZ_EVQ_TMR_ROWS 2048 |
82 | #define ERF_FZ_TC_TMR_REL_VAL_LBN 16 | ||
83 | #define ERF_FZ_TC_TMR_REL_VAL_WIDTH 14 | ||
82 | #define ERF_DZ_TC_TIMER_MODE_LBN 14 | 84 | #define ERF_DZ_TC_TIMER_MODE_LBN 14 |
83 | #define ERF_DZ_TC_TIMER_MODE_WIDTH 2 | 85 | #define ERF_DZ_TC_TIMER_MODE_WIDTH 2 |
84 | #define ERF_DZ_TC_TIMER_VAL_LBN 0 | 86 | #define ERF_DZ_TC_TIMER_VAL_LBN 0 |
@@ -159,16 +161,24 @@ | |||
159 | #define ESF_DZ_RX_EV_SOFT2_WIDTH 2 | 161 | #define ESF_DZ_RX_EV_SOFT2_WIDTH 2 |
160 | #define ESF_DZ_RX_DSC_PTR_LBITS_LBN 48 | 162 | #define ESF_DZ_RX_DSC_PTR_LBITS_LBN 48 |
161 | #define ESF_DZ_RX_DSC_PTR_LBITS_WIDTH 4 | 163 | #define ESF_DZ_RX_DSC_PTR_LBITS_WIDTH 4 |
162 | #define ESF_DZ_RX_L4_CLASS_LBN 45 | 164 | #define ESF_DE_RX_L4_CLASS_LBN 45 |
163 | #define ESF_DZ_RX_L4_CLASS_WIDTH 3 | 165 | #define ESF_DE_RX_L4_CLASS_WIDTH 3 |
164 | #define ESE_DZ_L4_CLASS_RSVD7 7 | 166 | #define ESE_DE_L4_CLASS_RSVD7 7 |
165 | #define ESE_DZ_L4_CLASS_RSVD6 6 | 167 | #define ESE_DE_L4_CLASS_RSVD6 6 |
166 | #define ESE_DZ_L4_CLASS_RSVD5 5 | 168 | #define ESE_DE_L4_CLASS_RSVD5 5 |
167 | #define ESE_DZ_L4_CLASS_RSVD4 4 | 169 | #define ESE_DE_L4_CLASS_RSVD4 4 |
168 | #define ESE_DZ_L4_CLASS_RSVD3 3 | 170 | #define ESE_DE_L4_CLASS_RSVD3 3 |
169 | #define ESE_DZ_L4_CLASS_UDP 2 | 171 | #define ESE_DE_L4_CLASS_UDP 2 |
170 | #define ESE_DZ_L4_CLASS_TCP 1 | 172 | #define ESE_DE_L4_CLASS_TCP 1 |
171 | #define ESE_DZ_L4_CLASS_UNKNOWN 0 | 173 | #define ESE_DE_L4_CLASS_UNKNOWN 0 |
174 | #define ESF_FZ_RX_FASTPD_INDCTR_LBN 47 | ||
175 | #define ESF_FZ_RX_FASTPD_INDCTR_WIDTH 1 | ||
176 | #define ESF_FZ_RX_L4_CLASS_LBN 45 | ||
177 | #define ESF_FZ_RX_L4_CLASS_WIDTH 2 | ||
178 | #define ESE_FZ_L4_CLASS_RSVD3 3 | ||
179 | #define ESE_FZ_L4_CLASS_UDP 2 | ||
180 | #define ESE_FZ_L4_CLASS_TCP 1 | ||
181 | #define ESE_FZ_L4_CLASS_UNKNOWN 0 | ||
172 | #define ESF_DZ_RX_L3_CLASS_LBN 42 | 182 | #define ESF_DZ_RX_L3_CLASS_LBN 42 |
173 | #define ESF_DZ_RX_L3_CLASS_WIDTH 3 | 183 | #define ESF_DZ_RX_L3_CLASS_WIDTH 3 |
174 | #define ESE_DZ_L3_CLASS_RSVD7 7 | 184 | #define ESE_DZ_L3_CLASS_RSVD7 7 |
@@ -215,6 +225,8 @@ | |||
215 | #define ESF_EZ_RX_ABORT_WIDTH 1 | 225 | #define ESF_EZ_RX_ABORT_WIDTH 1 |
216 | #define ESF_DZ_RX_ECC_ERR_LBN 29 | 226 | #define ESF_DZ_RX_ECC_ERR_LBN 29 |
217 | #define ESF_DZ_RX_ECC_ERR_WIDTH 1 | 227 | #define ESF_DZ_RX_ECC_ERR_WIDTH 1 |
228 | #define ESF_DZ_RX_TRUNC_ERR_LBN 29 | ||
229 | #define ESF_DZ_RX_TRUNC_ERR_WIDTH 1 | ||
218 | #define ESF_DZ_RX_CRC1_ERR_LBN 28 | 230 | #define ESF_DZ_RX_CRC1_ERR_LBN 28 |
219 | #define ESF_DZ_RX_CRC1_ERR_WIDTH 1 | 231 | #define ESF_DZ_RX_CRC1_ERR_WIDTH 1 |
220 | #define ESF_DZ_RX_CRC0_ERR_LBN 27 | 232 | #define ESF_DZ_RX_CRC0_ERR_LBN 27 |
@@ -332,6 +344,8 @@ | |||
332 | #define ESE_DZ_TX_OPTION_DESC_CRC_CSUM 0 | 344 | #define ESE_DZ_TX_OPTION_DESC_CRC_CSUM 0 |
333 | #define ESF_DZ_TX_TSO_OPTION_TYPE_LBN 56 | 345 | #define ESF_DZ_TX_TSO_OPTION_TYPE_LBN 56 |
334 | #define ESF_DZ_TX_TSO_OPTION_TYPE_WIDTH 4 | 346 | #define ESF_DZ_TX_TSO_OPTION_TYPE_WIDTH 4 |
347 | #define ESE_DZ_TX_TSO_OPTION_DESC_FATSO2B 3 | ||
348 | #define ESE_DZ_TX_TSO_OPTION_DESC_FATSO2A 2 | ||
335 | #define ESE_DZ_TX_TSO_OPTION_DESC_ENCAP 1 | 349 | #define ESE_DZ_TX_TSO_OPTION_DESC_ENCAP 1 |
336 | #define ESE_DZ_TX_TSO_OPTION_DESC_NORMAL 0 | 350 | #define ESE_DZ_TX_TSO_OPTION_DESC_NORMAL 0 |
337 | #define ESF_DZ_TX_TSO_TCP_FLAGS_LBN 48 | 351 | #define ESF_DZ_TX_TSO_TCP_FLAGS_LBN 48 |
@@ -341,7 +355,7 @@ | |||
341 | #define ESF_DZ_TX_TSO_TCP_SEQNO_LBN 0 | 355 | #define ESF_DZ_TX_TSO_TCP_SEQNO_LBN 0 |
342 | #define ESF_DZ_TX_TSO_TCP_SEQNO_WIDTH 32 | 356 | #define ESF_DZ_TX_TSO_TCP_SEQNO_WIDTH 32 |
343 | 357 | ||
344 | /* TX_TSO_FATSO2A_DESC */ | 358 | /* TX_TSO_V2_DESC_A */ |
345 | #define ESF_DZ_TX_DESC_IS_OPT_LBN 63 | 359 | #define ESF_DZ_TX_DESC_IS_OPT_LBN 63 |
346 | #define ESF_DZ_TX_DESC_IS_OPT_WIDTH 1 | 360 | #define ESF_DZ_TX_DESC_IS_OPT_WIDTH 1 |
347 | #define ESF_DZ_TX_OPTION_TYPE_LBN 60 | 361 | #define ESF_DZ_TX_OPTION_TYPE_LBN 60 |
@@ -360,8 +374,7 @@ | |||
360 | #define ESF_DZ_TX_TSO_TCP_SEQNO_LBN 0 | 374 | #define ESF_DZ_TX_TSO_TCP_SEQNO_LBN 0 |
361 | #define ESF_DZ_TX_TSO_TCP_SEQNO_WIDTH 32 | 375 | #define ESF_DZ_TX_TSO_TCP_SEQNO_WIDTH 32 |
362 | 376 | ||
363 | 377 | /* TX_TSO_V2_DESC_B */ | |
364 | /* TX_TSO_FATSO2B_DESC */ | ||
365 | #define ESF_DZ_TX_DESC_IS_OPT_LBN 63 | 378 | #define ESF_DZ_TX_DESC_IS_OPT_LBN 63 |
366 | #define ESF_DZ_TX_DESC_IS_OPT_WIDTH 1 | 379 | #define ESF_DZ_TX_DESC_IS_OPT_WIDTH 1 |
367 | #define ESF_DZ_TX_OPTION_TYPE_LBN 60 | 380 | #define ESF_DZ_TX_OPTION_TYPE_LBN 60 |
@@ -375,11 +388,10 @@ | |||
375 | #define ESE_DZ_TX_TSO_OPTION_DESC_FATSO2A 2 | 388 | #define ESE_DZ_TX_TSO_OPTION_DESC_FATSO2A 2 |
376 | #define ESE_DZ_TX_TSO_OPTION_DESC_ENCAP 1 | 389 | #define ESE_DZ_TX_TSO_OPTION_DESC_ENCAP 1 |
377 | #define ESE_DZ_TX_TSO_OPTION_DESC_NORMAL 0 | 390 | #define ESE_DZ_TX_TSO_OPTION_DESC_NORMAL 0 |
378 | #define ESF_DZ_TX_TSO_OUTER_IP_ID_LBN 0 | ||
379 | #define ESF_DZ_TX_TSO_OUTER_IP_ID_WIDTH 16 | ||
380 | #define ESF_DZ_TX_TSO_TCP_MSS_LBN 32 | 391 | #define ESF_DZ_TX_TSO_TCP_MSS_LBN 32 |
381 | #define ESF_DZ_TX_TSO_TCP_MSS_WIDTH 16 | 392 | #define ESF_DZ_TX_TSO_TCP_MSS_WIDTH 16 |
382 | 393 | #define ESF_DZ_TX_TSO_OUTER_IPID_LBN 0 | |
394 | #define ESF_DZ_TX_TSO_OUTER_IPID_WIDTH 16 | ||
383 | 395 | ||
384 | /*************************************************************************/ | 396 | /*************************************************************************/ |
385 | 397 | ||