Skip to content

Commit 8bb309e

Browse files
committed
Merge tag 'mlx5-updates-2019-04-02' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mamameed says: ==================== mlx5-updates-2019-04-02 This series provides misc updates to mlx5 driver 1) Aya Levin (1): Handle event of power detection in the PCIE slot 2) Eli Britstein (6): Some TC VLAN related updates and fixes to the previous VLAN modify action support patchset. Offload TC e-switch rules with egress/ingress VLAN devices 3) Max Gurtovoy (1): Fix double mutex initialization in esiwtch.c 4) Tariq Toukan (3): Misc small updates A write memory barrier is sufficient in EQ ci update Obsolete param field holding a constant value Unify logic of MTU boundaries 5) Tonghao Zhang (4): Misc updates to en_tc.c Make the log friendly when decapsulation offload not supported Remove 'parse_attr' argument in parse_tc_fdb_actions() Deletes unnecessary setting of esw_attr->parse_attr Return -EOPNOTSUPP when attempting to offload an unsupported action ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents ed514fc + 6d7ee2e commit 8bb309e

File tree

27 files changed

+747
-397
lines changed

27 files changed

+747
-397
lines changed

drivers/infiniband/hw/mlx5/cmd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ int mlx5_cmd_alloc_memic(struct mlx5_memic *memic, phys_addr_t *addr,
148148
return ret;
149149
}
150150

151-
*addr = pci_resource_start(dev->pdev, 0) +
151+
*addr = dev->bar_addr +
152152
MLX5_GET64(alloc_memic_out, out, memic_start_addr);
153153

154154
return 0;
@@ -167,7 +167,7 @@ int mlx5_cmd_dealloc_memic(struct mlx5_memic *memic, u64 addr, u64 length)
167167
u64 start_page_idx;
168168
int err;
169169

170-
addr -= pci_resource_start(dev->pdev, 0);
170+
addr -= dev->bar_addr;
171171
start_page_idx = (addr - hw_start_addr) >> PAGE_SHIFT;
172172

173173
MLX5_SET(dealloc_memic_in, in, opcode, MLX5_CMD_OP_DEALLOC_MEMIC);

drivers/infiniband/hw/mlx5/main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2009,7 +2009,7 @@ static phys_addr_t uar_index2pfn(struct mlx5_ib_dev *dev,
20092009

20102010
fw_uars_per_page = MLX5_CAP_GEN(dev->mdev, uar_4k) ? MLX5_UARS_IN_PAGE : 1;
20112011

2012-
return (pci_resource_start(dev->mdev->pdev, 0) >> PAGE_SHIFT) + uar_idx / fw_uars_per_page;
2012+
return (dev->mdev->bar_addr >> PAGE_SHIFT) + uar_idx / fw_uars_per_page;
20132013
}
20142014

20152015
static int get_command(unsigned long offset)
@@ -2199,7 +2199,7 @@ static int dm_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
21992199
page_idx + npages)
22002200
return -EINVAL;
22012201

