[PATCH] wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware

Eugene Krasnikov k.eugene.e at gmail.com
Wed Oct 9 11:59:03 EDT 2013


Hi Joe,

Thanx for you comments. Would you mind if we fix those trivias  after
wcn36xx is merged?

On Tue, Oct 8, 2013 at 9:54 PM, Joe Perches <joe at perches.com> wrote:
> On Tue, 2013-10-08 at 21:25 +0100, Eugene Krasnikov wrote:
>> This is a mac80211 driver for Qualcomm WCN3660/WCN3680 devices. So
>> far WCN3660/WCN3680 is available only on MSM platform.
>
> some trivia:
>
>> diff --git a/drivers/net/wireless/ath/wcn36xx/debug.c b/drivers/net/wireless/ath/wcn36xx/debug.c
> []
>> +static ssize_t read_file_bool_bmps(struct file *file, char __user *user_buf,
>> +                                size_t count, loff_t *ppos)
>> +{
>> +     struct wcn36xx *wcn = file->private_data;
>> +     struct wcn36xx_vif *vif_priv = NULL;
>> +     struct ieee80211_vif *vif = NULL;
>> +     char buf[3];
>> +
>> +     list_for_each_entry(vif_priv, &wcn->vif_list, list) {
>> +                     vif = container_of((void *)vif_priv,
>> +                                struct ieee80211_vif,
>> +                                drv_priv);
>> +                     if (NL80211_IFTYPE_STATION == vif->type) {
>> +                             if (vif_priv->pw_state == WCN36XX_BMPS)
>> +                                     buf[0] = '1';
>> +                             else
>> +                                     buf[0] = '0';
>> +                             break;
>> +                     }
>
> please indent this properly.
>
>         list_for_each...(...) {
>                 statement...;
>                 statement...;
>         }
>
> []
>
>> +static ssize_t write_file_bool_bmps(struct file *file,
>> +                                 const char __user *user_buf,
>> +                                 size_t count, loff_t *ppos)
>> +{
>> +     struct wcn36xx *wcn = file->private_data;
>> +     struct wcn36xx_vif *vif_priv = NULL;
>> +     struct ieee80211_vif *vif = NULL;
>> +
>> +     char buf[32];
>> +     int buf_size;
>> +
>> +     buf_size = min(count, (sizeof(buf)-1));
>> +     if (copy_from_user(buf, user_buf, buf_size))
>> +             return -EFAULT;
>> +
>> +     switch (buf[0]) {
>> +     case 'y':
>> +     case 'Y':
>> +     case '1':
>> +             list_for_each_entry(vif_priv, &wcn->vif_list, list) {
>> +                     vif = container_of((void *)vif_priv,
>> +                                struct ieee80211_vif,
>> +                                drv_priv);
>> +                     if (NL80211_IFTYPE_STATION == vif->type) {
>
> trivia:
>
> Please use
>                         if (test == CONSTANT)
>
> Yes, I know the compiler complains if you
> mistakenly leave out one of the = this way.
>
>> +#define ADD_FILE(name, mode, fop, priv_data)         \
>> +     do {                                                    \
>> +             struct dentry *d;                               \
>> +             d = debugfs_create_file(__stringify(name),      \
>> +                                     mode, dfs->rootdir,     \
>> +                                     priv_data, fop);        \
>> +             dfs->file_##name.dentry = d;                    \
>> +             if (IS_ERR(d)) {                                \
>> +                     wcn36xx_warn("Create the debugfs entry failed");\
>
> missing "\n" newline
>
>> +                     dfs->file_##name.dentry = NULL;         \
> []
>
>> diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.c b/drivers/net/wireless/ath/wcn36xx/dxe.c
> []
>> +static int wcn36xx_dxe_init_descs(struct wcn36xx_dxe_ch *wcn_ch)
>> +{
>> +     struct wcn36xx_dxe_desc *cur_dxe = NULL;
>> +     struct wcn36xx_dxe_desc *prev_dxe = NULL;
>> +     struct wcn36xx_dxe_ctl *cur_ctl = NULL;
>> +     size_t size;
>> +     int i;
>> +
>> +     size = wcn_ch->desc_num * sizeof(struct wcn36xx_dxe_desc);
>> +     wcn_ch->cpu_addr = dma_alloc_coherent(NULL, size, &wcn_ch->dma_addr,
>> +                                           GFP_KERNEL);
>
>         dma_zalloc_coherent
>
> []
>> +     memset(wcn_ch->cpu_addr, 0, size);
>
> No longer required.
>
>> +             if (0 == i) {
>
> too many styles mixing i == 0 and 0 == i
>
> []
>
>> +int wcn36xx_dxe_allocate_mem_pools(struct wcn36xx *wcn)
>> +{
>> +     size_t s;
>
> mixing s and size above, please use one style/name.
>
>> +     void *cpu_addr;
>> +
>> +     /* Allocate BD headers for MGMT frames */
>> +
>> +     /* Where this come from ask QC */
>> +     wcn->mgmt_mem_pool.chunk_size = WCN36XX_BD_CHUNK_SIZE +
>> +             16 - (WCN36XX_BD_CHUNK_SIZE % 8);
>> +
>> +     s = wcn->mgmt_mem_pool.chunk_size * WCN36XX_DXE_CH_DESC_NUMB_TX_H;
>> +     cpu_addr = dma_alloc_coherent(NULL, s, &wcn->mgmt_mem_pool.phy_addr,
>> +                                   GFP_KERNEL);
>
>         same use of dma_zalloc_coherent(...)
>
>> +     if (!cpu_addr)
>> +             goto out_err;
>> +
>> +     wcn->mgmt_mem_pool.virt_addr = cpu_addr;
>> +     memset(cpu_addr, 0, s);
>
> Now unnecessary memset.
>
> too long, stopped reading.
>
>
>
>



-- 
Best regards,
Eugene



More information about the wcn36xx mailing list