Skip to content

Commit

Permalink
net/hns3: support FEC
Browse files Browse the repository at this point in the history
Forward error correction (FEC) is a bit error correction mode.
It adds error correction information to data packets at the
transmit end, and uses the error correction information to correct
the bit errors generated during data packet transmission at the
receive end. This improves signal quality but also brings a delay
to signals. This function can be enabled or disabled as required.

This patch adds FEC support for ethdev.Introduce ethdev
operations which support query and config FEC information in
hardware.

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Chengchang Tang <tangchengchang@huawei.com>
  • Loading branch information
hushenggitcount authored and Ferruh Yigit committed Oct 9, 2020
1 parent b7ccfb0 commit 9bf2ea8
Show file tree
Hide file tree
Showing 4 changed files with 380 additions and 1 deletion.
5 changes: 5 additions & 0 deletions doc/guides/rel_notes/release_20_11.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ New Features
* Added support for non-zero priorities for group 0 flows
* Added support for VXLAN decap combined with VLAN pop

* **Added hns3 FEC PMD, for supporting query and config FEC mode.**

Added the FEC PMD which provides functions for query FEC capabilities and
current FEC mode from device. Also, PMD for configuring FEC mode is also provided.

* **Updated Solarflare network PMD.**

Updated the Solarflare ``sfc_efx`` driver with changes including:
Expand Down
19 changes: 18 additions & 1 deletion drivers/net/hns3/hns3_cmd.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ enum hns3_opcode_type {
HNS3_OPC_QUERY_LINK_STATUS = 0x0307,
HNS3_OPC_CONFIG_MAX_FRM_SIZE = 0x0308,
HNS3_OPC_CONFIG_SPEED_DUP = 0x0309,
HNS3_OPC_CONFIG_FEC_MODE = 0x031A,

/* PFC/Pause commands */
HNS3_OPC_CFG_MAC_PAUSE_EN = 0x0701,
Expand Down Expand Up @@ -687,9 +688,25 @@ struct hns3_config_auto_neg_cmd {
uint8_t rsv[20];
};

#define HNS3_MAC_CFG_FEC_AUTO_EN_B 0
#define HNS3_MAC_CFG_FEC_MODE_S 1
#define HNS3_MAC_CFG_FEC_MODE_M GENMASK(3, 1)
#define HNS3_MAC_FEC_OFF 0
#define HNS3_MAC_FEC_BASER 1
#define HNS3_MAC_FEC_RS 2

struct hns3_sfp_speed_cmd {
uint32_t sfp_speed;
uint32_t rsv[5];
uint8_t query_type; /* 0: sfp speed, 1: active fec */
uint8_t active_fec; /* current FEC mode */
uint16_t rsv1;
uint32_t rsv2[4];
};

/* Configure FEC mode, opcode:0x031A */
struct hns3_config_fec_cmd {
uint8_t fec_mode;
uint8_t rsv[23];
};

#define HNS3_MAC_MGR_MASK_VLAN_B BIT(0)
Expand Down

0 comments on commit 9bf2ea8

Please sign in to comment.