| /linux/drivers/net/ethernet/huawei/hinic/ |
| H A D | hinic_main.c | 79 static int set_features(struct hinic_dev *nic_dev, 110 static void gather_nic_stats(struct hinic_dev *nic_dev, in gather_nic_stats() argument 114 int i, num_qps = hinic_hwdev_num_qps(nic_dev->hwdev); in gather_nic_stats() 117 gather_rx_stats(nic_rx_stats, &nic_dev->rxqs[i]); in gather_nic_stats() 120 gather_tx_stats(nic_tx_stats, &nic_dev->txqs[i]); in gather_nic_stats() 129 static int create_txqs(struct hinic_dev *nic_dev) in create_txqs() argument 131 int err, i, j, num_txqs = hinic_hwdev_num_qps(nic_dev->hwdev); in create_txqs() 132 struct net_device *netdev = nic_dev->netdev; in create_txqs() 134 if (nic_dev->txqs) in create_txqs() 137 nic_dev->txqs = devm_kcalloc(&netdev->dev, num_txqs, in create_txqs() [all …]
|
| H A D | hinic_ethtool.c | 259 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_get_link_ksettings() local 274 err = hinic_port_get_cap(nic_dev, &port_cap); in hinic_get_link_ksettings() 281 err = hinic_port_link_state(nic_dev, &link_state); in hinic_get_link_ksettings() 299 err = hinic_get_link_mode(nic_dev->hwdev, &link_mode); in hinic_get_link_ksettings() 309 if (!HINIC_IS_VF(nic_dev->hwdev->hwif)) { in hinic_get_link_ksettings() 310 err = hinic_get_hw_pause_info(nic_dev->hwdev, &pause_info); in hinic_get_link_ksettings() 365 static bool hinic_is_speed_legal(struct hinic_dev *nic_dev, u32 speed) in hinic_is_speed_legal() argument 368 struct net_device *netdev = nic_dev->netdev; in hinic_is_speed_legal() 372 err = hinic_get_link_mode(nic_dev->hwdev, &link_mode); in hinic_is_speed_legal() 383 netif_err(nic_dev, drv, netdev, in hinic_is_speed_legal() [all …]
|
| H A D | hinic_debugfs.c | 23 static u64 hinic_dbg_get_sq_info(struct hinic_dev *nic_dev, struct hinic_sq *sq, int idx) in hinic_dbg_get_sq_info() argument 29 return nic_dev->hwdev->func_to_io.global_qpn + sq->qid; in hinic_dbg_get_sq_info() 53 static u64 hinic_dbg_get_rq_info(struct hinic_dev *nic_dev, struct hinic_rq *rq, int idx) in hinic_dbg_get_rq_info() argument 59 return nic_dev->hwdev->func_to_io.global_qpn + rq->qid; in hinic_dbg_get_rq_info() 83 static int hinic_dbg_get_func_table(struct hinic_dev *nic_dev, int idx) in hinic_dbg_get_func_table() argument 98 read_data->lt_index = HINIC_HWIF_FUNC_IDX(nic_dev->hwdev->hwif); in hinic_dbg_get_func_table() 101 err = hinic_port_msg_cmd(nic_dev->hwdev, HINIC_PORT_CMD_RD_LINE_TBL, read_data, in hinic_dbg_get_func_table() 104 netif_err(nic_dev, drv, nic_dev->netdev, in hinic_dbg_get_func_table() 271 void hinic_sq_dbgfs_init(struct hinic_dev *nic_dev) in hinic_sq_dbgfs_init() argument 273 nic_dev->sq_dbgfs = debugfs_create_dir("SQs", nic_dev->dbgfs_root); in hinic_sq_dbgfs_init() [all …]
|
| H A D | hinic_rx.c | 130 struct hinic_dev *nic_dev = netdev_priv(rxq->netdev); in rx_alloc_skb() local 131 struct hinic_hwdev *hwdev = nic_dev->hwdev; in rx_alloc_skb() 165 struct hinic_dev *nic_dev = netdev_priv(rxq->netdev); in rx_unmap_skb() local 166 struct hinic_hwdev *hwdev = nic_dev->hwdev; in rx_unmap_skb() 195 struct hinic_dev *nic_dev = netdev_priv(rxq->netdev); in rx_alloc_pkts() local 207 if (free_wqebbs > nic_dev->rx_weight) in rx_alloc_pkts() 208 free_wqebbs = nic_dev->rx_weight; in rx_alloc_pkts() 314 static void hinic_copy_lp_data(struct hinic_dev *nic_dev, in hinic_copy_lp_data() argument 317 struct net_device *netdev = nic_dev->netdev; in hinic_copy_lp_data() 318 u8 *lb_buf = nic_dev->lb_test_rx_buf; in hinic_copy_lp_data() [all …]
|
| H A D | hinic_port.c | 34 static int change_mac(struct hinic_dev *nic_dev, const u8 *addr, in change_mac() argument 37 struct hinic_hwdev *hwdev = nic_dev->hwdev; in change_mac() 87 int hinic_port_add_mac(struct hinic_dev *nic_dev, in hinic_port_add_mac() argument 90 return change_mac(nic_dev, addr, vlan_id, MAC_SET); in hinic_port_add_mac() 101 int hinic_port_del_mac(struct hinic_dev *nic_dev, const u8 *addr, in hinic_port_del_mac() argument 104 return change_mac(nic_dev, addr, vlan_id, MAC_DEL); in hinic_port_del_mac() 114 int hinic_port_get_mac(struct hinic_dev *nic_dev, u8 *addr) in hinic_port_get_mac() argument 116 struct hinic_hwdev *hwdev = nic_dev->hwdev; in hinic_port_get_mac() 145 int hinic_port_set_mtu(struct hinic_dev *nic_dev, int new_mtu) in hinic_port_set_mtu() argument 147 struct hinic_hwdev *hwdev = nic_dev->hwdev; in hinic_port_set_mtu() [all …]
|
| H A D | hinic_sriov.c | 518 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_get_sriov_info_by_pcidev() local 520 return &nic_dev->sriov_info; in hinic_get_sriov_info_by_pcidev() 600 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_ndo_get_vf_config() local 603 sriov_info = &nic_dev->sriov_info; in hinic_ndo_get_vf_config() 644 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_ndo_set_vf_mac() local 648 sriov_info = &nic_dev->sriov_info; in hinic_ndo_set_vf_mac() 656 netif_info(nic_dev, drv, netdev, "Setting MAC %pM on VF %d\n", mac, vf); in hinic_ndo_set_vf_mac() 657 netif_info(nic_dev, drv, netdev, "Reload the VF driver to make this change effective."); in hinic_ndo_set_vf_mac() 702 static int hinic_update_mac_vlan(struct hinic_dev *nic_dev, u16 old_vlan, in hinic_update_mac_vlan() argument 709 if (!nic_dev || old_vlan >= VLAN_N_VID || new_vlan >= VLAN_N_VID) in hinic_update_mac_vlan() [all …]
|
| H A D | hinic_port.h | 767 int hinic_port_add_mac(struct hinic_dev *nic_dev, const u8 *addr, 770 int hinic_port_del_mac(struct hinic_dev *nic_dev, const u8 *addr, 773 int hinic_port_get_mac(struct hinic_dev *nic_dev, u8 *addr); 775 int hinic_port_set_mtu(struct hinic_dev *nic_dev, int new_mtu); 777 int hinic_port_add_vlan(struct hinic_dev *nic_dev, u16 vlan_id); 779 int hinic_port_del_vlan(struct hinic_dev *nic_dev, u16 vlan_id); 781 int hinic_port_set_rx_mode(struct hinic_dev *nic_dev, u32 rx_mode); 783 int hinic_port_link_state(struct hinic_dev *nic_dev, 786 int hinic_port_set_state(struct hinic_dev *nic_dev, 789 int hinic_port_set_func_state(struct hinic_dev *nic_dev, [all …]
|
| H A D | hinic_tx.c | 132 static int tx_map_skb(struct hinic_dev *nic_dev, struct sk_buff *skb, in tx_map_skb() argument 135 struct hinic_hwdev *hwdev = nic_dev->hwdev; in tx_map_skb() 183 static void tx_unmap_skb(struct hinic_dev *nic_dev, struct sk_buff *skb, in tx_unmap_skb() argument 186 struct hinic_hwdev *hwdev = nic_dev->hwdev; in tx_unmap_skb() 493 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_lb_xmit_frame() local 502 txq = &nic_dev->txqs[q_id]; in hinic_lb_xmit_frame() 506 err = tx_map_skb(nic_dev, skb, txq->sges); in hinic_lb_xmit_frame() 518 netif_wake_subqueue(nic_dev->netdev, qp->q_id); in hinic_lb_xmit_frame() 522 tx_unmap_skb(nic_dev, skb, txq->sges); in hinic_lb_xmit_frame() 554 struct hinic_dev *nic_dev = netdev_priv(netdev); in hinic_xmit_frame() local [all …]
|
| H A D | hinic_debugfs.h | 93 void hinic_sq_dbgfs_init(struct hinic_dev *nic_dev); 95 void hinic_sq_dbgfs_uninit(struct hinic_dev *nic_dev); 97 void hinic_rq_dbgfs_init(struct hinic_dev *nic_dev); 99 void hinic_rq_dbgfs_uninit(struct hinic_dev *nic_dev); 101 void hinic_func_tbl_dbgfs_init(struct hinic_dev *nic_dev); 103 void hinic_func_tbl_dbgfs_uninit(struct hinic_dev *nic_dev); 105 void hinic_dbg_init(struct hinic_dev *nic_dev); 107 void hinic_dbg_uninit(struct hinic_dev *nic_dev);
|
| /linux/drivers/net/ethernet/huawei/hinic3/ |
| H A D | hinic3_main.c | 37 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in init_intr_coal_param() local 41 for (i = 0; i < nic_dev->max_qps; i++) { in init_intr_coal_param() 42 info = &nic_dev->intr_coalesce[i]; in init_intr_coal_param() 53 nic_dev->adaptive_rx_coal = 1; in init_intr_coal_param() 58 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_init_intr_coalesce() local 60 nic_dev->intr_coalesce = kzalloc_objs(*nic_dev->intr_coalesce, in hinic3_init_intr_coalesce() 61 nic_dev->max_qps); in hinic3_init_intr_coalesce() 63 if (!nic_dev->intr_coalesce) in hinic3_init_intr_coalesce() 73 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_free_intr_coalesce() local 75 kfree(nic_dev->intr_coalesce); in hinic3_free_intr_coalesce() [all …]
|
| H A D | hinic3_netdev_ops.c | 20 #define VLAN_BITMAP_BITS_SIZE(nic_dev) (sizeof(*(nic_dev)->vlan_bitmap) * 8) argument 21 #define VID_LINE(nic_dev, vid) \ argument 22 ((vid) / VLAN_BITMAP_BITS_SIZE(nic_dev)) 23 #define VID_COL(nic_dev, vid) \ argument 24 ((vid) & (VLAN_BITMAP_BITS_SIZE(nic_dev) - 1)) 32 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_qp_irq_change() local 38 qps_msix_entries = nic_dev->qps_msix_entries; in hinic3_qp_irq_change() 39 if (dst_num_qp_irq > nic_dev->num_qp_irq) { in hinic3_qp_irq_change() 40 irq_num_gap = dst_num_qp_irq - nic_dev->num_qp_irq; in hinic3_qp_irq_change() 41 err = hinic3_alloc_irqs(nic_dev->hwdev, irq_num_gap, in hinic3_qp_irq_change() [all …]
|
| H A D | hinic3_irq.c | 16 static void hinic3_net_dim(struct hinic3_nic_dev *nic_dev, in hinic3_net_dim() argument 22 if (!test_bit(HINIC3_INTF_UP, &nic_dev->flags) || in hinic3_net_dim() 23 !nic_dev->adaptive_rx_coal) in hinic3_net_dim() 35 struct hinic3_nic_dev *nic_dev; in hinic3_poll() local 39 nic_dev = netdev_priv(irq_cfg->netdev); in hinic3_poll() 53 hinic3_net_dim(nic_dev, irq_cfg); in hinic3_poll() 54 hinic3_set_msix_state(nic_dev->hwdev, irq_cfg->msix_entry_idx, in hinic3_poll() 63 struct hinic3_nic_dev *nic_dev = netdev_priv(irq_cfg->netdev); in qp_add_napi() local 65 netif_napi_add(nic_dev->netdev, &irq_cfg->napi, hinic3_poll); in qp_add_napi() 78 struct hinic3_nic_dev *nic_dev; in qp_irq() local [all …]
|
| H A D | hinic3_filter.c | 20 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_filter_addr_sync() local 22 return hinic3_set_mac(nic_dev->hwdev, addr, 0, in hinic3_filter_addr_sync() 23 hinic3_global_func_id(nic_dev->hwdev)); in hinic3_filter_addr_sync() 28 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_filter_addr_unsync() local 34 return hinic3_del_mac(nic_dev->hwdev, addr, 0, in hinic3_filter_addr_unsync() 35 hinic3_global_func_id(nic_dev->hwdev)); in hinic3_filter_addr_unsync() 40 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_clean_mac_list_filter() local 44 list_for_each_entry_safe(f, ftmp, &nic_dev->uc_filter_list, list) { in hinic3_clean_mac_list_filter() 51 list_for_each_entry_safe(f, ftmp, &nic_dev->mc_filter_list, list) { in hinic3_clean_mac_list_filter() 75 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_add_filter() local [all …]
|
| H A D | hinic3_nic_io.c | 209 int hinic3_init_nic_io(struct hinic3_nic_dev *nic_dev) in hinic3_init_nic_io() argument 211 struct hinic3_hwdev *hwdev = nic_dev->hwdev; in hinic3_init_nic_io() 219 nic_dev->nic_io = nic_io; in hinic3_init_nic_io() 227 err = hinic3_init_function_table(nic_dev); in hinic3_init_nic_io() 233 nic_io->rx_buf_len = nic_dev->rx_buf_len; in hinic3_init_nic_io() 235 err = hinic3_get_nic_feature_from_hw(nic_dev); in hinic3_init_nic_io() 250 nic_dev->nic_io = NULL; in hinic3_init_nic_io() 256 void hinic3_free_nic_io(struct hinic3_nic_dev *nic_dev) in hinic3_free_nic_io() argument 258 struct hinic3_nic_io *nic_io = nic_dev->nic_io; in hinic3_free_nic_io() 260 hinic3_set_func_svc_used_state(nic_dev->hwdev, COMM_FUNC_SVC_T_NIC, 0); in hinic3_free_nic_io() [all …]
|
| H A D | hinic3_rx.c | 63 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_alloc_rxqs() local 64 struct pci_dev *pdev = nic_dev->pdev; in hinic3_alloc_rxqs() 65 u16 num_rxqs = nic_dev->max_qps; in hinic3_alloc_rxqs() 69 nic_dev->rxqs = kzalloc_objs(*nic_dev->rxqs, num_rxqs); in hinic3_alloc_rxqs() 70 if (!nic_dev->rxqs) in hinic3_alloc_rxqs() 74 rxq = &nic_dev->rxqs[q_id]; in hinic3_alloc_rxqs() 78 rxq->buf_len = nic_dev->rx_buf_len; in hinic3_alloc_rxqs() 79 rxq->buf_len_shift = ilog2(nic_dev->rx_buf_len); in hinic3_alloc_rxqs() 80 rxq->q_depth = nic_dev->q_params.rq_depth; in hinic3_alloc_rxqs() 81 rxq->q_mask = nic_dev->q_params.rq_depth - 1; in hinic3_alloc_rxqs() [all …]
|
| H A D | hinic3_tx.c | 46 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_alloc_txqs() local 47 u16 q_id, num_txqs = nic_dev->max_qps; in hinic3_alloc_txqs() 48 struct pci_dev *pdev = nic_dev->pdev; in hinic3_alloc_txqs() 51 nic_dev->txqs = kzalloc_objs(*nic_dev->txqs, num_txqs); in hinic3_alloc_txqs() 52 if (!nic_dev->txqs) in hinic3_alloc_txqs() 56 txq = &nic_dev->txqs[q_id]; in hinic3_alloc_txqs() 59 txq->q_depth = nic_dev->q_params.sq_depth; in hinic3_alloc_txqs() 60 txq->q_mask = nic_dev->q_params.sq_depth - 1; in hinic3_alloc_txqs() 71 struct hinic3_nic_dev *nic_dev = netdev_priv(netdev); in hinic3_free_txqs() local 73 kfree(nic_dev->txqs); in hinic3_free_txqs() [all …]
|