summaryrefslogtreecommitdiffstats
path: root/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mlx5/mlx5_en/mlx5_en_main.c')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_main.c138
1 files changed, 65 insertions, 73 deletions
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
index fa4d546..a4a1ec7 100644
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -261,7 +261,6 @@ mlx5e_media_change(struct ifnet *dev)
error = EINVAL;
goto done;
}
-
link_mode = mlx5e_find_link_mode(IFM_SUBTYPE(priv->media.ifm_media));
error = mlx5_query_port_proto_cap(mdev, &eth_proto_cap, MLX5_PTYS_EN);
@@ -279,7 +278,6 @@ mlx5e_media_change(struct ifnet *dev)
error = EINVAL;
goto done;
}
-
mlx5_set_port_status(mdev, MLX5_PORT_DOWN);
mlx5_set_port_proto(mdev, link_mode, MLX5_PTYS_EN);
mlx5_set_port_status(mdev, MLX5_PORT_UP);
@@ -315,7 +313,7 @@ mlx5e_update_pport_counters(struct mlx5e_priv *priv)
unsigned x;
unsigned y;
- in = mlx5_vzalloc(sz);
+ in = mlx5_vzalloc(sz);
out = mlx5_vzalloc(sz);
if (in == NULL || out == NULL)
goto free_out;
@@ -334,7 +332,7 @@ mlx5e_update_pport_counters(struct mlx5e_priv *priv)
for (x = 0; x != MLX5E_PPORT_RFC2819_STATS_NUM; x++, y++)
s->arg[y] = be64toh(ptr[x]);
for (y = 0; x != MLX5E_PPORT_RFC2819_STATS_NUM +
- MLX5E_PPORT_RFC2819_STATS_DEBUG_NUM; x++, y++)
+ MLX5E_PPORT_RFC2819_STATS_DEBUG_NUM; x++, y++)
s_debug->arg[y] = be64toh(ptr[x]);
MLX5_SET(ppcnt_reg, in, grp, MLX5_RFC_2863_COUNTERS_GROUP);
@@ -343,8 +341,8 @@ mlx5e_update_pport_counters(struct mlx5e_priv *priv)
s_debug->arg[y] = be64toh(ptr[x]);
MLX5_SET(ppcnt_reg, in, grp, MLX5_PHYSICAL_LAYER_COUNTERS_GROUP);
- mlx5_core_access_reg(mdev, in, sz, out, sz, MLX5_REG_PPCNT, 0, 0);
- for (x = 0; x != MLX5E_PPORT_PHYSICAL_LAYER_STATS_DEBUG_NUM; x++, y++)
+ mlx5_core_access_reg(mdev, in, sz, out, sz, MLX5_REG_PPCNT, 0, 0);
+ for (x = 0; x != MLX5E_PPORT_PHYSICAL_LAYER_STATS_DEBUG_NUM; x++, y++)
s_debug->arg[y] = be64toh(ptr[x]);
free_out:
kvfree(in);
@@ -364,6 +362,7 @@ mlx5e_update_stats_work(struct work_struct *work)
#if (__FreeBSD_version < 1100000)
struct ifnet *ifp = priv->ifp;
#endif
+
u32 in[MLX5_ST_SZ_DW(query_vport_counter_in)];
u32 *out;
int outlen = MLX5_ST_SZ_BYTES(query_vport_counter_out);
@@ -520,7 +519,7 @@ mlx5e_update_stats_work(struct work_struct *work)
#if (__FreeBSD_version < 1100000)
/* no get_counters interface in fbsd 10 */
ifp->if_ipackets = s->rx_packets;
- ifp->if_ierrors = s->rx_error_packets;
+ ifp->if_ierrors = s->rx_error_packets;
ifp->if_iqdrops = s->rx_out_of_buffer;
ifp->if_opackets = s->tx_packets;
ifp->if_oerrors = s->tx_error_packets;
@@ -605,18 +604,18 @@ mlx5e_create_rq(struct mlx5e_channel *c,
/* Create DMA descriptor TAG */
if ((err = -bus_dma_tag_create(
- bus_get_dma_tag(mdev->pdev->dev.bsddev),
- 1, /* any alignment */
- 0, /* no boundary */
- BUS_SPACE_MAXADDR, /* lowaddr */
- BUS_SPACE_MAXADDR, /* highaddr */
- NULL, NULL, /* filter, filterarg */
- MJUM16BYTES, /* maxsize */
- 1, /* nsegments */
- MJUM16BYTES, /* maxsegsize */
- 0, /* flags */
- NULL, NULL, /* lockfunc, lockfuncarg */
- &rq->dma_tag)))
+ bus_get_dma_tag(mdev->pdev->dev.bsddev),
+ 1, /* any alignment */
+ 0, /* no boundary */
+ BUS_SPACE_MAXADDR, /* lowaddr */
+ BUS_SPACE_MAXADDR, /* highaddr */
+ NULL, NULL, /* filter, filterarg */
+ MJUM16BYTES, /* maxsize */
+ 1, /* nsegments */
+ MJUM16BYTES, /* maxsegsize */
+ 0, /* flags */
+ NULL, NULL, /* lockfunc, lockfuncarg */
+ &rq->dma_tag)))
goto done;
err = mlx5_wq_ll_create(mdev, &param->wq, rqc_wq, &rq->wq,
@@ -626,10 +625,9 @@ mlx5e_create_rq(struct mlx5e_channel *c,
rq->wq.db = &rq->wq.db[MLX5_RCV_DBR];
- if (priv->params.hw_lro_en) {
+ if (priv->params.hw_lro_en) {
rq->wqe_sz = priv->params.lro_wqe_sz;
- }
- else {
+ } else {
rq->wqe_sz = MLX5E_SW2MB_MTU(priv->ifp->if_mtu);
}
if (rq->wqe_sz > MJUM16BYTES) {
@@ -651,7 +649,6 @@ mlx5e_create_rq(struct mlx5e_channel *c,
err = -ENOMEM;
goto err_rq_wq_destroy;
}
-
for (i = 0; i != wq_sz; i++) {
struct mlx5e_rx_wqe *wqe = mlx5_wq_ll_get_wqe(&rq->wq, i);
uint32_t byte_count = rq->wqe_sz - MLX5E_NET_IP_ALIGN;
@@ -753,7 +750,7 @@ mlx5e_enable_rq(struct mlx5e_rq *rq, struct mlx5e_rq_param *param)
MLX5_SET(rqc, rqc, state, MLX5_RQC_STATE_RST);
MLX5_SET(rqc, rqc, flush_in_error_en, 1);
if (priv->counter_set_id >= 0)
- MLX5_SET(rqc, rqc, counter_set_id, priv->counter_set_id);
+ MLX5_SET(rqc, rqc, counter_set_id, priv->counter_set_id);
MLX5_SET(wq, wq, log_wq_pg_sz, rq->wq_ctrl.buf.page_shift -
PAGE_SHIFT);
MLX5_SET64(wq, wq, dbr_addr, rq->wq_ctrl.db.dma);
@@ -938,18 +935,18 @@ mlx5e_create_sq(struct mlx5e_channel *c,
/* Create DMA descriptor TAG */
if ((err = -bus_dma_tag_create(
- bus_get_dma_tag(mdev->pdev->dev.bsddev),
- 1, /* any alignment */
- 0, /* no boundary */
- BUS_SPACE_MAXADDR, /* lowaddr */
- BUS_SPACE_MAXADDR, /* highaddr */
- NULL, NULL, /* filter, filterarg */
- MLX5E_MAX_TX_PAYLOAD_SIZE, /* maxsize */
- MLX5E_MAX_TX_MBUF_FRAGS, /* nsegments */
- MLX5E_MAX_TX_MBUF_SIZE, /* maxsegsize */
- 0, /* flags */
- NULL, NULL, /* lockfunc, lockfuncarg */
- &sq->dma_tag)))
+ bus_get_dma_tag(mdev->pdev->dev.bsddev),
+ 1, /* any alignment */
+ 0, /* no boundary */
+ BUS_SPACE_MAXADDR, /* lowaddr */
+ BUS_SPACE_MAXADDR, /* highaddr */
+ NULL, NULL, /* filter, filterarg */
+ MLX5E_MAX_TX_PAYLOAD_SIZE, /* maxsize */
+ MLX5E_MAX_TX_MBUF_FRAGS, /* nsegments */
+ MLX5E_MAX_TX_MBUF_SIZE, /* maxsegsize */
+ 0, /* flags */
+ NULL, NULL, /* lockfunc, lockfuncarg */
+ &sq->dma_tag)))
goto done;
err = mlx5_alloc_map_uar(mdev, &sq->uar);
@@ -963,7 +960,7 @@ mlx5e_create_sq(struct mlx5e_channel *c,
sq->wq.db = &sq->wq.db[MLX5_SND_DBR];
sq->uar_map = sq->uar.map;
- sq->uar_bf_map = sq->uar.bf_map;
+ sq->uar_bf_map = sq->uar.bf_map;
sq->bf_buf_size = (1 << MLX5_CAP_GEN(mdev, log_bf_reg_size)) / 2;
err = mlx5e_alloc_sq_db(sq);
@@ -992,10 +989,10 @@ mlx5e_create_sq(struct mlx5e_channel *c,
err = -ENOMEM;
goto err_free_drbr;
}
+
TASK_INIT(&sq->sq_task, 0, mlx5e_tx_que, sq);
taskqueue_start_threads(&sq->sq_tq, 1, PI_NET, "%s tx sq",
- c->ifp->if_xname);
-
+ c->ifp->if_xname);
snprintf(buffer, sizeof(buffer), "txstat%dtc%d", c->ix, tc);
mlx5e_create_stats(&sq->stats.ctx, SYSCTL_CHILDREN(priv->sysctl_ifnet),
@@ -1427,7 +1424,7 @@ mlx5e_chan_mtx_destroy(struct mlx5e_channel *c)
static int
mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
struct mlx5e_channel_param *cparam,
- struct mlx5e_channel * volatile *cp)
+ struct mlx5e_channel *volatile *cp)
{
struct mlx5e_channel *c;
u8 rx_moderation_mode;
@@ -1505,7 +1502,7 @@ err_free:
}
static void
-mlx5e_close_channel(struct mlx5e_channel * volatile *pp)
+mlx5e_close_channel(struct mlx5e_channel *volatile *pp)
{
struct mlx5e_channel *c = *pp;
@@ -1517,7 +1514,7 @@ mlx5e_close_channel(struct mlx5e_channel * volatile *pp)
}
static void
-mlx5e_close_channel_wait(struct mlx5e_channel * volatile *pp)
+mlx5e_close_channel_wait(struct mlx5e_channel *volatile *pp)
{
struct mlx5e_channel *c = *pp;
@@ -1814,19 +1811,17 @@ mlx5e_build_tir_ctx(struct mlx5e_priv *priv, u32 * tirc, int tt)
MLX5_HASH_FIELD_SEL_IPSEC_SPI)
if (priv->params.hw_lro_en) {
- MLX5_SET(tirc, tirc, lro_enable_mask,
- MLX5_TIRC_LRO_ENABLE_MASK_IPV4_LRO |
- MLX5_TIRC_LRO_ENABLE_MASK_IPV6_LRO);
- MLX5_SET(tirc, tirc, lro_max_msg_sz,
- (priv->params.lro_wqe_sz -
- ROUGH_MAX_L2_L3_HDR_SZ) >> 8);
+ MLX5_SET(tirc, tirc, lro_enable_mask,
+ MLX5_TIRC_LRO_ENABLE_MASK_IPV4_LRO |
+ MLX5_TIRC_LRO_ENABLE_MASK_IPV6_LRO);
+ MLX5_SET(tirc, tirc, lro_max_msg_sz,
+ (priv->params.lro_wqe_sz -
+ ROUGH_MAX_L2_L3_HDR_SZ) >> 8);
/* TODO: add the option to choose timer value dynamically */
- MLX5_SET(tirc, tirc, lro_timeout_period_usecs,
- MLX5_CAP_ETH(priv->mdev,
- lro_timer_supported_periods[2]));
+ MLX5_SET(tirc, tirc, lro_timeout_period_usecs,
+ MLX5_CAP_ETH(priv->mdev,
+ lro_timer_supported_periods[2]));
}
-
-
switch (tt) {
case MLX5E_TT_ANY:
MLX5_SET(tirc, tirc, disp_type,
@@ -2020,6 +2015,7 @@ mlx5e_set_dev_port_mtu(struct ifnet *ifp, int sw_mtu)
err = mlx5_set_port_mtu(mdev, 0);
if (err)
return (err);
+
err = mlx5_query_port_oper_mtu(mdev, &min_mtu);
if (err) {
if_printf(ifp, "Query port minimal MTU failed\n");
@@ -2342,7 +2338,6 @@ mlx5e_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
ifp->if_capenable ^= IFCAP_RXCSUM;
if (mask & IFCAP_RXCSUM_IPV6)
ifp->if_capenable ^= IFCAP_RXCSUM_IPV6;
-
if (mask & IFCAP_TSO4) {
if (!(IFCAP_TSO4 & ifp->if_capenable) &&
!(IFCAP_TXCSUM & ifp->if_capenable)) {
@@ -2363,7 +2358,6 @@ mlx5e_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
ifp->if_capenable ^= IFCAP_TSO6;
ifp->if_hwassist ^= CSUM_IP6_TSO;
}
-
if (mask & IFCAP_VLAN_HWFILTER) {
if (ifp->if_capenable & IFCAP_VLAN_HWFILTER)
mlx5e_disable_vlan_filter(priv);
@@ -2374,13 +2368,12 @@ mlx5e_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
}
if (mask & IFCAP_VLAN_HWTAGGING)
ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING;
-
if (mask & IFCAP_WOL_MAGIC)
ifp->if_capenable ^= IFCAP_WOL_MAGIC;
VLAN_CAPABILITIES(ifp);
/* turn off LRO means also turn of HW LRO - if it's on */
- if (mask & IFCAP_LRO ) {
+ if (mask & IFCAP_LRO) {
int was_opened = test_bit(MLX5E_STATE_OPENED, &priv->state);
bool need_restart = false;
@@ -2390,7 +2383,7 @@ mlx5e_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
priv->params.hw_lro_en = false;
need_restart = true;
/* Not sure this is the correct way */
- priv->params_ethtool.hw_lro = priv->params.hw_lro_en;
+ priv->params_ethtool.hw_lro = priv->params.hw_lro_en;
}
}
if (was_opened && need_restart) {
@@ -2405,7 +2398,10 @@ out:
case SIOCGI2C:
ifr = (struct ifreq *)data;
- /* Copy from the user-space address ifr_data to the kernel-space address i2c */
+ /*
+ * Copy from the user-space address ifr_data to the
+ * kernel-space address i2c
+ */
error = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
if (error)
break;
@@ -2515,11 +2511,10 @@ mlx5e_build_ifp_priv(struct mlx5_core_dev *mdev,
priv->params.default_vlan_prio = 0;
priv->counter_set_id = -1;
- /*
- * hw lro is currently defaulted to off.
- * when it won't anymore we will consider the
- * HW capability: "!!MLX5_CAP_ETH(mdev, lro_cap)"
- */
+ /*
+ * hw lro is currently defaulted to off. when it won't anymore we
+ * will consider the HW capability: "!!MLX5_CAP_ETH(mdev, lro_cap)"
+ */
priv->params.hw_lro_en = false;
priv->params.lro_wqe_sz = MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ;
@@ -2593,11 +2588,12 @@ mlx5e_priv_mtx_destroy(struct mlx5e_priv *priv)
static int
sysctl_firmware(SYSCTL_HANDLER_ARGS)
{
- /* %d.%d%.d the string format.
+ /*
+ * %d.%d%.d the string format.
* fw_rev_{maj,min,sub} return u16, 2^16 = 65536.
* We need at most 5 chars to store that.
- * it also has: two "." and NULL at the end.
- * Which means we need 18 (5*3 + 3) chars at most.
+ * It also has: two "." and NULL at the end, which means we need 18
+ * (5*3 + 3) chars at most.
*/
char fw[18];
struct mlx5e_priv *priv = arg1;
@@ -2702,6 +2698,7 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev)
mlx5_core_err(mdev, "SYSCTL_ADD_NODE() failed\n");
goto err_free_sysctl;
}
+
/* HW sysctl tree */
child = SYSCTL_CHILDREN(device_get_sysctl_tree(mdev->pdev->dev.bsddev));
priv->sysctl_hw = SYSCTL_ADD_NODE(&priv->sysctl_ctx, child,
@@ -2710,9 +2707,7 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev)
mlx5_core_err(mdev, "SYSCTL_ADD_NODE() failed\n");
goto err_free_sysctl;
}
-
mlx5e_build_ifp_priv(mdev, priv, ncv);
-
err = mlx5_alloc_map_uar(mdev, &priv->cq_uar);
if (err) {
if_printf(ifp, "%s: mlx5_alloc_map_uar failed, %d\n",
@@ -2725,15 +2720,12 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev)
__func__, err);
goto err_unmap_free_uar;
}
-
err = mlx5_alloc_transport_domain(mdev, &priv->tdn);
-
if (err) {
if_printf(ifp, "%s: mlx5_alloc_transport_domain failed, %d\n",
- __func__, err);
+ __func__, err);
goto err_dealloc_pd;
}
-
err = mlx5e_create_mkey(priv, priv->pdn, &priv->mr);
if (err) {
if_printf(ifp, "%s: mlx5e_create_mkey failed, %d\n",
OpenPOWER on IntegriCloud