Print this page
5042 stop using deprecated atomic functions


1066                          * count a chained packet only once.
1067                          */
1068                         if (tx_msg_p->tx_message != NULL) {
1069                                 freemsg(tx_msg_p->tx_message);
1070                                 tx_msg_p->tx_message = NULL;
1071                         }
1072 
1073                         tx_msg_p->flags.dma_type = USE_NONE;
1074                         tx_rd_index = tx_ring_p->rd_index;
1075                         tx_rd_index = (tx_rd_index + 1) &
1076                             tx_ring_p->tx_wrap_mask;
1077                         tx_ring_p->rd_index = tx_rd_index;
1078                         tx_ring_p->descs_pending--;
1079                         tx_desc_p = &tx_desc_ring_vp[tx_rd_index];
1080                         tx_msg_p = &tx_msg_ring[tx_rd_index];
1081                 }
1082 
1083                 status = (nmblks <= ((int)tx_ring_p->tx_ring_size -
1084                     (int)tx_ring_p->descs_pending - TX_FULL_MARK));
1085                 if (status) {
1086                         (void) cas32((uint32_t *)&tx_ring_p->queueing, 1, 0);

1087                 }
1088         } else {
1089                 status = (nmblks <= ((int)tx_ring_p->tx_ring_size -
1090                     (int)tx_ring_p->descs_pending - TX_FULL_MARK));
1091         }
1092 
1093         NXGE_DEBUG_MSG((nxgep, TX_CTL,
1094             "<== nxge_txdma_reclaim status = 0x%08x", status));
1095 
1096         return (status);
1097 }
1098 
1099 /*
1100  * nxge_tx_intr
1101  *
1102  *      Process a TDC interrupt
1103  *
1104  * Arguments:
1105  *      arg1    A Logical Device state Vector (LSV) data structure.
1106  *      arg2    nxge_t *




1066                          * count a chained packet only once.
1067                          */
1068                         if (tx_msg_p->tx_message != NULL) {
1069                                 freemsg(tx_msg_p->tx_message);
1070                                 tx_msg_p->tx_message = NULL;
1071                         }
1072 
1073                         tx_msg_p->flags.dma_type = USE_NONE;
1074                         tx_rd_index = tx_ring_p->rd_index;
1075                         tx_rd_index = (tx_rd_index + 1) &
1076                             tx_ring_p->tx_wrap_mask;
1077                         tx_ring_p->rd_index = tx_rd_index;
1078                         tx_ring_p->descs_pending--;
1079                         tx_desc_p = &tx_desc_ring_vp[tx_rd_index];
1080                         tx_msg_p = &tx_msg_ring[tx_rd_index];
1081                 }
1082 
1083                 status = (nmblks <= ((int)tx_ring_p->tx_ring_size -
1084                     (int)tx_ring_p->descs_pending - TX_FULL_MARK));
1085                 if (status) {
1086                         (void) atomic_cas_32((uint32_t *)&tx_ring_p->queueing,
1087                             1, 0);
1088                 }
1089         } else {
1090                 status = (nmblks <= ((int)tx_ring_p->tx_ring_size -
1091                     (int)tx_ring_p->descs_pending - TX_FULL_MARK));
1092         }
1093 
1094         NXGE_DEBUG_MSG((nxgep, TX_CTL,
1095             "<== nxge_txdma_reclaim status = 0x%08x", status));
1096 
1097         return (status);
1098 }
1099 
1100 /*
1101  * nxge_tx_intr
1102  *
1103  *      Process a TDC interrupt
1104  *
1105  * Arguments:
1106  *      arg1    A Logical Device state Vector (LSV) data structure.
1107  *      arg2    nxge_t *