Lines Matching refs:aq_nic

53 	struct aq_nic_s *aq_nic;  member
96 void aq_ptp_tm_offset_set(struct aq_nic_s *aq_nic, unsigned int mbps) in aq_ptp_tm_offset_set() argument
98 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_tm_offset_set()
266 netdev_err(aq_ptp->aq_nic->ndev, in aq_ptp_tx_timeout_check()
281 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_adjfine() local
283 mutex_lock(&aq_nic->fwreq_mutex); in aq_ptp_adjfine()
284 aq_nic->aq_hw_ops->hw_adj_clock_freq(aq_nic->aq_hw, in aq_ptp_adjfine()
286 mutex_unlock(&aq_nic->fwreq_mutex); in aq_ptp_adjfine()
300 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_adjtime() local
304 aq_nic->aq_hw_ops->hw_adj_sys_clock(aq_nic->aq_hw, delta); in aq_ptp_adjtime()
320 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_gettime() local
325 aq_nic->aq_hw_ops->hw_get_ptp_ts(aq_nic->aq_hw, &ns); in aq_ptp_gettime()
344 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_settime() local
350 aq_nic->aq_hw_ops->hw_get_ptp_ts(aq_nic->aq_hw, &now); in aq_ptp_settime()
351 aq_nic->aq_hw_ops->hw_adj_sys_clock(aq_nic->aq_hw, (s64)ns - (s64)now); in aq_ptp_settime()
366 static int aq_ptp_hw_pin_conf(struct aq_nic_s *aq_nic, u32 pin_index, u64 start, in aq_ptp_hw_pin_conf() argument
370 netdev_dbg(aq_nic->ndev, in aq_ptp_hw_pin_conf()
374 netdev_dbg(aq_nic->ndev, in aq_ptp_hw_pin_conf()
381 mutex_lock(&aq_nic->fwreq_mutex); in aq_ptp_hw_pin_conf()
382 aq_nic->aq_hw_ops->hw_gpio_pulse(aq_nic->aq_hw, pin_index, in aq_ptp_hw_pin_conf()
384 mutex_unlock(&aq_nic->fwreq_mutex); in aq_ptp_hw_pin_conf()
395 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_perout_pin_configure() local
421 aq_ptp_hw_pin_conf(aq_nic, pin_index, start, period); in aq_ptp_perout_pin_configure()
430 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_pps_pin_configure() local
439 aq_nic->aq_hw_ops->hw_get_ptp_ts(aq_nic->aq_hw, &start); in aq_ptp_pps_pin_configure()
445 aq_ptp_hw_pin_conf(aq_nic, pin_index, start, period); in aq_ptp_pps_pin_configure()
452 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_extts_pin_ctrl() local
455 if (aq_nic->aq_hw_ops->hw_extts_gpio_enable) in aq_ptp_extts_pin_ctrl()
456 aq_nic->aq_hw_ops->hw_extts_gpio_enable(aq_nic->aq_hw, 0, in aq_ptp_extts_pin_ctrl()
535 void aq_ptp_tx_hwtstamp(struct aq_nic_s *aq_nic, u64 timestamp) in aq_ptp_tx_hwtstamp() argument
537 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_tx_hwtstamp()
542 netdev_err(aq_nic->ndev, "have timestamp but tx_queues empty\n"); in aq_ptp_tx_hwtstamp()
593 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_hwtstamp_config_set() local
597 hw_ops = aq_nic->aq_hw_ops; in aq_ptp_hwtstamp_config_set()
602 err = hw_ops->hw_filter_l3l4_set(aq_nic->aq_hw, in aq_ptp_hwtstamp_config_set()
606 err = hw_ops->hw_filter_l2_set(aq_nic->aq_hw, in aq_ptp_hwtstamp_config_set()
609 aq_utils_obj_set(&aq_nic->flags, AQ_NIC_PTP_DPATH_UP); in aq_ptp_hwtstamp_config_set()
613 err = hw_ops->hw_filter_l3l4_set(aq_nic->aq_hw, in aq_ptp_hwtstamp_config_set()
617 err = hw_ops->hw_filter_l2_clear(aq_nic->aq_hw, in aq_ptp_hwtstamp_config_set()
620 aq_utils_obj_clear(&aq_nic->flags, AQ_NIC_PTP_DPATH_UP); in aq_ptp_hwtstamp_config_set()
631 bool aq_ptp_ring(struct aq_nic_s *aq_nic, struct aq_ring_s *ring) in aq_ptp_ring() argument
633 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring()
642 u16 aq_ptp_extract_ts(struct aq_nic_s *aq_nic, struct skb_shared_hwtstamps *shhwtstamps, u8 *p, in aq_ptp_extract_ts() argument
645 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_extract_ts()
647 u16 ret = aq_nic->aq_hw_ops->rx_extract_ts(aq_nic->aq_hw, in aq_ptp_extract_ts()
659 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_poll() local
665 err = aq_nic->aq_hw_ops->hw_ring_tx_head_update(aq_nic->aq_hw, in aq_ptp_poll()
677 err = aq_nic->aq_hw_ops->hw_ring_hwts_rx_receive(aq_nic->aq_hw, in aq_ptp_poll()
683 aq_ring_hwts_rx_clean(&aq_ptp->hwts_rx, aq_nic); in aq_ptp_poll()
685 err = aq_nic->aq_hw_ops->hw_ring_hwts_rx_fill(aq_nic->aq_hw, in aq_ptp_poll()
694 err = aq_nic->aq_hw_ops->hw_ring_rx_receive(aq_nic->aq_hw, in aq_ptp_poll()
711 err = aq_nic->aq_hw_ops->hw_ring_rx_fill(aq_nic->aq_hw, in aq_ptp_poll()
723 aq_nic->aq_hw_ops->hw_irq_enable(aq_nic->aq_hw, in aq_ptp_poll()
746 int aq_ptp_xmit(struct aq_nic_s *aq_nic, struct sk_buff *skb) in aq_ptp_xmit() argument
748 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_xmit()
772 netdev_err(aq_nic->ndev, "SKB Ring is overflow (%u)!\n", in aq_ptp_xmit()
780 spin_lock_irqsave(&aq_nic->aq_ptp->ptp_ring_lock, irq_flags); in aq_ptp_xmit()
781 frags = aq_nic_map_skb(aq_nic, skb, ring); in aq_ptp_xmit()
784 err = aq_nic->aq_hw_ops->hw_ring_tx_xmit(aq_nic->aq_hw, in aq_ptp_xmit()
795 spin_unlock_irqrestore(&aq_nic->aq_ptp->ptp_ring_lock, irq_flags); in aq_ptp_xmit()
801 void aq_ptp_service_task(struct aq_nic_s *aq_nic) in aq_ptp_service_task() argument
803 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_service_task()
811 int aq_ptp_irq_alloc(struct aq_nic_s *aq_nic) in aq_ptp_irq_alloc() argument
813 struct pci_dev *pdev = aq_nic->pdev; in aq_ptp_irq_alloc()
814 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_irq_alloc()
822 aq_ptp_isr, 0, aq_nic->ndev->name, aq_ptp); in aq_ptp_irq_alloc()
832 void aq_ptp_irq_free(struct aq_nic_s *aq_nic) in aq_ptp_irq_free() argument
834 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_irq_free()
835 struct pci_dev *pdev = aq_nic->pdev; in aq_ptp_irq_free()
843 int aq_ptp_ring_init(struct aq_nic_s *aq_nic) in aq_ptp_ring_init() argument
845 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_init()
854 err = aq_nic->aq_hw_ops->hw_ring_tx_init(aq_nic->aq_hw, in aq_ptp_ring_init()
863 err = aq_nic->aq_hw_ops->hw_ring_rx_init(aq_nic->aq_hw, in aq_ptp_ring_init()
872 err = aq_nic->aq_hw_ops->hw_ring_rx_fill(aq_nic->aq_hw, in aq_ptp_ring_init()
881 err = aq_nic->aq_hw_ops->hw_ring_rx_init(aq_nic->aq_hw, in aq_ptp_ring_init()
886 err = aq_nic->aq_hw_ops->hw_ring_hwts_rx_fill(aq_nic->aq_hw, in aq_ptp_ring_init()
899 int aq_ptp_ring_start(struct aq_nic_s *aq_nic) in aq_ptp_ring_start() argument
901 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_start()
907 err = aq_nic->aq_hw_ops->hw_ring_tx_start(aq_nic->aq_hw, &aq_ptp->ptp_tx); in aq_ptp_ring_start()
911 err = aq_nic->aq_hw_ops->hw_ring_rx_start(aq_nic->aq_hw, &aq_ptp->ptp_rx); in aq_ptp_ring_start()
915 err = aq_nic->aq_hw_ops->hw_ring_rx_start(aq_nic->aq_hw, in aq_ptp_ring_start()
926 void aq_ptp_ring_stop(struct aq_nic_s *aq_nic) in aq_ptp_ring_stop() argument
928 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_stop()
933 aq_nic->aq_hw_ops->hw_ring_tx_stop(aq_nic->aq_hw, &aq_ptp->ptp_tx); in aq_ptp_ring_stop()
934 aq_nic->aq_hw_ops->hw_ring_rx_stop(aq_nic->aq_hw, &aq_ptp->ptp_rx); in aq_ptp_ring_stop()
936 aq_nic->aq_hw_ops->hw_ring_rx_stop(aq_nic->aq_hw, &aq_ptp->hwts_rx); in aq_ptp_ring_stop()
941 void aq_ptp_ring_deinit(struct aq_nic_s *aq_nic) in aq_ptp_ring_deinit() argument
943 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_deinit()
945 if (!aq_ptp || !aq_ptp->ptp_tx.aq_nic || !aq_ptp->ptp_rx.aq_nic) in aq_ptp_ring_deinit()
952 int aq_ptp_ring_alloc(struct aq_nic_s *aq_nic) in aq_ptp_ring_alloc() argument
954 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_alloc()
961 tx_ring_idx = aq_ptp_ring_idx(aq_nic->aq_nic_cfg.tc_mode); in aq_ptp_ring_alloc()
963 err = aq_ring_tx_alloc(&aq_ptp->ptp_tx, aq_nic, in aq_ptp_ring_alloc()
964 tx_ring_idx, &aq_nic->aq_nic_cfg); in aq_ptp_ring_alloc()
968 rx_ring_idx = aq_ptp_ring_idx(aq_nic->aq_nic_cfg.tc_mode); in aq_ptp_ring_alloc()
970 err = aq_ring_rx_alloc(&aq_ptp->ptp_rx, aq_nic, in aq_ptp_ring_alloc()
971 rx_ring_idx, &aq_nic->aq_nic_cfg); in aq_ptp_ring_alloc()
975 err = aq_ring_hwts_rx_alloc(&aq_ptp->hwts_rx, aq_nic, PTP_HWST_RING_IDX, in aq_ptp_ring_alloc()
976 aq_nic->aq_nic_cfg.rxds, in aq_ptp_ring_alloc()
977 aq_nic->aq_nic_cfg.aq_hw_caps->rxd_size); in aq_ptp_ring_alloc()
981 err = aq_ptp_skb_ring_init(&aq_ptp->skb_ring, aq_nic->aq_nic_cfg.rxds); in aq_ptp_ring_alloc()
989 aq_nic_get_cfg(aq_nic)->aq_rss.base_cpu_number; in aq_ptp_ring_alloc()
1005 void aq_ptp_ring_free(struct aq_nic_s *aq_nic) in aq_ptp_ring_free() argument
1007 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_ring_free()
1143 void aq_ptp_clock_init(struct aq_nic_s *aq_nic) in aq_ptp_clock_init() argument
1145 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_clock_init()
1154 int aq_ptp_init(struct aq_nic_s *aq_nic, unsigned int idx_vec) in aq_ptp_init() argument
1156 bool a1_ptp = ATL_HW_IS_CHIP_FEATURE(aq_nic->aq_hw, ATLANTIC); in aq_ptp_init()
1163 aq_nic->aq_ptp = NULL; in aq_ptp_init()
1167 if (!aq_nic->aq_hw_ops->hw_get_ptp_ts) { in aq_ptp_init()
1168 aq_nic->aq_ptp = NULL; in aq_ptp_init()
1172 if (!aq_nic->aq_fw_ops->enable_ptp) { in aq_ptp_init()
1173 aq_nic->aq_ptp = NULL; in aq_ptp_init()
1177 hw_atl_utils_mpi_read_stats(aq_nic->aq_hw, &mbox); in aq_ptp_init()
1180 aq_nic->aq_ptp = NULL; in aq_ptp_init()
1192 aq_ptp->aq_nic = aq_nic; in aq_ptp_init()
1200 clock = ptp_clock_register(&aq_ptp->ptp_info, &aq_nic->ndev->dev); in aq_ptp_init()
1202 netdev_err(aq_nic->ndev, "ptp_clock_register failed\n"); in aq_ptp_init()
1212 netif_napi_add(aq_nic_get_ndev(aq_nic), &aq_ptp->napi, aq_ptp_poll); in aq_ptp_init()
1216 aq_nic->aq_ptp = aq_ptp; in aq_ptp_init()
1219 aq_utils_obj_set(&aq_nic->aq_hw->flags, AQ_HW_PTP_AVAILABLE); in aq_ptp_init()
1220 mutex_lock(&aq_nic->fwreq_mutex); in aq_ptp_init()
1221 aq_nic->aq_fw_ops->enable_ptp(aq_nic->aq_hw, 1); in aq_ptp_init()
1222 aq_ptp_clock_init(aq_nic); in aq_ptp_init()
1223 mutex_unlock(&aq_nic->fwreq_mutex); in aq_ptp_init()
1227 aq_nic_reserve_filter(aq_nic, aq_rx_filter_ethertype); in aq_ptp_init()
1229 aq_nic_reserve_filter(aq_nic, aq_rx_filter_l3l4); in aq_ptp_init()
1237 aq_nic->aq_ptp = NULL; in aq_ptp_init()
1241 void aq_ptp_unregister(struct aq_nic_s *aq_nic) in aq_ptp_unregister() argument
1243 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_unregister()
1251 void aq_ptp_free(struct aq_nic_s *aq_nic) in aq_ptp_free() argument
1253 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_free()
1258 aq_nic_release_filter(aq_nic, aq_rx_filter_ethertype, in aq_ptp_free()
1260 aq_nic_release_filter(aq_nic, aq_rx_filter_l3l4, in aq_ptp_free()
1264 mutex_lock(&aq_nic->fwreq_mutex); in aq_ptp_free()
1265 aq_nic->aq_fw_ops->enable_ptp(aq_nic->aq_hw, 0); in aq_ptp_free()
1266 mutex_unlock(&aq_nic->fwreq_mutex); in aq_ptp_free()
1272 aq_nic->aq_ptp = NULL; in aq_ptp_free()
1281 static uint64_t aq_ptp_get_sync1588_ts(struct aq_nic_s *aq_nic) in aq_ptp_get_sync1588_ts() argument
1285 if (aq_nic->aq_hw_ops->hw_get_sync_ts) in aq_ptp_get_sync1588_ts()
1286 aq_nic->aq_hw_ops->hw_get_sync_ts(aq_nic->aq_hw, &ts); in aq_ptp_get_sync1588_ts()
1296 aq_ptp_get_sync1588_ts(aq_ptp->aq_nic); in aq_ptp_start_work()
1302 int aq_ptp_link_change(struct aq_nic_s *aq_nic) in aq_ptp_link_change() argument
1304 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_link_change()
1309 if (aq_nic->aq_hw->aq_link_status.mbps) in aq_ptp_link_change()
1319 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_sync_ts_updated() local
1323 sync_ts = aq_ptp_get_sync1588_ts(aq_nic); in aq_ptp_sync_ts_updated()
1326 sync_ts2 = aq_ptp_get_sync1588_ts(aq_nic); in aq_ptp_sync_ts_updated()
1329 sync_ts2 = aq_ptp_get_sync1588_ts(aq_nic); in aq_ptp_sync_ts_updated()
1331 netdev_err(aq_nic->ndev, in aq_ptp_sync_ts_updated()
1346 struct aq_nic_s *aq_nic = aq_ptp->aq_nic; in aq_ptp_check_sync1588() local
1355 aq_nic->aq_hw_ops->hw_ts_to_sys_clock(aq_nic->aq_hw, in aq_ptp_check_sync1588()
1384 int aq_ptp_get_ring_cnt(struct aq_nic_s *aq_nic, const enum atl_ring_type ring_type) in aq_ptp_get_ring_cnt() argument
1386 if (!aq_nic->aq_ptp) in aq_ptp_get_ring_cnt()
1390 return (aq_nic->aq_ptp->a1_ptp && ring_type == ATL_RING_RX) ? 2 : 1; in aq_ptp_get_ring_cnt()
1393 u64 *aq_ptp_get_stats(struct aq_nic_s *aq_nic, u64 *data) in aq_ptp_get_stats() argument
1395 struct aq_ptp_s *aq_ptp = aq_nic->aq_ptp; in aq_ptp_get_stats()