2202-
pfn = ((pci_resource_start(dev->mdev->pdev, 0) +
2202+
pfn = ((dev->mdev->bar_addr +
22032203
MLX5_CAP64_DEV_MEM(dev->mdev, memic_bar_start_addr)) >>
22042204
PAGE_SHIFT) +
22052205
page_idx;
@@ -2283,7 +2283,7 @@ struct ib_dm *mlx5_ib_alloc_dm(struct ib_device *ibdev,
22832283
goto err_free;
22842284

22852285
start_offset = memic_addr & ~PAGE_MASK;
2286-
page_idx = (memic_addr - pci_resource_start(memic->dev->pdev, 0) -
2286+
page_idx = (memic_addr - memic->dev->bar_addr -
22872287
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
22882288
PAGE_SHIFT;
22892289

@@ -2326,7 +2326,7 @@ int mlx5_ib_dealloc_dm(struct ib_dm *ibdm)
23262326
if (ret)
23272327
return ret;
23282328

2329-
page_idx = (dm->dev_addr - pci_resource_start(memic->dev->pdev, 0) -
2329+
page_idx = (dm->dev_addr - memic->dev->bar_addr -
23302330
MLX5_CAP64_DEV_MEM(memic->dev, memic_bar_start_addr)) >>
23312331
PAGE_SHIFT;
23322332
bitmap_clear(to_mucontext(ibdm->uobject->context)->dm_pages,

drivers/infiniband/hw/mlx5/mr.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,8 +1194,7 @@ static struct ib_mr *mlx5_ib_get_memic_mr(struct ib_pd *pd, u64 memic_addr,
11941194
MLX5_SET64(mkc, mkc, len, length);
11951195
MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn);
11961196
MLX5_SET(mkc, mkc, qpn, 0xffffff);
1197-
MLX5_SET64(mkc, mkc, start_addr,
1198-
memic_addr - pci_resource_start(dev->mdev->pdev, 0));
1197+
MLX5_SET64(mkc, mkc, start_addr, memic_addr - dev->mdev->bar_addr);
11991198

12001199
err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, inlen);
12011200
if (err)

drivers/infiniband/hw/mlx5/qp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5119,7 +5119,7 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
51195119
wmb();
51205120

51215121
/* currently we support only regular doorbells */
5122-
mlx5_write64((__be32 *)ctrl, bf->bfreg->map + bf->offset, NULL);
5122+
mlx5_write64((__be32 *)ctrl, bf->bfreg->map + bf->offset);
51235123
/* Make sure doorbells don't leak out of SQ spinlock
51245124
* and reach the HCA out of order.
51255125
*/

drivers/net/ethernet/mellanox/mlx5/core/cmd.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,7 +1347,7 @@ static void set_wqname(struct mlx5_core_dev *dev)
13471347
struct mlx5_cmd *cmd = &dev->cmd;
13481348

13491349
snprintf(cmd->wq_name, sizeof(cmd->wq_name), "mlx5_cmd_%s",
1350-
dev_name(&dev->pdev->dev));
1350+
dev->priv.name);
13511351
}
13521352

13531353
static void clean_debug_files(struct mlx5_core_dev *dev)
@@ -1902,9 +1902,9 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
19021902
memset(cmd, 0, sizeof(*cmd));
19031903
cmd_if_rev = cmdif_rev(dev);
19041904
if (cmd_if_rev != CMD_IF_REV) {
1905-
dev_err(&dev->pdev->dev,
1906-
"Driver cmdif rev(%d) differs from firmware's(%d)\n",
1907-
CMD_IF_REV, cmd_if_rev);
1905+
mlx5_core_err(dev,
1906+
"Driver cmdif rev(%d) differs from firmware's(%d)\n",
1907+
CMD_IF_REV, cmd_if_rev);
19081908
return -EINVAL;
19091909
}
19101910

@@ -1921,14 +1921,14 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
19211921
cmd->log_sz = cmd_l >> 4 & 0xf;
19221922
cmd->log_stride = cmd_l & 0xf;
19231923
if (1 << cmd->log_sz > MLX5_MAX_COMMANDS) {
1924-
dev_err(&dev->pdev->dev, "firmware reports too many outstanding commands %d\n",
1925-
1 << cmd->log_sz);
1924+
mlx5_core_err(dev, "firmware reports too many outstanding commands %d\n",
1925+
1 << cmd->log_sz);
19261926
err = -EINVAL;
19271927
goto err_free_page;
19281928
}
19291929

19301930
if (cmd->log_sz + cmd->log_stride > MLX5_ADAPTER_PAGE_SHIFT) {
1931-
dev_err(&dev->pdev->dev, "command queue size overflow\n");
1931+
mlx5_core_err(dev, "command queue size overflow\n");
19321932
err = -EINVAL;
19331933
goto err_free_page;
19341934
}
@@ -1939,8 +1939,8 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
19391939

19401940
cmd->cmdif_rev = ioread32be(&dev->iseg->cmdif_rev_fw_sub) >> 16;
19411941
if (cmd->cmdif_rev > CMD_IF_REV) {
1942-
dev_err(&dev->pdev->dev, "driver does not support command interface version. driver %d, firmware %d\n",
1943-
CMD_IF_REV, cmd->cmdif_rev);
1942+
mlx5_core_err(dev, "driver does not support command interface version. driver %d, firmware %d\n",
1943+
CMD_IF_REV, cmd->cmdif_rev);
19441944
err = -EOPNOTSUPP;
19451945
goto err_free_page;
19461946
}
@@ -1956,7 +1956,7 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
19561956
cmd_h = (u32)((u64)(cmd->dma) >> 32);
19571957
cmd_l = (u32)(cmd->dma);
19581958
if (cmd_l & 0xfff) {
1959-
dev_err(&dev->pdev->dev, "invalid command queue address\n");
1959+
mlx5_core_err(dev, "invalid command queue address\n");
19601960
err = -ENOMEM;
19611961
goto err_free_page;
19621962
}
@@ -1976,7 +1976,7 @@ int mlx5_cmd_init(struct mlx5_core_dev *dev)
19761976
set_wqname(dev);
19771977
cmd->wq = create_singlethread_workqueue(cmd->wq_name);
19781978
if (!cmd->wq) {
1979-
dev_err(&dev->pdev->dev, "failed to create command workqueue\n");
1979+
mlx5_core_err(dev, "failed to create command workqueue\n");
19801980
err = -ENOMEM;
19811981
goto err_cache;
19821982
}

drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer_tracepoint.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ TRACE_EVENT(mlx5_fw,
4747
TP_ARGS(tracer, trace_timestamp, lost, event_id, msg),
4848

4949
TP_STRUCT__entry(
50-
__string(dev_name, dev_name(&tracer->dev->pdev->dev))
50+
__string(dev_name, tracer->dev->priv.name)
5151
__field(u64, trace_timestamp)
5252
__field(bool, lost)
5353
__field(u8, event_id)
5454
__string(msg, msg)
5555
),
5656

5757
TP_fast_assign(
58-
__assign_str(dev_name, dev_name(&tracer->dev->pdev->dev));
58+
__assign_str(dev_name, tracer->dev->priv.name);
5959
__entry->trace_timestamp = trace_timestamp;
6060
__entry->lost = lost;
6161
__entry->event_id = event_id;

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,6 @@ struct mlx5e_params {
241241
struct net_dim_cq_moder rx_cq_moderation;
242242
struct net_dim_cq_moder tx_cq_moderation;
243243
bool lro_en;
244-
u32 lro_wqe_sz;
245244
u8 tx_min_inline_mode;
246245
bool vlan_strip_disable;
247246
bool scatter_fcs_en;
@@ -975,7 +974,7 @@ void mlx5e_notify_hw(struct mlx5_wq_cyc *wq, u16 pc,
975974
*/
976975
wmb();
977976

978-
mlx5_write64((__be32 *)ctrl, uar_map, NULL);
977+
mlx5_write64((__be32 *)ctrl, uar_map);
979978
}
980979

981980
static inline void mlx5e_cq_arm(struct mlx5e_cq *cq)
@@ -1087,6 +1086,7 @@ mlx5e_create_netdev(struct mlx5_core_dev *mdev, const struct mlx5e_profile *prof
10871086
int mlx5e_attach_netdev(struct mlx5e_priv *priv);
10881087
void mlx5e_detach_netdev(struct mlx5e_priv *priv);
10891088
void mlx5e_destroy_netdev(struct mlx5e_priv *priv);
1089+
void mlx5e_set_netdev_mtu_boundaries(struct mlx5e_priv *priv);
10901090
void mlx5e_build_nic_params(struct mlx5_core_dev *mdev,
10911091
struct mlx5e_rss_params *rss_params,
10921092
struct mlx5e_params *params,

drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ static const char *mlx5e_netdev_kind(struct net_device *dev)
9696
if (dev->rtnl_link_ops)
9797
return dev->rtnl_link_ops->kind;
9898
else
99-
return "";
99+
return "unknown";
100100
}
101101

102102
static int mlx5e_route_lookup_ipv6(struct mlx5e_priv *priv,
@@ -636,8 +636,10 @@ int mlx5e_tc_tun_parse(struct net_device *filter_dev,
636636
headers_c, headers_v);
637637
} else {
638638
netdev_warn(priv->netdev,
639-
"decapsulation offload is not supported for %s net device (%d)\n",
640-
mlx5e_netdev_kind(filter_dev), tunnel_type);
639+
"decapsulation offload is not supported for %s (kind: \"%s\")\n",
640+
netdev_name(filter_dev),
641+
mlx5e_netdev_kind(filter_dev));
642+
641643
return -EOPNOTSUPP;
642644
}
643645
return err;

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ static u16 mlx5e_get_rq_headroom(struct mlx5_core_dev *mdev,
204204
void mlx5e_init_rq_type_params(struct mlx5_core_dev *mdev,
205205
struct mlx5e_params *params)
206206
{
207-
params->lro_wqe_sz = MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ;
208207
params->log_rq_mtu_frames = is_kdump_kernel() ?
209208
MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE :
210209
MLX5E_PARAMS_DEFAULT_LOG_RQ_SIZE;
@@ -2637,7 +2636,7 @@ static void mlx5e_build_tir_ctx_lro(struct mlx5e_params *params, void *tirc)
26372636
MLX5_TIRC_LRO_ENABLE_MASK_IPV4_LRO |
26382637
MLX5_TIRC_LRO_ENABLE_MASK_IPV6_LRO);
26392638
MLX5_SET(tirc, tirc, lro_max_ip_payload_size,
2640-
(params->lro_wqe_sz - ROUGH_MAX_L2_L3_HDR_SZ) >> 8);
2639+
(MLX5E_PARAMS_DEFAULT_LRO_WQE_SZ - ROUGH_MAX_L2_L3_HDR_SZ) >> 8);
26412640
MLX5_SET(tirc, tirc, lro_timeout_period_usecs, params->lro_timeout);
26422641
}
26432642

@@ -2812,6 +2811,21 @@ int mlx5e_set_dev_port_mtu(struct mlx5e_priv *priv)
28122811
return 0;
28132812
}
28142813

2814+
void mlx5e_set_netdev_mtu_boundaries(struct mlx5e_priv *priv)
2815+
{
2816+
struct mlx5e_params *params = &priv->channels.params;
2817+
struct net_device *netdev = priv->netdev;
2818+
struct mlx5_core_dev *mdev = priv->mdev;
2819+
u16 max_mtu;
2820+
2821+
/* MTU range: 68 - hw-specific max */
2822+
netdev->min_mtu = ETH_MIN_MTU;
2823+
2824+
mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
2825+
netdev->max_mtu = min_t(unsigned int, MLX5E_HW2SW_MTU(params, max_mtu),
2826+
ETH_MAX_MTU);
2827+
}
2828+
28152829
static void mlx5e_netdev_set_tcs(struct net_device *netdev)
28162830
{
28172831
struct mlx5e_priv *priv = netdev_priv(netdev);
@@ -4913,18 +4927,14 @@ static void mlx5e_nic_enable(struct mlx5e_priv *priv)
49134927
{
49144928
struct net_device *netdev = priv->netdev;
49154929
struct mlx5_core_dev *mdev = priv->mdev;
4916-
u16 max_mtu;
49174930

49184931
mlx5e_init_l2_addr(priv);
49194932

49204933
/* Marking the link as currently not needed by the Driver */
49214934
if (!netif_running(netdev))
49224935
mlx5_set_port_admin_status(mdev, MLX5_PORT_DOWN);
49234936

4924-
/* MTU range: 68 - hw-specific max */
4925-
netdev->min_mtu = ETH_MIN_MTU;
4926-
mlx5_query_port_max_mtu(priv->mdev, &max_mtu, 1);
4927-
netdev->max_mtu = MLX5E_HW2SW_MTU(&priv->channels.params, max_mtu);
4937+
mlx5e_set_netdev_mtu_boundaries(priv);
49284938
mlx5e_set_dev_port_mtu(priv);
49294939

49304940
mlx5_lag_add(mdev, netdev);

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,8 @@ static int mlx5e_nic_rep_netdevice_event(struct notifier_block *nb,
795795
struct mlx5e_priv *priv = netdev_priv(rpriv->netdev);
796796
struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
797797

798-
if (!mlx5e_tc_tun_device_to_offload(priv, netdev))
798+
if (!mlx5e_tc_tun_device_to_offload(priv, netdev) &&
799+
!is_vlan_dev(netdev))
799800
return NOTIFY_OK;
800801

801802
switch (event) {
@@ -1623,13 +1624,7 @@ static void mlx5e_cleanup_rep_tx(struct mlx5e_priv *priv)
16231624

16241625
static void mlx5e_vf_rep_enable(struct mlx5e_priv *priv)
16251626
{
1626-
struct net_device *netdev = priv->netdev;
1627-
struct mlx5_core_dev *mdev = priv->mdev;
1628-
u16 max_mtu;
1629-
1630-
netdev->min_mtu = ETH_MIN_MTU;
1631-
mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
1632-
netdev->max_mtu = MLX5E_HW2SW_MTU(&priv->channels.params, max_mtu);
1627+
mlx5e_set_netdev_mtu_boundaries(priv);
16331628
}
16341629

16351630
static int uplink_rep_async_event(struct notifier_block *nb, unsigned long event, void *data)

0 commit comments

Comments
 (0)