Lines Matching refs:dp

59 int vsw_setup_tx_dring(vsw_ldc_t *ldcp, dring_info_t *dp);
68 int vsw_reclaim_dring(dring_info_t *dp, int start);
111 dring_info_t *dp;
120 if ((dp = vsw_create_tx_dring(ldcp)) == NULL)
131 mp->num_descriptors = dp->num_descriptors;
132 mp->descriptor_size = dp->descriptor_size;
133 mp->options = dp->options;
134 mp->ncookies = dp->dring_ncookies;
135 bcopy(&dp->dring_cookie[0], &mp->cookie[0], sizeof (ldc_mem_cookie_t));
153 dring_info_t *dp;
155 dp = (dring_info_t *)kmem_zalloc(sizeof (dring_info_t), KM_SLEEP);
156 mutex_init(&dp->dlock, NULL, MUTEX_DRIVER, NULL);
157 mutex_init(&dp->restart_lock, NULL, MUTEX_DRIVER, NULL);
158 ldcp->lane_out.dringp = dp;
162 sizeof (vnet_public_desc_t), &dp->dring_handle)) != 0) {
168 ASSERT(dp->dring_handle != NULL);
173 if ((ldc_mem_dring_info(dp->dring_handle, &minfo)) != 0) {
179 dp->pub_addr = minfo.vaddr;
182 dp->num_descriptors = vsw_num_descriptors;
183 dp->descriptor_size = sizeof (vnet_public_desc_t);
184 dp->options = VIO_TX_DRING;
185 dp->dring_ncookies = 1; /* guaranteed by ldc */
190 dp->priv_addr = (vsw_private_desc_t *)kmem_zalloc(
193 if (vsw_setup_tx_dring(ldcp, dp)) {
199 if ((ldc_mem_dring_bind(ldcp->ldc_handle, dp->dring_handle,
201 &dp->dring_cookie[0], &dp->dring_ncookies)) != 0) {
208 dp->end_idx = 0;
209 dp->last_ack_recv = -1;
210 dp->restart_reqd = B_TRUE;
212 return (dp);
224 vsw_setup_tx_dring(vsw_ldc_t *ldcp, dring_info_t *dp)
237 priv_addr = dp->priv_addr;
238 pub_addr = dp->pub_addr;
269 dp->desc_data_sz = data_sz;
272 dp->data_sz = (vsw_num_descriptors * data_sz) + VNET_8K;
273 data_addr = kmem_alloc(dp->data_sz, KM_SLEEP);
274 dp->data_addr = data_addr;
277 dp->data_sz, dp->data_addr);
283 offset = dp->desc_data_sz/sizeof (tmpp);
301 (caddr_t)priv_addr->datap, dp->desc_data_sz,
381 dring_info_t *dp;
383 dp = lp->dringp;
384 if (dp == NULL) {
388 mutex_enter(&dp->dlock);
390 if (dp->priv_addr != NULL) {
396 paddr = (vsw_private_desc_t *)dp->priv_addr + i;
404 dp, i);
414 "at pos %d", dp, i);
421 kmem_free(dp->priv_addr,
428 if (dp->dring_handle != NULL) {
429 (void) ldc_mem_dring_unbind(dp->dring_handle);
430 (void) ldc_mem_dring_destroy(dp->dring_handle);
433 if (dp->data_addr != NULL) {
434 kmem_free(dp->data_addr, dp->data_sz);
437 mutex_exit(&dp->dlock);
438 mutex_destroy(&dp->dlock);
439 mutex_destroy(&dp->restart_lock);
440 kmem_free(dp, sizeof (dring_info_t));
452 dring_info_t *dp;
456 dp = vsw_map_dring_cmn(ldcp, dring_pkt);
457 if (dp == NULL) {
462 dp->end_idx = 0;
463 ldcp->lane_in.dringp = dp;
477 return (dp);
489 dring_info_t *dp;
491 if ((dp = lp->dringp) == NULL) {
508 if (dp->dring_handle != NULL) {
509 (void) ldc_mem_dring_unmap(dp->dring_handle);
511 kmem_free(dp, sizeof (dring_info_t));
787 dring_info_t *dp = NULL;
811 if ((dp = ldcp->lane_out.dringp) == NULL) {
833 if (vsw_dring_find_free_desc(dp, &priv_desc, &idx) != 0) {
835 "at 0x%llx", __func__, ldcp->ldc_id, dp);
876 mutex_enter(&dp->restart_lock);
877 if (dp->restart_reqd) {
878 dp->restart_reqd = B_FALSE;
880 mutex_exit(&dp->restart_lock);
892 dring_pkt.dring_ident = dp->ident;
899 mutex_enter(&dp->dlock);
900 if (dp->last_ack_recv == -1) {
904 (dp->last_ack_recv + 1) % dp->num_descriptors;
907 mutex_exit(&dp->dlock);
910 ldcp->ldc_id, dp, dring_pkt.dring_ident);
921 mutex_exit(&dp->restart_lock);
984 vsw_reclaim_dring(dring_info_t *dp, int start)
990 pub_addr = (vnet_public_desc_t *)dp->pub_addr;
991 priv_addr = (vsw_private_desc_t *)dp->priv_addr;
992 len = dp->num_descriptors;
998 pub_addr = (vnet_public_desc_t *)dp->pub_addr + i;
999 priv_addr = (vsw_private_desc_t *)dp->priv_addr + i;
1026 dring_info_t *dp = NULL;
1062 dp = ldcp->lane_in.dringp;
1063 if (dp->ident != dring_pkt->dring_ident) {
1076 len = dp->num_descriptors;
1106 pub_addr = (vnet_public_desc_t *)dp->pub_addr + pos;
1109 &desc, dp->dring_mtype, dp->dring_handle,
1207 dp->dring_mtype, dp->dring_handle, pos, pos,
1225 dp->dring_mtype, dp->dring_handle, pos, pos,
1278 dp->dring_mtype, dp->dring_handle, pos, pos,
1398 dp = ldcp->lane_out.dringp;
1399 if (dp->ident != dring_pkt->dring_ident) {
1407 len = dp->num_descriptors;
1410 mutex_enter(&dp->dlock);
1411 dp->last_ack_recv = end;
1413 mutex_exit(&dp->dlock);
1415 (void) vsw_reclaim_dring(dp, start);
1435 pub_addr = (vnet_public_desc_t *)dp->pub_addr + i;
1436 priv_addr = (vsw_private_desc_t *)dp->priv_addr + i;
1445 mutex_enter(&dp->restart_lock);
1468 dp->restart_reqd = B_TRUE;
1470 mutex_exit(&dp->restart_lock);