From 7cf9ba6e31b2745d20ac6a658815922d0b5c973e Mon Sep 17 00:00:00 2001 From: Xianjun Jiao Date: Mon, 10 May 2021 14:04:34 +0200 Subject: [PATCH] Add dmesg printing option for broadcasting packet --- doc/README.md | 19 +++++++++++-------- driver/sdr.c | 6 +++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/README.md b/doc/README.md index 99758f2..88e0a38 100644 --- a/doc/README.md +++ b/doc/README.md @@ -270,18 +270,21 @@ Following figure shows the detailed configuration point in AD9361, driver (.c fi To debug/see the basic driver behaviour, you could turn on **dmesg** message printing by ``` -See all printing: +./sdrctl dev sdr0 set reg drv_tx 7 X +./sdrctl dev sdr0 set reg drv_rx 7 X + +The bit in value X controls what type of information will be printed to the dmesg (0--no print; 1--print). +bit0: error message +bit1: regular message for unicast packet (openwifi_tx/openwifi_tx_interrupt/openwifi_rx_interrupt) +bit2: regular message for broadcast packet + +For example, regular message for unicast packet and error message ./sdrctl dev sdr0 set reg drv_tx 7 3 ./sdrctl dev sdr0 set reg drv_rx 7 3 -See only error printing: + +For example, error message only: ./sdrctl dev sdr0 set reg drv_tx 7 1 ./sdrctl dev sdr0 set reg drv_rx 7 1 -See only regular printing: -./sdrctl dev sdr0 set reg drv_tx 7 2 -./sdrctl dev sdr0 set reg drv_rx 7 2 -Turn off printing: -./sdrctl dev sdr0 set reg drv_tx 7 0 -./sdrctl dev sdr0 set reg drv_rx 7 0 ``` and use **dmesg** command in Linux to see those messages. Regular printing includes tx/rx packet information when a packet is sent or received. Error printing has WARNING information if something abnormal happens. You can search "printk" in sdr.c to see all the printing points. diff --git a/driver/sdr.c b/driver/sdr.c index 7db91cc..c0ab427 100644 --- a/driver/sdr.c +++ b/driver/sdr.c @@ -406,7 +406,7 @@ static irqreturn_t openwifi_rx_interrupt(int irq, void *dev_id) if (len>=28) sc = hdr->seq_ctrl; - if ( addr1_low32!=0xffffffff || addr1_high16!=0xffff ) + if ( (addr1_low32!=0xffffffff || addr1_high16!=0xffff) || (priv->drv_rx_reg_val[DRV_RX_REG_IDX_PRINT_CFG]&4) ) printk("%s openwifi_rx_interrupt:%4dbytes ht%d %3dM FC%04x DI%04x addr1/2/3:%04x%08x/%04x%08x/%04x%08x SC%04x fcs%d buf_idx%d %ddBm\n", sdr_compatible_str, len, ht_flag, wifi_rate_table[rate_idx], hdr->frame_control, hdr->duration_id, reverse16(addr1_high16), reverse32(addr1_low32), reverse16(addr2_high16), reverse32(addr2_low32), reverse16(addr3_high16), reverse32(addr3_low32), @@ -534,7 +534,7 @@ static irqreturn_t openwifi_tx_interrupt(int irq, void *dev_id) if ( (tx_result_report&0x10) && ((priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG])&1) ) printk("%s openwifi_tx_interrupt: WARNING tx_result %02x prio%d wr%d rd%d\n", sdr_compatible_str, tx_result_report, prio, ring->bd_wr_idx, ring->bd_rd_idx); - if ( (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) && ((priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG])&2) ) + if ( ( (!(info->flags & IEEE80211_TX_CTL_NO_ACK))||(priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG]&4) ) && ((priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG])&2) ) printk("%s openwifi_tx_interrupt: tx_result %02x prio%d wr%d rd%d num_rand_slot %d cw %d \n", sdr_compatible_str, tx_result_report, prio, ring->bd_wr_idx, ring->bd_rd_idx, num_slot_random,cw); ieee80211_tx_status_irqsafe(dev, skb); @@ -799,7 +799,7 @@ static void openwifi_tx(struct ieee80211_hw *dev, sc = hdr->seq_ctrl; } - if ( (!addr_flag) && (priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG]&2) ) + if ( ( (!addr_flag)||(priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG]&4) ) && (priv->drv_tx_reg_val[DRV_TX_REG_IDX_PRINT_CFG]&2) ) printk("%s openwifi_tx: %4dbytes ht%d %3dM FC%04x DI%04x addr1/2/3:%04x%08x/%04x%08x/%04x%08x SC%04x flag%08x retr%d ack%d prio%d q%d wr%d rd%d\n", sdr_compatible_str, len_mac_pdu, (use_ht_rate == false ? 0 : 1), (use_ht_rate == false ? wifi_rate_all[rate_hw_value] : wifi_rate_all[rate_hw_value + 12]),frame_control,duration_id, reverse16(addr1_high16), reverse32(addr1_low32), reverse16(addr2_high16), reverse32(addr2_low32), reverse16(addr3_high16), reverse32(addr3_low32),