|
@@ -5093,29 +5093,49 @@ qdf_nbuf_update_radiotap_he_flags(struct mon_rx_status *rx_status,
|
|
|
|
|
|
rtap_len = qdf_align(rtap_len, 2);
|
|
rtap_len = qdf_align(rtap_len, 2);
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data1 |
|
|
|
|
- rx_status->he_data1, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ if (!rx_user_status) {
|
|
|
|
+ put_unaligned_le16(rx_status->he_data1, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data2 |
|
|
|
|
- rx_status->he_data2, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ put_unaligned_le16(rx_status->he_data2, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data3 |
|
|
|
|
- rx_status->he_data3, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ put_unaligned_le16(rx_status->he_data3, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data4 |
|
|
|
|
- rx_status->he_data4, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ put_unaligned_le16(rx_status->he_data4, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data5 |
|
|
|
|
- rx_status->he_data5, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ put_unaligned_le16(rx_status->he_data5, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
|
|
- put_unaligned_le16(rx_user_status->he_data6 |
|
|
|
|
- rx_status->he_data6, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 2;
|
|
|
|
|
|
+ put_unaligned_le16(rx_status->he_data6, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+ } else {
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data1 |
|
|
|
|
+ rx_status->he_data1, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data2 |
|
|
|
|
+ rx_status->he_data2, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data3 |
|
|
|
|
+ rx_status->he_data3, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data4 |
|
|
|
|
+ rx_status->he_data4, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data5 |
|
|
|
|
+ rx_status->he_data5, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le16(rx_user_status->he_data6 |
|
|
|
|
+ rx_status->he_data6, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 2;
|
|
|
|
+ }
|
|
|
|
|
|
return rtap_len;
|
|
return rtap_len;
|
|
}
|
|
}
|
|
@@ -5306,17 +5326,31 @@ qdf_nbuf_update_radiotap_eht_flags(struct mon_rx_status *rx_status,
|
|
*/
|
|
*/
|
|
rtap_len = qdf_align(rtap_len, 4);
|
|
rtap_len = qdf_align(rtap_len, 4);
|
|
|
|
|
|
- put_unaligned_le32(rx_status->eht_known | rx_user_status->eht_known,
|
|
|
|
- &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 4;
|
|
|
|
|
|
+ if (!rx_user_status) {
|
|
|
|
+ put_unaligned_le32(rx_status->eht_known, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
|
|
- put_unaligned_le32(rx_status->eht_data[0] | rx_user_status->eht_data[0],
|
|
|
|
- &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 4;
|
|
|
|
|
|
+ put_unaligned_le32(rx_status->eht_data[0], &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
|
|
- put_unaligned_le32(rx_status->eht_data[1] | rx_user_status->eht_data[1],
|
|
|
|
- &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 4;
|
|
|
|
|
|
+ put_unaligned_le32(rx_status->eht_data[1], &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
+ } else {
|
|
|
|
+ put_unaligned_le32(rx_status->eht_known |
|
|
|
|
+ rx_user_status->eht_known,
|
|
|
|
+ &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le32(rx_status->eht_data[0] |
|
|
|
|
+ rx_user_status->eht_data[0],
|
|
|
|
+ &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
+
|
|
|
|
+ put_unaligned_le32(rx_status->eht_data[1] |
|
|
|
|
+ rx_user_status->eht_data[1],
|
|
|
|
+ &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
+ }
|
|
|
|
|
|
put_unaligned_le32(rx_status->eht_data[2], &rtap_buf[rtap_len]);
|
|
put_unaligned_le32(rx_status->eht_data[2], &rtap_buf[rtap_len]);
|
|
rtap_len += 4;
|
|
rtap_len += 4;
|
|
@@ -5330,15 +5364,25 @@ qdf_nbuf_update_radiotap_eht_flags(struct mon_rx_status *rx_status,
|
|
put_unaligned_le32(rx_status->eht_data[5], &rtap_buf[rtap_len]);
|
|
put_unaligned_le32(rx_status->eht_data[5], &rtap_buf[rtap_len]);
|
|
rtap_len += 4;
|
|
rtap_len += 4;
|
|
|
|
|
|
- put_unaligned_le32(rx_user_status->eht_user_info, &rtap_buf[rtap_len]);
|
|
|
|
- rtap_len += 4;
|
|
|
|
|
|
+ if (!rx_user_status) {
|
|
|
|
+ qdf_rl_debug("EHT data %x %x %x %x %x %x %x",
|
|
|
|
+ rx_status->eht_known, rx_status->eht_data[0],
|
|
|
|
+ rx_status->eht_data[1], rx_status->eht_data[2],
|
|
|
|
+ rx_status->eht_data[3], rx_status->eht_data[4],
|
|
|
|
+ rx_status->eht_data[5]);
|
|
|
|
+ } else {
|
|
|
|
+ put_unaligned_le32(rx_user_status->eht_user_info, &rtap_buf[rtap_len]);
|
|
|
|
+ rtap_len += 4;
|
|
|
|
|
|
- qdf_rl_debug("EHT data %x %x %x %x %x %x %x",
|
|
|
|
- rx_status->eht_known | rx_user_status->eht_known,
|
|
|
|
- rx_status->eht_data[0] | rx_user_status->eht_data[0],
|
|
|
|
- rx_status->eht_data[1] | rx_user_status->eht_data[1],
|
|
|
|
- rx_status->eht_data[2], rx_status->eht_data[3],
|
|
|
|
- rx_status->eht_data[4], rx_status->eht_data[5]);
|
|
|
|
|
|
+ qdf_rl_debug("EHT data %x %x %x %x %x %x %x",
|
|
|
|
+ rx_status->eht_known | rx_user_status->eht_known,
|
|
|
|
+ rx_status->eht_data[0] |
|
|
|
|
+ rx_user_status->eht_data[0],
|
|
|
|
+ rx_status->eht_data[1] |
|
|
|
|
+ rx_user_status->eht_data[1],
|
|
|
|
+ rx_status->eht_data[2], rx_status->eht_data[3],
|
|
|
|
+ rx_status->eht_data[4], rx_status->eht_data[5]);
|
|
|
|
+ }
|
|
|
|
|
|
return rtap_len;
|
|
return rtap_len;
|
|
}
|
|
}
|
|
@@ -5713,8 +5757,10 @@ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status,
|
|
rtap_buf,
|
|
rtap_buf,
|
|
rtap_len);
|
|
rtap_len);
|
|
|
|
|
|
- if ((rtap_len - length) > RADIOTAP_EHT_FLAGS_LEN)
|
|
|
|
|
|
+ if ((rtap_len - length) > RADIOTAP_EHT_FLAGS_LEN) {
|
|
|
|
+ qdf_print("length is greater than RADIOTAP_EHT_FLAGS_LEN");
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
if (rx_status->eht_flags) {
|
|
if (rx_status->eht_flags) {
|
|
@@ -5725,8 +5771,10 @@ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status,
|
|
rtap_buf,
|
|
rtap_buf,
|
|
rtap_len);
|
|
rtap_len);
|
|
|
|
|
|
- if ((rtap_len - length) > RADIOTAP_EHT_FLAGS_LEN)
|
|
|
|
|
|
+ if ((rtap_len - length) > RADIOTAP_EHT_FLAGS_LEN) {
|
|
|
|
+ qdf_print("length is greater than RADIOTAP_EHT_FLAGS_LEN");
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
put_unaligned_le32(it_present_val, it_present);
|
|
put_unaligned_le32(it_present_val, it_present);
|