This patch is fine. Acked-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> But I have a some comments for later. On Wed, Feb 21, 2018 at 02:20:17AM -0800, Quytelda Kahja wrote: > @@ -509,8 +511,9 @@ static struct net_device_stats *gdm_lte_stats(struct net_device *dev) > > static int gdm_lte_event_send(struct net_device *dev, char *buf, int len) > { > - struct nic *nic = netdev_priv(dev); > + struct phy_dev *phy_dev = ((struct nic *)netdev_priv(dev))->phy_dev; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This is a bit unsightly. Better to make it two assignments: struct nic *nic = netdev_priv(dev); struct phy_dev *phy_dev = nic->phy_dev; > struct hci_packet *hci = (struct hci_packet *)buf; > + int length; > int idx; > int ret; > > @@ -518,11 +521,9 @@ static int gdm_lte_event_send(struct net_device *dev, char *buf, int len) > if (ret != 1) > return -EINVAL; > > - return netlink_send(lte_event.sock, idx, 0, buf, > - gdm_dev16_to_cpu( > - nic->phy_dev->get_endian( > - nic->phy_dev->priv_dev), hci->len) > - + HCI_HEADER_SIZE); > + length = gdm_dev16_to_cpu(phy_dev->get_endian(phy_dev->priv_dev), > + hci->len) + HCI_HEADER_SIZE; > + return netlink_send(lte_event.sock, idx, 0, buf, length); It would be nicer to store: struct gdm_endian *ed = phy_dev->get_endian(phy_dev->priv_dev); at the start of the function as well. Then this looks like: length = gdm_dev16_to_cpu(ed, hci->len) + HCI_HEADER_SIZE; netlink_send(lte_event.sock, idx, 0, buf, length); The endian information doesn't need to be a struct any more since we remove ed->host_ed in 77e8a50149a2 ("staging: gdm724x: Remove test for host endian"). We should change gdm_dev16_to_cpu() to just take dev_ed. > } > > static void gdm_lte_event_rcv(struct net_device *dev, u16 type, > @@ -731,15 +732,13 @@ static void gdm_lte_pdn_table(struct net_device *dev, char *buf, int len) > struct hci_pdn_table_ind *pdn_table = (struct hci_pdn_table_ind *)buf; > > if (pdn_table->activate) { > + struct gdm_endian *ed; > + > nic->pdn_table.activate = pdn_table->activate; > - nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu( > - nic->phy_dev->get_endian( > - nic->phy_dev->priv_dev), > - pdn_table->dft_eps_id); > - nic->pdn_table.nic_type = gdm_dev32_to_cpu( > - nic->phy_dev->get_endian( > - nic->phy_dev->priv_dev), > - pdn_table->nic_type); > + > + ed = nic->phy_dev->get_endian(nic->phy_dev->priv_dev); > + nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu(ed, pdn_table->dft_eps_id); > + nic->pdn_table.nic_type = gdm_dev32_to_cpu(ed, pdn_table->nic_type); > > netdev_info(dev, "pdn activated, nic_type=0x%x\n", > nic->pdn_table.nic_type); Use the same three initial variables here: struct nic *nic = netdev_priv(dev); struct phy_dev *phy_dev = nic->phy_dev; struct gdm_endian *ed = phy_dev->get_endian(nic->phy_dev->priv_dev); Then reverse the ->active test: if (!pdn_table->activate) { memset(&nic->pdn_table, 0, sizeof(struct pdn_table)); netdev_info(dev, "pdn deactivated\n"); return; } Then pull everything in a tab: nic->pdn_table.activate = pdn_table->activate; nic->pdn_table.dft_eps_id = gdm_dev32_to_cpu(ed, pdn_table->dft_eps_id); nic->pdn_table.nic_type = gdm_dev32_to_cpu(ed, pdn_table->nic_type); regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel