@@ -91,6 +91,7 @@ typedef struct {
9191    uint8_t          mpx_user_handle ;    /**< This MPX user defined handle */ 
9292    ns_ie_iovec_t    ie_vector_list [3 ];  /**< IE vectors: 1 for Header's, 1 for Payload and for MPX payload */ 
9393    mcps_data_req_ie_list_t  ie_ext ;
94+     mac_data_priority_t  priority ;
9495    ns_list_link_t   link ;               /**< List link entry */ 
9596    uint8_t          ie_buffer [];        /**< Trailing buffer data */ 
9697} llc_message_t ;
@@ -162,7 +163,7 @@ static llc_data_base_t *ws_llc_base_allocate(void);
162163static  void  ws_llc_mac_confirm_cb (const  mac_api_t  * api , const  mcps_data_conf_t  * data , const  mcps_data_conf_payload_t  * conf_data );
163164static  void  ws_llc_mac_indication_cb (const  mac_api_t  * api , const  mcps_data_ind_t  * data , const  mcps_data_ie_list_t  * ie_ext );
164165static  uint16_t  ws_mpx_header_size_get (llc_data_base_t  * base , uint16_t  user_id );
165- static  void  ws_llc_mpx_data_request (const  mpx_api_t  * api , const  struct  mcps_data_req_s  * data , uint16_t  user_id );
166+ static  void  ws_llc_mpx_data_request (const  mpx_api_t  * api , const  struct  mcps_data_req_s  * data , uint16_t  user_id ,  mac_data_priority_t   priority );
166167static  int8_t  ws_llc_mpx_data_cb_register (const  mpx_api_t  * api , mpx_data_confirm  * confirm_cb , mpx_data_indication  * indication_cb , uint16_t  user_id );
167168static  uint16_t  ws_llc_mpx_header_size_get (const  mpx_api_t  * api , uint16_t  user_id );
168169static  uint8_t  ws_llc_mpx_data_purge_request (const  mpx_api_t  * api , struct  mcps_purge_s  * purge , uint16_t  user_id );
@@ -290,6 +291,7 @@ static llc_message_t *llc_message_allocate(uint16_t ie_buffer_size, llc_data_bas
290291    }
291292    message -> ack_requested  =  false;
292293    message -> eapol_temporary  =  false;
294+     message -> priority  =  MAC_DATA_NORMAL_PRIORITY ;
293295    return  message ;
294296}
295297
@@ -975,7 +977,7 @@ static void ws_llc_lowpan_mpx_header_set(llc_message_t *message, uint16_t user_i
975977    message -> ie_vector_list [1 ].iovLen  =  ptr  -  (uint8_t  * )message -> ie_vector_list [1 ].ieBase ;
976978}
977979
978- static  void  ws_llc_lowpan_mpx_data_request (llc_data_base_t  * base , mpx_user_t  * user_cb , const  struct  mcps_data_req_s  * data )
980+ static  void  ws_llc_lowpan_mpx_data_request (llc_data_base_t  * base , mpx_user_t  * user_cb , const  struct  mcps_data_req_s  * data ,  mac_data_priority_t   priority )
979981{
980982    wh_ie_sub_list_t  ie_header_mask ;
981983    memset (& ie_header_mask , 0 , sizeof (wh_ie_sub_list_t ));
@@ -1026,6 +1028,7 @@ static void ws_llc_lowpan_mpx_data_request(llc_data_base_t *base, mpx_user_t *us
10261028    //Add To active list 
10271029    llc_message_id_allocate (message , base , true);
10281030    base -> llc_message_list_size ++ ;
1031+     message -> priority  =  priority ;
10291032    random_early_detetction_aq_calc (base -> interface_ptr -> llc_random_early_detection , base -> llc_message_list_size );
10301033    ns_list_add_to_end (& base -> llc_message_list , message );
10311034
@@ -1104,7 +1107,7 @@ static void ws_llc_lowpan_mpx_data_request(llc_data_base_t *base, mpx_user_t *us
11041107        message -> ie_ext .payloadIovLength  =  0 ; //Set Back 2 at response handler 
11051108    }
11061109
1107-     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , NULL );
1110+     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , NULL ,  message -> priority );
11081111}
11091112
11101113static  bool  ws_llc_eapol_temp_entry_set (llc_data_base_t  * base , const  uint8_t  * mac64 )
@@ -1159,11 +1162,11 @@ static void ws_llc_mpx_eapol_send(llc_data_base_t *base, llc_message_t *message)
11591162    message -> eapol_temporary  =  ws_llc_eapol_temp_entry_set (base , message -> dst_address );
11601163    ws_llc_eapol_data_req_init (& data_req , message );
11611164    base -> temp_entries -> active_eapol_session  =  true;
1162-     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , NULL );
1165+     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , NULL ,  message -> priority );
11631166}
11641167
11651168
1166- static  void  ws_llc_mpx_eapol_request (llc_data_base_t  * base , mpx_user_t  * user_cb , const  struct  mcps_data_req_s  * data )
1169+ static  void  ws_llc_mpx_eapol_request (llc_data_base_t  * base , mpx_user_t  * user_cb , const  struct  mcps_data_req_s  * data ,  mac_data_priority_t   priority )
11671170{
11681171    wh_ie_sub_list_t  ie_header_mask ;
11691172    memset (& ie_header_mask , 0 , sizeof (wh_ie_sub_list_t ));
@@ -1198,6 +1201,7 @@ static void ws_llc_mpx_eapol_request(llc_data_base_t *base, mpx_user_t *user_cb,
11981201        user_cb -> data_confirm (& base -> mpx_data_base .mpx_api , & data_conf );
11991202        return ;
12001203    }
1204+     message -> priority  =  priority ;
12011205    message -> mpx_user_handle  =  data -> msduHandle ;
12021206    message -> ack_requested  =  data -> TxAckReq ;
12031207
@@ -1257,7 +1261,7 @@ static void ws_llc_mpx_eapol_request(llc_data_base_t *base, mpx_user_t *user_cb,
12571261}
12581262
12591263
1260- static  void  ws_llc_mpx_data_request (const  mpx_api_t  * api , const  struct  mcps_data_req_s  * data , uint16_t  user_id )
1264+ static  void  ws_llc_mpx_data_request (const  mpx_api_t  * api , const  struct  mcps_data_req_s  * data , uint16_t  user_id ,  mac_data_priority_t   priority )
12611265{
12621266    llc_data_base_t  * base  =  ws_llc_discover_by_mpx (api );
12631267    if  (!base ) {
@@ -1280,9 +1284,9 @@ static void ws_llc_mpx_data_request(const mpx_api_t *api, const struct mcps_data
12801284    }
12811285
12821286    if  (user_id  ==  MPX_KEY_MANAGEMENT_ENC_USER_ID ) {
1283-         ws_llc_mpx_eapol_request (base , user_cb , data );
1287+         ws_llc_mpx_eapol_request (base , user_cb , data ,  priority );
12841288    } else  if  (user_id  ==  MPX_LOWPAN_ENC_USER_ID ) {
1285-         ws_llc_lowpan_mpx_data_request (base , user_cb , data );
1289+         ws_llc_lowpan_mpx_data_request (base , user_cb , data ,  priority );
12861290    }
12871291}
12881292
@@ -1800,7 +1804,7 @@ int8_t ws_llc_asynch_request(struct protocol_interface_info_entry *interface, as
18001804        }
18011805    }
18021806
1803-     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , & request -> channel_list );
1807+     base -> interface_ptr -> mac_api -> mcps_data_req_ext (base -> interface_ptr -> mac_api , & data_req , & message -> ie_ext , & request -> channel_list ,  message -> priority );
18041808
18051809    return  0 ;
18061810}
0 commit comments