3636#define POLL_TIMEOUT 0
3737#define MAX_NUM_TRIES 1000
3838
39- static bool xskdev_use_tx_lock = true;
40-
4139static TAILQ_HEAD (cne_xskdev_list , xskdev_info ) xskdev_list ;
4240static pthread_mutex_t xskdev_list_mutex ;
4341
@@ -59,6 +57,26 @@ xskdev_list_unlock(void)
5957 CNE_WARN ("failed: %s\n" , strerror (ret ));
6058}
6159
60+ static inline void
61+ xskdev_tx_lock (xskdev_info_t * xi )
62+ {
63+ int err ;
64+
65+ err = pthread_mutex_lock (& xi -> tx_lock );
66+ if (err )
67+ CNE_ERR ("Failed to lock xskdev TX path: %d: %s\n" , err , strerror (err ));
68+ }
69+
70+ static inline void
71+ xskdev_tx_unlock (xskdev_info_t * xi )
72+ {
73+ int err ;
74+
75+ err = pthread_mutex_unlock (& xi -> tx_lock );
76+ if (err )
77+ CNE_ERR ("Failed to unlock xskdev TX path: %d: %s\n" , err , strerror (err ));
78+ }
79+
6280/**
6381 * Preferred Busy Polling:
6482 *
@@ -515,24 +533,11 @@ xskdev_tx_burst_default(void *_xi, void **bufs, uint16_t nb_pkts)
515533 xskdev_info_t * xi = (xskdev_info_t * )_xi ;
516534 uint16_t ret ;
517535
518- if (xskdev_use_tx_lock ) {
519- int err ;
536+ xskdev_tx_lock (xi );
520537
521- err = pthread_mutex_lock (& xi -> tx_lock );
522- if (err ) {
523- CNE_ERR ("Failed to lock xskdev: %d: %s\n" , err , strerror (err ));
524- return 0 ;
525- }
538+ ret = xskdev_tx_burst_locked (xi , bufs , nb_pkts );
526539
527- ret = xskdev_tx_burst_locked (xi , bufs , nb_pkts );
528-
529- err = pthread_mutex_unlock (& xi -> tx_lock );
530- if (err )
531- CNE_ERR ("Failed to unlock xskdev: %d: %s\n" , err , strerror (err ));
532- } else {
533- /* Lock is disabled, call tx_burst function directly. */
534- ret = xskdev_tx_burst_locked (xi , bufs , nb_pkts );
535- }
540+ xskdev_tx_unlock (xi );
536541
537542 return ret ;
538543}
@@ -761,11 +766,9 @@ xskdev_socket_create(struct lport_cfg *c)
761766 CNE_DEBUG ("xi->xsk_map_fd = %d\n" , xi -> xsk_map_fd );
762767 }
763768
764- if (xskdev_use_tx_lock ) {
765- ret = cne_mutex_create (& xi -> tx_lock , 0 );
766- if (ret )
767- CNE_ERR_GOTO (err , "Failed to initialize xskdev tx lock: %s\n" , strerror (errno ));
768- }
769+ ret = cne_mutex_create (& xi -> tx_lock , 0 );
770+ if (ret )
771+ CNE_ERR_GOTO (err , "Failed to initialize xskdev tx lock: %s\n" , strerror (errno ));
769772
770773 xi -> if_index = if_index ;
771774
@@ -962,12 +965,10 @@ xskdev_socket_destroy(xskdev_info_t *xi)
962965 xi -> rxq .ux -> umem = NULL ;
963966 }
964967
965- if (xskdev_use_tx_lock ) {
966- int err = cne_mutex_destroy (& xi -> tx_lock );
968+ int err = cne_mutex_destroy (& xi -> tx_lock );
969+ if (err )
970+ CNE_ERR ("Failed to destroy xskdev tx lock: %s\n" , strerror (errno ));
967971
968- if (err )
969- CNE_ERR ("Failed to destroy xskdev tx lock: %s\n" , strerror (errno ));
970- }
971972 xskdev_list_lock ();
972973 if (xi -> next .tqe_prev )
973974 TAILQ_REMOVE (& xskdev_list , xi , next );
0 commit comments