Lines Matching refs:d
139 static void wil_txdesc_unmap(struct device *dev, struct vring_tx_desc *d, in wil_txdesc_unmap() argument
142 dma_addr_t pa = wil_desc_addr(&d->dma.addr); in wil_txdesc_unmap()
143 u16 dmalen = le16_to_cpu(d->dma.length); in wil_txdesc_unmap()
181 struct vring_tx_desc dd, *d = ⅆ in wil_vring_free() local
186 *d = *_d; in wil_vring_free()
187 wil_txdesc_unmap(dev, d, ctx); in wil_vring_free()
192 struct vring_rx_desc dd, *d = ⅆ in wil_vring_free() local
197 *d = *_d; in wil_vring_free()
198 pa = wil_desc_addr(&d->dma.addr); in wil_vring_free()
199 dmalen = le16_to_cpu(d->dma.length); in wil_vring_free()
222 struct vring_rx_desc dd, *d = ⅆ in wil_vring_alloc_skb() local
239 d->dma.d0 = RX_DMA_D0_CMD_DMA_RT | RX_DMA_D0_CMD_DMA_IT; in wil_vring_alloc_skb()
240 wil_desc_addr_set(&d->dma.addr, pa); in wil_vring_alloc_skb()
244 d->dma.status = 0; /* BIT(0) should be 0 for HW_OWNED */ in wil_vring_alloc_skb()
245 d->dma.length = cpu_to_le16(sz); in wil_vring_alloc_skb()
246 *_d = *d; in wil_vring_alloc_skb()
286 struct vring_rx_desc *d = wil_skb_rxdesc(skb); in wil_rx_add_radiotap_header() local
294 rtap_len = sizeof(*rtap_vendor) + sizeof(*d); in wil_rx_add_radiotap_header()
296 if (d->dma.status & RX_DMA_STATUS_PHY_INFO) { in wil_rx_add_radiotap_header()
304 wil_rxdesc_phy_length(d)); in wil_rx_add_radiotap_header()
334 if (d->dma.status & RX_DMA_STATUS_ERROR) in wil_rx_add_radiotap_header()
342 rtap_vendor->rtap.mcs_index = wil_rxdesc_mcs(d); in wil_rx_add_radiotap_header()
353 rtap_vendor->vendor_skip = cpu_to_le16(sizeof(*d) + in wil_rx_add_radiotap_header()
355 memcpy(rtap_vendor->vendor_data, (void *)d, sizeof(*d)); in wil_rx_add_radiotap_header()
356 memcpy(rtap_vendor->vendor_data + sizeof(*d), phy_data, in wil_rx_add_radiotap_header()
381 struct vring_rx_desc *d; in wil_vring_reap_rx() local
412 d = wil_skb_rxdesc(skb); in wil_vring_reap_rx()
413 *d = *_d; in wil_vring_reap_rx()
414 pa = wil_desc_addr(&d->dma.addr); in wil_vring_reap_rx()
417 dmalen = le16_to_cpu(d->dma.length); in wil_vring_reap_rx()
419 trace_wil6210_rx(i, d); in wil_vring_reap_rx()
422 (const void *)d, sizeof(*d), false); in wil_vring_reap_rx()
424 cid = wil_rxdesc_cid(d); in wil_vring_reap_rx()
440 stats->last_mcs_rx = wil_rxdesc_mcs(d); in wil_vring_reap_rx()
455 ftype = wil_rxdesc_ftype(d) << 2; in wil_vring_reap_rx()
457 u8 fc1 = wil_rxdesc_fc1(d); in wil_vring_reap_rx()
458 int mid = wil_rxdesc_mid(d); in wil_vring_reap_rx()
459 int tid = wil_rxdesc_tid(d); in wil_vring_reap_rx()
460 u16 seq = wil_rxdesc_seq(d); in wil_vring_reap_rx()
479 (const void *)d, sizeof(*d), false); in wil_vring_reap_rx()
498 if (likely(d->dma.status & RX_DMA_STATUS_L4I)) { in wil_vring_reap_rx()
500 if (likely((d->dma.error & RX_DMA_ERROR_L4_ERR) == 0)) in wil_vring_reap_rx()
561 struct vring_rx_desc *d = wil_skb_rxdesc(skb); in wil_netif_rx_any() local
562 int cid = wil_rxdesc_cid(d); /* always 0..7, no need to check */ in wil_netif_rx_any()
1078 static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len, in wil_tx_desc_map() argument
1081 wil_desc_addr_set(&d->dma.addr, pa); in wil_tx_desc_map()
1082 d->dma.ip_length = 0; in wil_tx_desc_map()
1084 d->dma.b11 = 0/*14 | BIT(7)*/; in wil_tx_desc_map()
1085 d->dma.error = 0; in wil_tx_desc_map()
1086 d->dma.status = 0; /* BIT(0) should be 0 for HW_OWNED */ in wil_tx_desc_map()
1087 d->dma.length = cpu_to_le16((u16)len); in wil_tx_desc_map()
1088 d->dma.d0 = (vring_index << DMA_CFG_DESC_TX_0_QID_POS); in wil_tx_desc_map()
1089 d->mac.d[0] = 0; in wil_tx_desc_map()
1090 d->mac.d[1] = 0; in wil_tx_desc_map()
1091 d->mac.d[2] = 0; in wil_tx_desc_map()
1092 d->mac.ucode_cmd = 0; in wil_tx_desc_map()
1094 d->mac.d[2] = BIT(MAC_CFG_DESC_TX_2_SNAP_HDR_INSERTION_EN_POS) | in wil_tx_desc_map()
1101 void wil_tx_desc_set_nr_frags(struct vring_tx_desc *d, int nr_frags) in wil_tx_desc_set_nr_frags() argument
1103 d->mac.d[2] |= (nr_frags << MAC_CFG_DESC_TX_2_NUM_OF_DESCRIPTORS_POS); in wil_tx_desc_set_nr_frags()
1113 static void wil_tx_desc_offload_setup_tso(struct vring_tx_desc *d, in wil_tx_desc_offload_setup_tso() argument
1118 d->dma.b11 = ETH_HLEN; /* MAC header length */ in wil_tx_desc_offload_setup_tso()
1119 d->dma.b11 |= is_ipv4 << DMA_CFG_DESC_TX_OFFLOAD_CFG_L3T_IPV4_POS; in wil_tx_desc_offload_setup_tso()
1121 d->dma.d0 |= (2 << DMA_CFG_DESC_TX_0_L4_TYPE_POS); in wil_tx_desc_offload_setup_tso()
1123 d->dma.d0 |= (tcp_hdr_len & DMA_CFG_DESC_TX_0_L4_LENGTH_MSK); in wil_tx_desc_offload_setup_tso()
1126 d->dma.d0 |= (BIT(DMA_CFG_DESC_TX_0_TCP_SEG_EN_POS)) | in wil_tx_desc_offload_setup_tso()
1128 d->dma.d0 |= (is_ipv4 << DMA_CFG_DESC_TX_0_IPV4_CHECKSUM_EN_POS); in wil_tx_desc_offload_setup_tso()
1130 d->dma.ip_length = skb_net_hdr_len; in wil_tx_desc_offload_setup_tso()
1132 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_TCP_UDP_CHECKSUM_EN_POS); in wil_tx_desc_offload_setup_tso()
1134 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_PSEUDO_HEADER_CALC_EN_POS); in wil_tx_desc_offload_setup_tso()
1147 static int wil_tx_desc_offload_setup(struct vring_tx_desc *d, in wil_tx_desc_offload_setup() argument
1154 d->dma.b11 = ETH_HLEN; /* MAC header length */ in wil_tx_desc_offload_setup()
1159 d->dma.b11 |= BIT(DMA_CFG_DESC_TX_OFFLOAD_CFG_L3T_IPV4_POS); in wil_tx_desc_offload_setup()
1170 d->dma.d0 |= (2 << DMA_CFG_DESC_TX_0_L4_TYPE_POS); in wil_tx_desc_offload_setup()
1172 d->dma.d0 |= in wil_tx_desc_offload_setup()
1177 d->dma.d0 |= in wil_tx_desc_offload_setup()
1184 d->dma.ip_length = skb_network_header_len(skb); in wil_tx_desc_offload_setup()
1186 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_TCP_UDP_CHECKSUM_EN_POS); in wil_tx_desc_offload_setup()
1188 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_PSEUDO_HEADER_CALC_EN_POS); in wil_tx_desc_offload_setup()
1193 static inline void wil_tx_last_desc(struct vring_tx_desc *d) in wil_tx_last_desc() argument
1195 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_EOP_POS) | in wil_tx_last_desc()
1200 static inline void wil_set_tx_desc_last_tso(volatile struct vring_tx_desc *d) in wil_set_tx_desc_last_tso() argument
1202 d->dma.d0 |= wil_tso_type_lst << in wil_set_tx_desc_last_tso()
1217 *d = &hdr_desc_mem, *hdr_desc = &hdr_desc_mem, in __wil_tx_vring_tso() local
1371 d = first_desc; in __wil_tx_vring_tso()
1373 d = &desc_mem; in __wil_tx_vring_tso()
1376 wil_tx_desc_map(d, pa, lenmss, vring_index); in __wil_tx_vring_tso()
1377 wil_tx_desc_offload_setup_tso(d, skb, desc_tso_type, in __wil_tx_vring_tso()
1410 wil_tx_last_desc(d); in __wil_tx_vring_tso()
1416 if (first_desc != d) in __wil_tx_vring_tso()
1423 *_desc = *d; in __wil_tx_vring_tso()
1428 } else if (first_desc != d) /* update mid descriptor */ in __wil_tx_vring_tso()
1429 *_desc = *d; in __wil_tx_vring_tso()
1437 d = first_desc; in __wil_tx_vring_tso()
1440 wil_set_tx_desc_last_tso(d); in __wil_tx_vring_tso()
1441 *_desc = *d; in __wil_tx_vring_tso()
1479 d = (struct vring_tx_desc *)&vring->va[i].tx; in __wil_tx_vring_tso()
1481 *d = *_desc; in __wil_tx_vring_tso()
1484 wil_txdesc_unmap(dev, d, ctx); in __wil_tx_vring_tso()
1496 struct vring_tx_desc dd, *d = ⅆ in __wil_tx_vring() local
1535 wil_tx_desc_map(d, pa, len, vring_index); in __wil_tx_vring()
1537 d->mac.d[0] |= BIT(MAC_CFG_DESC_TX_0_MCS_EN_POS); /* MCS 0 */ in __wil_tx_vring()
1539 d->mac.d[0] |= (1 << MAC_CFG_DESC_TX_0_MCS_INDEX_POS); in __wil_tx_vring()
1542 if (unlikely(wil_tx_desc_offload_setup(d, skb))) { in __wil_tx_vring()
1549 wil_tx_desc_set_nr_frags(d, nr_frags + 1); in __wil_tx_vring()
1557 *_d = *d; in __wil_tx_vring()
1560 (const void *)d, sizeof(*d), false); in __wil_tx_vring()
1571 wil_tx_desc_map(d, pa, len, vring_index); in __wil_tx_vring()
1576 wil_tx_desc_offload_setup(d, skb); in __wil_tx_vring()
1579 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_EOP_POS); in __wil_tx_vring()
1580 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_MARK_WB_POS); in __wil_tx_vring()
1581 d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS); in __wil_tx_vring()
1582 *_d = *d; in __wil_tx_vring()
1585 (const void *)d, sizeof(*d), false); in __wil_tx_vring()
1625 *d = *_d; in __wil_tx_vring()
1627 wil_txdesc_unmap(dev, d, ctx); in __wil_tx_vring()
1787 struct vring_tx_desc dd, *d = ⅆ in wil_tx_complete() local
1795 *d = *_d; in wil_tx_complete()
1797 dmalen = le16_to_cpu(d->dma.length); in wil_tx_complete()
1799 d->dma.error); in wil_tx_complete()
1803 d->dma.status, d->dma.error); in wil_tx_complete()
1805 (const void *)d, sizeof(*d), false); in wil_tx_complete()
1807 wil_txdesc_unmap(dev, d, ctx); in wil_tx_complete()
1810 if (likely(d->dma.error == 0)) { in wil_tx_complete()
1822 wil_consume_skb(skb, d->dma.error == 0); in wil_tx_complete()