aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBert Kenward <bkenward@solarflare.com>2017-12-18 11:57:18 -0500
committerDavid S. Miller <davem@davemloft.net>2017-12-18 13:07:50 -0500
commitd8d8ccf277419b6feb281a2d08d9f881b2b724be (patch)
tree1493c4ca0d9d105ba9f1c2d7a25e8c89eeb2c56b
parentacaef3c15612d7b0f5a4835f57e87a290e054839 (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.c16
-rw-r--r--drivers/net/ethernet/sfc/ef10_regs.h46
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